MCP App Store
by KeenEthics

Overview

Attio connects ChatGPT directly to your CRM workspace, letting you manage customer relationships through natural conversation. Search and filter contacts, companies, and deals with flexible queries. Create, update, and organize records without switching between screens. Add notes, manage tasks, and track your sales pipeline—all through simple requests. Key capabilities: - Search records using powerful filters (find companies by size, industry, last contact date) - Create and update people, companies, and deal records - Manage notes attached to any record - Track and complete tasks - Navigate lists and organize your data Whether you're preparing for a meeting, updating deal stages, or researching prospects, Attio brings your CRM data into your conversation — no manual data entry required.

Tools

add-record-to-list

ChatGPT
Add a record to a list as a new list entry. IMPORTANT: Before calling this tool: 1) You should call list-list-attribute-definitions for the target list to understand which entry attributes are available. 2) You should call list-records or search-records to find the record you want to add to the list. 3) You may call list-lists to find available lists. By default, duplicate entries are prevented - if the record already exists in the list, the existing entry ID is returned. Set allow_duplicates to true to create multiple entries for the same record.

create-activity-record

ChatGPT
Create a new record for a given activity, for example one specific phone call. IMPORTANT: Before calling this tool, you should call list-activity-attribute-definitions for the target activity to understand which attributes are available, their types, whether they are required, and (for select/status fields) the valid options. Different attribute types require different value formats - see the 'values' parameter description for details.

create-comment

ChatGPT
Creates a new comment on a record, list entry, or as a reply to an existing comment thread. Provide exactly one of: (parent_object + parent_record_id) for records, (parent_list + parent_entry_id) for list entries, or (parent_comment_id) for replies. Email addresses in the content will be automatically converted to @mentions if they match workspace members.

create-list

ChatGPT
Creates a new list in Attio. Lists are used to group and track records of a single object type (e.g. a sales pipeline of companies). The list is created without any views. Records can be added to the list with the add-record-to-list tool, and attributes specific to the list can be inspected with the list-list-attribute-definitions tool. Permissions are controlled with workspace_access and workspace_member_access. The calling workspace member is automatically granted full access to the created list and does not need to be included in workspace_member_access. If they are included, their given level applies instead, so some workspace member must then keep full access to the list. Returns the created list's ID.

create-note

ChatGPT
Creates a new note attached to a record. Returns the created note's ID.

create-record

ChatGPT
Create a new record in a given object. IMPORTANT: Before calling this tool, you should call list-attribute-definitions for the target object to understand which attributes are available, their types, whether they are required, and (for select/status fields) the valid options. Different attribute types require different value formats - see the 'values' parameter description for details.

create-task

ChatGPT
Creates a new task in Attio. Tasks can optionally have a deadline, an assignee (workspace member), and be linked to a record (e.g., a person or company). To assign to a workspace member, provide their workspace_member_id. To link to a record, provide both the object type (e.g., "people", "companies") and the record_id together. Returns the created task's ID.

delete-comment

ChatGPT
Deletes a comment. You can only delete comments that you created. Deleting a parent comment will also delete all of its replies.

delete-task

ChatGPT
Deletes a task. Call list-tasks to find the ID of the task you want to delete.

get-call-recording

ChatGPT
Retrieves the full details of a call recording by ID, including its status, timestamps, and complete transcript.

get-email-content

ChatGPT
Retrieves the full content/body of an email. Requires the mailbox_id and email_header_id, which can be obtained from email search results.

get-note-body

ChatGPT
Get the body of a note by its ID

get-records-by-ids

ChatGPT
Retrieve a given set of records by their IDs for a given object. Returns an array of records with their attribute values. If a record is not found, it will not be included in the response.

list-activities

ChatGPT
List all activities in the Attio workspace. Activities model things that happen over time, such as phone calls or meetings, and each one holds activity records. Returns activity metadata including ID, API slug, singular and plural nouns, and the schemas the activity extends. Use the query parameter to filter by name or slug.

list-activity-attribute-definitions

ChatGPT
List attribute definitions for a given activity

list-activity-records

ChatGPT
List records for a given activity, such as phone calls or meetings, with optional filtering and sorting. Returns paginated results. Use this tool to retrieve activity records that match specific criteria. You can filter on attributes using comparison operators, combine filters with AND/OR logic, and sort results by attribute values. Before calling this tool, ensure you know the attribute slugs or IDs for any filters or sorts you want to apply. Use the list-activity-attribute-definitions tool to discover available attributes for an activity.

list-attribute-definitions

