kesslerio avatar

Kesslerio Attio Mcp Server

kesslerio/attio-mcp-server

This connects Claude directly to your Attio CRM workspace through a universal tools architecture that handles companies, people, deals, tasks, lists, and notes. Instead of 40+ resource-specific tools, it consolidates operations into 19 universal actions with scoped write tools for high-frequency updates. You get full CRUD operations, batch processing, advanced filtering with AND/OR logic, and relationship navigation across all record types. Ships with Claude skills that teach your workspace's exact field names to prevent common errors. Best reached for when you want to query pipeline data, bulk update records, or automate CRM workflows through natural language without clicking through Attio's UI. ChatGPT integration works through a self-hosted Cloudflare Worker with OAuth.

GitHub stars
68
tools
34
auth
Required
transport
HTTP
last updated
Oct 7, 2025

Tools

34 tools

Public tool metadata for what this MCP can expose to an agent.

create-commentCreates 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 cont...6 params

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 cont...

Parameters* required
contentstring
The comment content as plain text. Email addresses in the text will be automatically converted to @mentions if they match workspace members. example: Great work on this deal! cc team@example.com
parent_comment_idstring
Reply to an existing comment thread. The ID of the parent comment. Cannot be a reply - must be a top-level comment. example: a19f759a-964c-4199-8c32-296d7cbf1ee8
parent_entry_idstring
Create comment on a list entry. The entry ID. Must be provided with parent_list. example: 1a942b81-3901-44d4-919f-afd025578d51
parent_liststring
Create comment on a list entry. The list the entry belongs to. Must be provided with parent_entry_id. format: slug or UUID example: "my_list", "bb9d278b-bfa9-4b5c-b67c-f2553ee2d461"
parent_objectstring
Create comment on a record. The object the record belongs to. Must be provided with parent_record_id. format: slug or UUID example: "people", "companies", "a55dd58d-d8ff-4ddf-84e0-a54a260edb93"
parent_record_idstring
Create comment on a record. The record ID. Must be provided with parent_object. example: 370b4e08-7084-47dc-b7ca-d41dda762da9
add-record-to-listAdd 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...5 params

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...

Parameters* required
allow_duplicatesboolean
Whether to allow adding a record that already exists in the list. Defaults to false, which prevents duplicate entries and returns an error with the existing entry ID instead.default: false
entry_valuesobject
Optional attribute values for the list entry. Use `api_slug` or `attribute_id` from `list-list-attribute-definitions` as the key. # VALUE FORMATS BY ATTRIBUTE TYPE: * text: String - "name": "Acme...
liststring
The ID or slug of the list to add the entry to. format: slug or UUID example: "sales_pipeline", "143bffde-8102-460a-8fe8-db2d9c107159"
parent_objectstring
The object type of the parent record being added to the list. format: slug or UUID example: "companies", "people", "a6bd01e1-550b-45ac-9b6f-62bf37af0a0b"
parent_record_idstring
The ID of the record to add to the list. example: d94d9fdb-f3b3-4320-a4cc-c4e9ce3ac1a9
create-noteCreates a new note attached to a record. Returns the created note's ID.5 params

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

