add-record-to-list
ChatGPTAdd 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
ChatGPTCreate 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-list
ChatGPTCreates 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
ChatGPTCreates a new note attached to a record. Returns the created note's ID.
create-record
ChatGPTCreate 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
ChatGPTCreates 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-task
ChatGPTDeletes a task. Call list-tasks to find the ID of the task you want to delete.
get-call-recording
ChatGPTRetrieves the full details of a call recording by ID, including its status, timestamps, and complete transcript.
get-email-content
ChatGPTRetrieves 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
ChatGPTGet the body of a note by its ID
get-records-by-ids
ChatGPTRetrieve 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
ChatGPTList 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
ChatGPTList attribute definitions for a given activity
list-activity-records
ChatGPTList 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
ChatGPTList attribute definitions for a given object
list-list-attribute-definitions
ChatGPTList attribute definitions for a given list
list-lists
ChatGPTList 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
ChatGPTList 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
ChatGPTList 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
ChatGPTList 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
ChatGPTLists 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
ChatGPTList 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
ChatGPTList 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
ChatGPTMerges 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
ChatGPTExecute 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
ChatGPTRun 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
ChatGPTSearches 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
ChatGPTSearches 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
ChatGPTSearch 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
ChatGPTSearches 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
ChatGPTPerform 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
ChatGPTSearches 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
ChatGPTSearches 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
ChatGPTSearches 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
ChatGPTUse this tool to update activity records, such as phone calls or meetings, by record_id.
update-list
ChatGPTUpdate a list's name, API slug, or permissions.
update-list-entry-by-id
ChatGPTUpdate 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
ChatGPTUpdate 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
ChatGPTAppends 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
ChatGPTUse this tool to update people, companies, and other records by record_id.
update-task
ChatGPTUpdates 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
ChatGPTUse 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
ChatGPTUse 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
ChatGPTReturns information about the current user's identity and workspace membership, including their email, name, workspace member ID, access level, and workspace name.
create-note
Claudecreate-record
Claudecreate-task
Claudeget-call-recording
Claudeget-email-content
Claudeget-note-body
Claudeget-records-by-ids
Claudelist-attribute-definitions
Claudelist-records
Claudelist-tasks
Claudelist-workspace-members
Claudelist-workspace-teams
Claudesearch-call-recordings-by-metadata
Claudesearch-emails-by-metadata
Claudesearch-meetings
Claudesearch-notes-by-metadata
Claudesearch-records
Claudesemantic-search-emails
Claudesemantic-search-notes
Claudeupdate-record
Claudeupdate-task
Claudeupsert-record
Claudewhoami
Claude