ChatGPT
List attribute definitions for a given object

list-comment-replies

ChatGPT
Lists replies to a comment. Provide the comment_id of a top-level comment to fetch its replies. Cannot be used with reply comments - only top-level comments that were created on records or list entries. All replies in a thread use the same parent comment ID.

list-comments

ChatGPT
Lists comments on a record or list entry. Returns paginated top-level comments with up to 5 replies each. If a thread has more replies, use "list-comment-replies" to fetch additional replies. Provide either (parent_object and parent_record_id) to list comments on a record, or (parent_list and parent_entry_id) to list comments on a list entry.

list-list-attribute-definitions

ChatGPT
List attribute definitions for a given list

list-lists

ChatGPT
List all lists in the Attio workspace. Returns list metadata including ID, name, API slug, and parent object types. Use the query parameter to filter by name or slug.

list-objects

ChatGPT
List all objects in the Attio workspace. Objects are the types of record the workspace stores, such as companies, people and deals. Returns object metadata including ID, API slug, singular and plural nouns, and whether the object is a standard Attio object. Use the query parameter to filter by name or slug.

list-records

ChatGPT
List records in a given object with optional filtering and sorting. Returns paginated results. Use this tool to retrieve records that match specific criteria. You can filter on attributes using comparison operators, combine filters with AND/OR logic, and sort results by attribute values. Before calling this tool, ensure you know the attribute slugs or IDs for any filters or sorts you want to apply. Use the list-attribute-definitions tool to discover available attributes for an object.

list-records-in-list

ChatGPT
List entries in a given list with optional filtering and sorting. Returns paginated results. Use this tool to retrieve entries within a list that match specific criteria. You can filter on attributes using comparison operators, combine filters with AND/OR logic, and sort results by attribute values. Each entry includes the parent record it belongs to and all entry-level attributes.

list-tasks

ChatGPT
Lists tasks in the workspace with optional filters. Returns paginated results with task content, completion status, assignees, linked records, and deadlines. Use to find tasks by assignee, completion status, linked record, or date ranges.

list-workspace-members

ChatGPT
List members in the Attio workspace. Returns a list of matching members with their ID, email address, name, access level, and team memberships. Use the query parameter to filter by name, email, or team.

list-workspace-teams

ChatGPT
List teams in the workspace. Teams are groups of workspace members used primarily for permission management. Returns an array of teams, each with: workspace_team_id, name, description, is_archived, created_at, and members (array of {name, email}).

merge-records

ChatGPT
Merges two records of the same object into one. Where both records have a value for the same attribute, the primary record's value takes precedence. Merging produces a NEW record, so new_record_id will match neither of the records you supplied. Both original records are marked as merged and can no longer be read or written. Large merges are applied in the background. merge_status: in_progress means the merge has been committed but reading the new merged record will fail until it finishes; do not retry the merge, wait a few seconds and then read the record. merge_status: completed means the new merged record is readable immediately.

query-particle-sql