Parameters* required
contentstring
The body of the note in markdown format. format: Markdown. Supports: headings (#, ##, ###), lists (-, *, 1.), bold (**), italic (*), strikethrough (~~), highlight (==), links ([text](url)). Code bl...
meeting_idstring
Optional ID to link to a specific meeting. example: 15f9db79-5b7e-4c09-92f5-f0807e2bea60
parent_objectstring
The object type for the parent record. format: slug or UUID example: "people", "companies", "6b363357-021a-4c92-9e24-47d6995d05c1"
parent_record_idstring
The record ID to attach the note to. example: 4231c20a-029c-448b-afe2-39802fede04a
titlestring
The title of the note. example: Q1 Planning Meeting Notes
create-recordCreate 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....2 params

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....

Parameters* required
objectstring
The ID or slug of the object to create the record in. format: slug or UUID example: "companies", "492c42ea-4def-4e51-9d1b-9ce24fc9e57f"
valuesobject
An object mapping attribute slugs or IDs to values. Use `api_slug` or `attribute_id` from `list-attribute-definitions` as the key. # VALUE FORMATS BY ATTRIBUTE TYPE: * text: String - "name": "Acm...
create-taskCreates 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....6 params

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....

Parameters* required
assignee_workspace_member_idstring
The workspace member ID to assign the task to. Only one assignee can be specified via MCP. example: 31abd9d6-667f-4240-b995-717be5ad126e
contentstring
The text content of the task. MUST be provided. example: Follow up on current software solutions
deadline_atstring
The deadline date for the task. format: ISO 8601 timestamp string. UTC timezone. example: 2026-02-15T00:00:00.000Z
is_completedboolean
Whether the task is completed. Defaults to false. example: falsedefault: false
linked_record_idstring
The record ID to link the task to. Must be provided with linked_record_object. example: 492c42ea-4def-4e51-9d1b-9ce24fc9e57f
linked_record_objectstring
The object type for the linked record. Must be provided with linked_record_id. format: slug or UUID example: "people", "companies"
delete-commentDeletes a comment. You can only delete comments that you created. Deleting a parent comment will also delete all of its replies.1 params

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

Parameters* required
comment_idstring
The ID of the comment to delete. example: 6a1fd7b2-1858-4959-8b93-50e4d6ce7fc2
get-call-recordingRetrieves the full details of a call recording by ID, including its status, timestamps, and complete transcript.2 params

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

Parameters* required
call_recording_idstring
The ID of the call recording to retrieve. example: 0e396018-1565-41fd-b4c8-2696b6bd187d
meeting_idstring
The ID of the meeting that the call recording is associated with. example: 4e377c73-1429-4171-bc94-cef68f9bdf07
get-email-contentRetrieves the full content/body of an email. Requires the mailbox_id and email_header_id, which can be obtained from email search results.2 params

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

Parameters* required
email_idstring
The ID of the email to retrieve content for. example: 7fc117fa-0e5e-4bd8-a3ef-c00e060d8342
mailbox_idstring
The ID of the mailbox containing the email. example: 532c82da-d3bc-4101-bb06-b8fd04a1326e
get-note-bodyGet the body of a note by its ID1 params

Get the body of a note by its ID

Parameters* required
note_idstring
The ID of the note to get the body of. example: 1f06d2aa-bc46-4415-a030-b5ec054bd1e3
get-records-by-idsRetrieve 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.2 params

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.

Parameters* required
objectstring
The ID or slug of the object for which to retrieve records. format: slug or UUID example: "companies", "492c42ea-4def-4e51-9d1b-9ce24fc9e57f"
record_idsarray
The IDs of the records to retrieve. Records that are not found will not be included in the response. example: ["ad27ac5f-95ab-4cc6-8880-e2655a1aae69", "d2e13173-1b77-48b3-ab1e-cf508f43c73e"]
list-attribute-definitionsList attribute definitions for a given object5 params

List attribute definitions for a given object

Parameters* required
include_archivedboolean
If true, the response will include archived attributes.default: false
limitnumber
Maximum number of results to return.default: 10
objectstring
The ID or slug of the object for which to retrieve attribute definitions. format: slug or UUID example: "companies", "492c42ea-4def-4e51-9d1b-9ce24fc9e57f"
offsetnumber
Number of results to skip for pagination.default: 0
queryvalue
Plain text search term for fuzzy matching attribute titles and descriptions. If not specified or null, returns all attributes.
list-comment-repliesLists 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.3 params

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.

Parameters* required
comment_idstring
The ID of the parent comment thread to list replies for. Must be a top-level comment, not a reply. example: 685a19b7-240b-44ec-8730-60e4f8731b20
limitnumber
Maximum number of replies to return.default: 20
offsetnumber
Number of results to skip for pagination.default: 0
list-commentsLists 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...6 params

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...

Parameters* required
limitnumber
Maximum number of top-level comments to return.default: 10
offsetnumber
Number of results to skip for pagination.default: 0
parent_entry_idstring
Filter to comments on a specific list entry. The entry ID. Must be provided with parent_list. example: 1dbf2c25-493b-4bfb-a1b8-6ed2e7b26ba9
parent_liststring
Filter to comments on a specific list entry. The list the entry belongs to. Must be provided with parent_entry_id. format: slug or UUID example: "my_list", "543803fd-7ef8-4e29-af8d-83351ef99880"
parent_objectstring
Filter to comments on a specific record. The object the record belongs to. Must be provided with parent_record_id. format: slug or UUID example: "people", "companies", "e6c0c8c9-488b-4aff-806f-d4d4...
parent_record_idstring
Filter to comments on a specific record. The record ID. Must be provided with parent_object. example: 97c10634-da0e-4a2f-9c2b-e2077382f7c6
list-list-attribute-definitionsList attribute definitions for a given list5 params

List attribute definitions for a given list

Parameters* required
include_archivedboolean
If true, the response will include archived attributes.default: false
limitnumber
Maximum number of results to return.default: 10
liststring
The ID or slug of the list for which to retrieve attribute definitions. format: slug or UUID example: "sales_pipeline", "be2b24ee-4a8e-41be-a8d8-0cbb7de1a984"
offsetnumber
Number of results to skip for pagination.default: 0
queryvalue
Plain text search term for fuzzy matching attribute titles and descriptions. If not specified or null, returns all attributes.
list-listsList 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.3 params

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.

Parameters* required
limitnumber
Maximum number of results to return.default: 10
offsetnumber
Number of results to skip for pagination.default: 0
querystring
Filter returned lists using fuzzy search against list name or API slug. If null or not provided, returns all lists. example: "sales pipeline"
list-records-in-listList 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 resul...5 params

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 resul...

Parameters* required
filtervalue
Filter criteria to apply. If null, returns all entries. Filter syntax supports three types: 1. Single condition: {"attribute":"name", "op":"eq", "value":"Acme Corp"} 2. AND group (all must match):...
limitnumber
Maximum number of entries to return (max 50).default: 10
liststring
The list to query entries from. format: slug or UUID example: "my-sales-pipeline", "492c42ea-4def-4e51-9d1b-9ce24fc9e57f"
offsetnumber
Number of entries to skip for pagination.default: 0
sortsarray
Sorting to apply (max 2). If empty, results are returned in a deterministic random order. Sortable types: text, number, currency, date, timestamp, checkbox, rating, domain, email_address, phone_num...
list-recordsList 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 attrib...5 params

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 attrib...

Parameters* required
filtervalue
Filter criteria to apply. If null, returns all records. Filter syntax supports three types: 1. Single condition: {"attribute":"name", "op":"eq", "value":"Acme Corp"} 2. AND group (all must match):...
limitnumber
Maximum number of records to return (max 50).default: 10
objectstring
The object to list records from. format: slug or UUID example: "companies", "people", "492c42ea-4def-4e51-9d1b-9ce24fc9e57f"
offsetnumber
Number of records to skip for pagination.default: 0
sortsarray
Sorting to apply (max 2). If empty, results are returned in a deterministic random order. Sortable types: text, number, currency, date, timestamp, checkbox, rating, domain, email_address, phone_num...
list-tasksLists 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.12 params

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.

Parameters* required
assignee_workspace_member_idvalue
Filter by assignee. Pass a workspace member ID to find tasks assigned to that member. Pass null to find unassigned tasks. Omit to return tasks regardless of assignee. example: b3fb52e7-4cec-4539-81...
created_at_gtestring
Filter to tasks created at or after this timestamp (inclusive). format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-20T00:00:00.000Z
created_at_ltestring
Filter to tasks created at or before this timestamp (inclusive). format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-20T00:00:00.000Z
deadline_at_gtestring
Filter to tasks with deadline at or after this timestamp (inclusive). format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-20T00:00:00.000Z
deadline_at_ltestring
Filter to tasks with deadline at or before this timestamp (inclusive). format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-20T00:00:00.000Z
is_completedboolean
Filter by completion status. true returns only completed tasks, false returns only incomplete tasks. Omit to return all tasks.
limitnumber
Maximum number of results to return.default: 10
linked_record_idstring
Filter to tasks linked to a specific record. The record ID. Must be provided with linked_record_object. example: 987f40c7-b789-4569-afea-e4dc42c139da
linked_record_objectstring
Filter to tasks linked to a specific record. The object the linked record belongs to. Must be provided with linked_record_id. format: slug or UUID example: "people", "companies", "7bfd5133-7c2f-4a2...
offsetnumber
Number of results to skip for pagination.default: 0
sort_bystring
Attribute to sort results by. Defaults to deadline_at.one of created_at · deadline_atdefault: deadline_at
sort_directionstring
The sort direction.one of asc · descdefault: asc
list-workspace-membersList 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.2 params

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.

Parameters* required
include_suspendedboolean
If true, response will include suspended members.default: false
querystring
Filter returned members using fuzzy search against member name, email address, and teams they are a member of. If null or not provided, returns all members. example: "John Smith"
list-workspace-teamsList 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}).1 params

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}).

Parameters* required
include_archivedboolean
If true, the response will include archived teams.default: false
run-basic-reportRun 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...4 params

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...

Parameters* required
filtervalue
Filter criteria to apply on the source dataset. If null, returns all records/entries from the source. Filters are applied before metric aggregation and grouping. Filter syntax supports three types:...
group_byarray
One or more values to group by (max 2). If omitted, the response is a single number. If one grouping is provided, response is an object keyed by that grouping value. If two groupings are provided,...
metricvalue
The metric to report on. Supports two types of metrics: "count": count records/entries (does not require attribute_path): {"type":"count"} "attribute": aggregate a numeric attribute (number/currenc...
sourcestring
The source dataset for the report. Must be a list or object. Use a list/object slug or UUID. The first segment in any metric attribute_path or group_by path must reference this same source. Use lis...
search-call-recordings-by-metadataSearches 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 orde...9 params

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 orde...

Parameters* required
limitnumber
default: 20
meeting_title_querystring
Search for call recordings by meeting title. Supports full-text search with query enhancement (synonyms, stemming) and substring matching for partial queries. example: quarterly review
offsetnumber
default: 0
related_record_idsarray
Filter to call recordings associated with specific records (e.g., companies or deals). Must be provided with related_record_object. example: ["27171aca-5c1b-4a4b-8b27-81c22ecbef5d"]
related_record_objectstring
The object type of the related records. Must be provided with related_record_ids. format: slug or UUID example: "companies", "811c4b3f-3ae1-430d-be8f-50ed52109d5c"
speaker_person_record_idsarray
Filter to call recordings where specific person records were speakers. All specified persons must be present on the call. example: ["dec6f1cc-1b11-449b-ad55-012aad6fb830"]
speaker_workspace_member_idsarray
Filter to call recordings where specific workspace members were speakers. All specified members must be present on the call. example: ["15fb44ef-ee36-4d6a-acce-bebd37598bf5"]
starts_afterstring
Filter to call recordings that started on or after this timestamp (inclusive). format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-20T00:00:00.000Z
starts_beforestring
Filter to call recordings that started on or before this timestamp (inclusive). format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-20T00:00:00.000Z
search-emails-by-metadataSearches 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 ar...6 params

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 ar...

Parameters* required
domainstring
Filter by domain the email came from or was sent to. ORed with participant_email_addresses filter if both are provided. example: example.com
limitnumber
Maximum number of results to return. example: 10default: 20
offsetnumber
Number of results to skip for pagination.default: 0
participant_email_addressesarray
Filter by email participants. Filters by participants of all roles (from, to, cc, bcc). ORed with domain filter if both are provided. format: Array of valid email addresses. example: ["john@example...
sent_at_gtstring
Filter to emails sent after this timestamp. format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-01T00:00:00.000Z
sent_at_ltstring
Filter to emails sent before this timestamp. format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-31T23:59:59.999Z
search-meetingsSearch 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...10 params

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...

Parameters* required
limitnumber
default: 20
offsetnumber
default: 0
participant_email_addressesarray
Filter to meetings where participants with matching email addresses are present. Uses normalized email addresses (case-insensitive). example: ["alice@example.com", "bob@example.com"]
participant_email_addresses_operatorstring
AND = all specified emails must be participants. OR = any of the specified emails is a participant. Only valid when participant_email_addresses is provided. example: "OR"one of AND · ORdefault: OR
related_record_idsarray
Filter to meetings linked to specific records. Must be provided with related_record_object. example: ["fcc72913-e72f-4971-8da8-c9b51a92f656"]
related_record_objectstring
The object type for related record filtering. Must be provided with related_record_ids. format: slug or UUID example: "companies", "deals", "98aa073e-f5cc-4262-8785-0194c1c3c5fb"
related_records_operatorstring
AND = meeting must be linked to ALL specified records. OR = meeting must be linked to ANY of the specified records. example: "AND"one of AND · ORdefault: AND
starts_afterstring
Filter to meetings starting after this timestamp (exclusive). format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-01T00:00:00.000Z
starts_beforestring
Filter to meetings starting before this timestamp (exclusive). format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-31T23:59:59.999Z
timezonestring
IANA timezone string for all-day meeting calculations. If an invalid timezone is provided, UTC will be used as a fallback. example: "America/New_York", "Europe/London"
search-notes-by-metadataSearches 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.8 params

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.

Parameters* required
created_at_gtstring
Use to filter to notes created after a specific point in timestamp. format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-20T00:00:00.000Z
created_at_ltstring
Use to filter to notes created before a specific point in timestamp. format: ISO 8601 timestamp string. UTC timezone. example: 2026-01-20T00:00:00.000Z
limitnumber
default: 10
meeting_idstring
Use to filter to notes associated with a specific meeting. example: d2e13173-1b77-48b3-ab1e-cf508f43c73e
offsetnumber
default: 0
parent_record_idstring
Use to filter to notes attached to a specific record. Must be provided with parent_record_object. example: "492c42ea-4def-4e51-9d1b-9ce24fc9e57f"
parent_record_objectstring
Use to filter to notes attached to a specific record. Must be provided with parent_record_id. format: slug or UUID example: "companies", "492c42ea-4def-4e51-9d1b-9ce24fc9e57f"
workspace_membership_idstring
Use to filter to notes associated with a specific workspace member. example: 31abd9d6-667f-4240-b995-717be5ad126e
search-recordsPerform 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.4 params

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.

Parameters* required
limitnumber
Maximum number of results to return.default: 10
objectstring
The ID or slug of the object to search records in. format: slug or UUID example: "companies", "492c42ea-4def-4e51-9d1b-9ce24fc9e57f"
offsetnumber
Number of results to skip for pagination.default: 0
querystring
Case-insensitive, full-text search query. Searches indexed attributes: domains, email addresses, phone numbers, name/title, description, social handles, and location. example: "Acme Corp"
semantic-search-call-recordingsSearches 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. Se...1 params

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. Se...

Parameters* required
querystring
The search query to find semantically similar call recordings. Searches both transcript content and call recording overviews (title and summary) using vector embeddings, finding calls where similar...
semantic-search-emailsSearches 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, subj...2 params

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, subj...

Parameters* required
include_emails_of_othersboolean
If true, search through emails of other workspace members as well. If false, only search through the user's own mailbox. example: falsedefault: false
querystring
The search query for semantic/content-based search. example: meeting notes from last quarter
semantic-search-notesSearches 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 metada...1 params

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 metada...

Parameters* required
querystring
The search query to find semantically similar notes. This searches the body content of notes using vector embeddings, finding notes where similar topics were discussed even if the exact keywords ar...
update-listUpdate a list's name or API slug3 params

Update a list's name or API slug

Parameters* required
api_slugstring
The new API slug for the list. Must be formatted in snake_case. example: "enterprise_sales"
liststring
The ID or slug of the list to update. format: slug or UUID example: "sales_pipeline", "1398efcd-9538-4b34-8f38-147a91b86af7"
namestring
The new human-readable name of the list. example: "Enterprise Sales"
update-recordUse this tool to update people, companies, and other records by `record_id`.4 params

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

Parameters* required
objectstring
The object type for the target record. format: slug or UUID example: "people", "companies", "996a8100-7763-4af6-97d5-8ec221e3c8eb"
patch_multiselect_valuesboolean
If `true`, values provided for multiselect attributes will be created and prepended to the list of values that already exist (if any). If `false`, values provied for multiselect attributes will be...default: true
record_idstring
A UUID of the record to update. example: 9625b54b-ad8d-4e2d-bf24-fac5b2f8eec0
valuesobject
An object mapping attribute slugs or IDs to values. Use `api_slug` or `attribute_id` from `list-attribute-definitions` as the key. # VALUE FORMATS BY ATTRIBUTE TYPE: * text: String - "name": "Acm...
update-taskUpdates 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...6 params

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...

Parameters* required
assignee_workspace_member_idstring
The workspace member ID to assign the task to. Only one assignee can be specified via MCP. example: 31abd9d6-667f-4240-b995-717be5ad126e
deadline_atstring
The deadline date for the task. Set to null to clear the deadline. format: ISO 8601 timestamp string. UTC timezone. example: 2026-02-15T00:00:00.000Z
is_completedboolean
Whether the task is completed. example: true
linked_record_idstring
The record ID to link the task to. Must be provided with linked_record_object. example: 492c42ea-4def-4e51-9d1b-9ce24fc9e57f
linked_record_objectstring
The object type for the linked record. Must be provided with linked_record_id. format: slug or UUID example: "people", "companies"
task_idstring
The ID of the task to update. example: 492c42ea-4def-4e51-9d1b-9ce24fc9e57f
upsert-recordUse 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 `mat...4 params

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 `mat...

Parameters* required
matching_attributestring
The ID or slug of the attribute to use to check if a record already exists. The attribute must be unique. The value for `matching_attribute` MUST be provided in the `values` payload. example: "emai...
objectstring
The object type for the target record. format: slug or UUID example: "people", "companies", "839d729c-e0b0-4b6f-86d9-d7d876b3df07"
patch_multiselect_valuesboolean
If `true`, values provided for multiselect attributes will be created and prepended to the list of values that already exist (if any). If `false`, values provied for multiselect attributes will be...default: true
valuesobject
An object mapping attribute slugs or IDs to values. Use `api_slug` or `attribute_id` from `list-attribute-definitions` as the key. # VALUE FORMATS BY ATTRIBUTE TYPE: * text: String - "name": "Acm...
whoamiReturns information about the current user's identity and workspace membership, including their email, name, workspace member ID, access level, and workspace name.

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

No parameter schema in public metadata yet.

Sponsors

Readme

MseeP.ai Security Assessment Badge

Attio MCP Server

License: Apache 2.0 npm version Node.js Version GitHub Release Ask DeepWiki npm provenance

A comprehensive Model Context Protocol (MCP) server for Attio, providing complete CRM surface coverage. This server enables AI assistants like Claude and ChatGPT to interact directly with your entire Attio workspace through natural language—manage Deals, Tasks, Lists, People, Companies, Records, and Notes without falling back to raw API calls.


View the full README on GitHub

Details

Repository
github.com/kesslerio/attio-mcp-server
Categories
Sales & Marketing, Finance & Commerce
Transport
HTTP
Auth
Required
Registry
MCP registry, active

More from kesslerio

Related Sales & Marketing MCP servers

View all
1markifact avatarMarkifact - Ads & Analyticsmarkifact/markifact-mcpAI marketing agent for Google Ads, Meta, GA4, TikTok, LinkedIn, Shopify, HubSpot and more.57stars
2explorium-ai avatarMcp Exploriumexplorium-ai/mcp-exploriumAccess live company and contact data from Explorium's AgentSource B2B platform.22stars
3d4umak avatarHeyLead — AI agent for LinkedIn outreachd4umak/linkedin-outreach-mcpAI agent for LinkedIn outreach: finds the right people, writes in your voice, follows up, replies.13stars
4zionhopkins avatarLaunch Engine — Business Execution OSzionhopkins/launch-engine-mcpAgentic pipeline — 39 tools from idea to revenue for solo founders.3stars
5outscraper avatarOutscraper MCP Serveroutscraper/outscraper-mcp-serverOutscraper MCP business discovery, Maps intelligence, enrichment, reviews, and contact data.3stars
6windsor-ai avatarWindsor.ai MCPwindsor-ai/windsor_mcpQuery and analyze marketing, sales, and business data from 325+ platforms via Windsor.ai.3stars