ChatGPT
Execute a read-only SQL query against the workspace's object, list, and activity data using PostgreSQL syntax. It is faster and more efficient to use this tool for complex queries than to retrieve large amounts of data and process it in-memory. Where useful, select record_id or entry_id to support rendering rich references. Use this tool to: - Query answers to questions that require complex filtering, sorting, or aggregations that are challenging to achieve with the other tools. - Answer questions that require combining data from multiple objects. - Answer analytical or aggregate questions (counts, groupings, joins across objects) that cannot be expressed with the simpler list/search tools. <schema> Tables are organized into schemas. Column names correspond to attribute slugs. - objects (default schema): one table per object, named by object slug (e.g. companies or objects.companies). Has a record_id column that can be used to join back to the original record entity_instance_id in Attio if needed. - lists: lists.<slug> (e.g. lists.sales_pipeline). Has an entry_id column that identifies the list entry, and parent_record (entity-reference) pointing at the record the entry belongs to. - activities: activities.<slug> (e.g. activities.phone_calls). Interface tables (called "schemas" in the product) span every activity implementing them: activities.activities (title, timestamp, linked_records) covers all activities, and activities.interactions adds direction and participants. They expose only the interface's columns, plus self (entity-reference) identifying the underlying activity. - system: system.workspace_members has one row per workspace member with workspace_membership_id, name and email_address. Tables outside objects must always be schema-qualified. IMPORTANT: When selecting or filtering by attributes - you must not assume the slug based on the users query, instead you should retrieve available attributes first. Each column's SQL type is determined by the attribute type (left = attribute type, right = SQL type): - text -> TEXT - number -> DOUBLE PRECISION - checkbox -> BOOLEAN - currency -> NUMERIC - date -> DATE - domain -> TEXT - email-address -> TEXT - phone-number -> TEXT - rating -> BIGINT - timestamp -> TIMESTAMP - actor-reference -> composite (type TEXT, id TEXT) - entity-reference -> composite (entity_definition_id TEXT, entity_instance_id TEXT) - location -> composite (line_1 TEXT, line_2 TEXT, line_3 TEXT, line_4 TEXT, locality TEXT, region TEXT, postcode TEXT, country_code TEXT, latitude TEXT, longitude TEXT) - pipeline -> composite (id TEXT, title TEXT) - select -> composite (id TEXT, title TEXT) Composite columns must be accessed through a field, such as name.full_name or assignee.id; never compare an entire composite value. Multiselect attributes use PostgreSQL array notation TYPE[]. For example, a multiselect select attribute is (id TEXT, title TEXT)[]. Use UNNEST(column) to expand array values into rows. </schema> <syntax> The SQL dialect is PostgreSQL. Follow these rules: - Use single quotes for string literals, e.g. 'Acme' - Use standard PostgreSQL functions (COUNT(record_id) FILTER (WHERE ...), ARRAY_AGG, TO_CHAR, DATE_TRUNC, etc.) - Only SELECT statements are supported </syntax> <joins> Multi-select record reference attributes (e.g. associated_deals on people, or associated_people on deals) are stored as arrays of entity-reference structs, each of the shape (entity_definition_id TEXT, entity_instance_id TEXT). To join from a record to the records it references, you must unnest that array into one row per reference, then join on entity_instance_id. Unnesting a table's own column directly in the FROM clause is NOT supported. Do not write: FROM people, UNNEST(people.associated_deals) AS deal_ref The supported method to write this join is to unnest inside a CTE’s SELECT, then field-access and join in the outer query. <example prompt="List the deals associated with each person"> WITH person_deals AS ( SELECT record_id AS person_id, UNNEST(people.associated_deals) AS deal_ref FROM people ) SELECT person_de…

run-basic-report

ChatGPT
Run an aggregate report on records in an object or entries in a list. Use this tool when you need totals, averages, minimums, maximums, or grouped breakdowns. How to use: 1. Pick a source object/list via slug or UUID. 2. Choose a metric: - {"type":"count"} for counting records/entries. - {"type":"attribute", ...} for aggregating a numeric attribute. 3. Optionally add filter to narrow rows before aggregation. 4. Optionally add up to two group_by entries. The first is the primary grouping (outer key), the second is secondary (inner key). 5. If required, use the list attribute tools to discover valid attribute slugs for filter, metric paths, and grouping paths. Expected response shape: - group_by = []: plain number string, e.g. "42" or "1034.5" - one group_by: TOON key/value map, e.g. enterprise: 12 smb: 35 - two group_by: nested TOON map, e.g. emea: won: 4 open: 7 na: won: 3

search-call-recordings-by-metadata

ChatGPT
Searches all call recordings across the workspace by their metadata. Useful for finding call recordings based on who was on the call (workspace members or person records), related records (e.g., companies or deals), meeting title, and time range. Returns paginated results ordered by start time (most recent first). Uses limit/offset pagination. Returns call recording metadata only (IDs and timestamps). Use the "get-call-recording" tool to retrieve the full transcript of a call recording.

search-emails-by-metadata

ChatGPT
Searches emails visible to the user by their metadata. Useful for finding emails based on participants, domain, and time range. Returns paginated results ordered by sent time (most recent first). Uses limit/offset pagination. When both domain and participant_email_addresses are provided, they are ORed together (emails matching either filter are returned). Returns email metadata only (ID, subject, summary, snippet, sender, sent_at). Use the "get-email-content" tool to retrieve the full content of an email.

search-meetings

ChatGPT
Search across past and future meetings in the workspace. Returns paginated results with meeting metadata and associated call recording IDs. Useful for finding meetings based on participants, related records, and time range. Results are split into past_meetings (sorted by start time descending) and future_meetings (sorted by start time ascending). Returns call_recording_ids for past meetings so you can fetch full transcripts via the "get-call-recording" tool.

search-notes-by-metadata

ChatGPT
Searches for notes by their metadata. Useful for finding notes based on parent record, meeting, author (workspace member), and creation time. Returns paginated results ordered by creation date (most recent first). Uses limit/offset pagination.

search-records

ChatGPT
Perform a full-text search for records in a given object. Only searches indexed attributes: domains, email addresses, phone numbers, name/title, description, social handles, and location. Returns paginated results.

semantic-search-call-recordings

ChatGPT
Searches all call recordings across the workspace using semantic similarity. Returns call recordings that are most semantically similar to the query, even if the exact keywords are not present in the transcript. Useful for finding calls where a specific topic was discussed. Searches both transcript content and call recording overviews (title and summary) automatically. Returns matching transcript chunks and call recording overview information. Use the "get-call-recording" tool to retrieve the full transcript of a call recording.

semantic-search-emails

ChatGPT
Searches emails visible to the user using semantic similarity. Returns up to 20 emails that are most semantically similar to the query, even if exact keywords are not present. Useful for finding emails where a specific topic was discussed. Returns email metadata only (ID, subject, summary, snippet, sender, sent_at). Use the "get-email-content" tool to retrieve the full content of an email.

semantic-search-notes

ChatGPT
Searches all notes across the workspace using semantic similarity. Returns up to 20 notes that are most semantically similar to the query, even if the exact keywords are not present in the note. Useful for finding notes where a specific topic was discussed. Returns note metadata only (ID, title, timestamps, parent record). Use the "get-note-body" tool to retrieve the full content of a note.

update-activity-record

ChatGPT
Use this tool to update activity records, such as phone calls or meetings, by record_id.

update-list

ChatGPT
Update a list's name, API slug, or permissions.

update-list-entry-by-id

ChatGPT
Update attribute values on an existing list entry by its entry ID. Before calling this tool, you must: - Call list-records-in-list to find the entry you want to update. You may also: - Call list-list-attribute-definitions for the target list to understand which entry attributes are available. - Call list-lists to find available lists. Note: The parent record cannot be changed after creation.

update-list-entry-by-record-id

ChatGPT
Update attribute values on a list entry by finding it via its parent record ID. IMPORTANT: This tool will error if the record has zero or multiple entries in the specified list. Before calling this tool, you may: 1) Call list-lists to find available lists. 2) Call list-list-attribute-definitions for the target list to understand which entry attributes are available. 3) Call list-records or search-records to find the record ID.

update-note

ChatGPT
Appends or prepends plain-text content to an existing note and/or updates its title. At least one of operation or updated_title must be provided.

update-record

ChatGPT
Use this tool to update people, companies, and other records by record_id.

update-task

ChatGPT
Updates an existing task in Attio. You can update the deadline, completion status, assignee, and linked record. To update the assignee, provide their workspace_member_id. To update the linked record, provide both the object type (e.g., "people", "companies") and the record_id together. To clear the deadline, set deadline_at to null. Returns the updated task's ID.

upsert-activity-record

ChatGPT
Use this tool to create or update activity records, such as phone calls or meetings. A matching attribute is used to search for existing activity records. If a record is found with the same value for the matching_attribute, that record will be updated. If no record with the same value for the matching_attribute is found, a new record will be created instead. If the matching attribute is a multiselect attribute, new values will be added and existing values will not be deleted. The matching_attribute must be a unique attribute of the activity. Use the list-activity-attribute-definitions tool to find one. If you would like to avoid matching, please use the create-activity-record tool.

upsert-record

ChatGPT
Use this tool to create or update people, companies and other records. A matching attribute is used to search for existing records. If a record is found with the same value for the matching_attribute, that record will be updated. If no record with the same value for the matching_attribute is found, a new record will be created instead. If the matching attribute is a multiselect attribute, new values will be added and existing values will not be deleted. If you would like to avoid matching, please use the create-record tool.

whoami

ChatGPT
Returns information about the current user's identity and workspace membership, including their email, name, workspace member ID, access level, and workspace name.

create-note

Claude

create-record

Claude

create-task

Claude

get-call-recording

Claude

get-email-content

Claude

get-note-body

Claude

get-records-by-ids

Claude

list-attribute-definitions

Claude

list-records

Claude

list-tasks

Claude

list-workspace-members

Claude

list-workspace-teams

Claude

search-call-recordings-by-metadata

Claude

search-emails-by-metadata

Claude

search-meetings

Claude

search-notes-by-metadata

Claude

search-records

Claude

semantic-search-emails

Claude

semantic-search-notes

Claude

update-record

Claude

update-task

Claude

upsert-record

Claude

whoami

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

71

Tools

1

Prompts

ChatGPT, Claude

Platforms

Category

CRM Records

Works with

ChatGPT
Claude

Data refreshed daily