Attio CRM
Lets an agent find, read, create and update Attio records (people, companies, deals and custom objects), work with list entries such as pipelines, and log notes and tasks against records. Ideal for keeping the CRM current from emails, calls and meetings. Curated from Attio's official OpenAPI specification.
Connect this API to an AI agent Browse all specs
What you can do with Attio CRM via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /v2/self |
identifySelf | Check the token and see which workspace it belongs to |
| GET | /v2/objects |
listObjects | List the objects in the workspace (people, companies, deals, custom) |
| GET | /v2/{target}/{identifier}/attributes |
listAttributes | List the fields (attributes) of an object or list |
| POST | /v2/objects/records/search |
searchRecords | Search records by name, domain, email or phone across objects |
| POST | /v2/objects/{object}/records/query |
queryRecords | List records of an object with filters and sorting |
| GET | /v2/objects/{object}/records/{record_id} |
getRecord | Get one record with all its field values |
| PATCH | /v2/objects/{object}/records/{record_id} |
updateRecord | Update fields on an existing record |
| POST | /v2/objects/{object}/records |
createRecord | Create a new record (person, company, deal, ...) |
| GET | /v2/lists |
listLists | List all lists and pipelines in the workspace |
| POST | /v2/lists/{list}/entries/query |
queryListEntries | List the entries in a list or pipeline with filters |
| POST | /v2/lists/{list}/entries |
addRecordToList | Add a record to a list or pipeline |
| GET | /v2/notes |
listNotes | List notes, optionally for one record |
| POST | /v2/notes |
createNote | Add a note to a record |
| GET | /v2/tasks |
listTasks | List tasks, filtered by record, assignee or completion |
| POST | /v2/tasks |
createTask | Create a task, optionally linked to records and assigned |
| PATCH | /v2/tasks/{task_id} |
updateTask | Update a task's deadline, assignees or completion |
| GET | /v2/workspace_members |
listWorkspaceMembers | List workspace members (to assign tasks or owners) |
Authentication
bearerAuth
Bearer token — sent as Authorization: Bearer <token>
Attio access token sent as Authorization: Bearer <token>.
How to get a credential
- In Attio, open Workspace settings > Developers (workspace admin required).
- Click Create a new integration, name it (for example "VX Agents") and open its Scopes tab.
- Grant the scopes in the table below (Read for read-only agents, Read-write where the agent creates or updates data).
- Copy the Access token shown for the integration.
Permissions used
| Scope | Operations |
|---|---|
object_configuration:read |
listObjects, listAttributes, all record, note and task operations |
record_permission:read |
searchRecords, queryRecords, getRecord, listNotes, listTasks |
record_permission:read-write |
createRecord, updateRecord |
list_configuration:read |
listLists, queryListEntries, addRecordToList |
list_entry:read / list_entry:read-write |
queryListEntries / addRecordToList |
note:read / note:read-write |
listNotes / createNote |
task:read / task:read-write |
listTasks / createTask, updateTask |
user_management:read |
listWorkspaceMembers, listTasks, createTask, updateTask |
identifySelf needs no scope and is a quick way to test the token.
Common errors
- 401 Unauthorized: the token is missing, mistyped or the integration was deleted. Copy the token again from Developers settings.
- 403 Forbidden: the integration lacks a scope from the table above. Add it in the integration's Scopes tab (no new token needed).
- 400 Bad Request: an attribute slug or value format is wrong. Call listAttributes for the object to see valid slugs and types.
- 429 Too Many Requests: rate limit reached. Wait for the
Retry-Afterseconds and retry.
Store the token as a VX Agents credential (Bearer token) so it is never pasted into chat.
Usage guide
Setup
- Add your Attio integration access token as a Bearer credential. Call
identifySelfonce to confirm it works. - Object slugs are usually
people,companiesanddeals; custom objects have their own slug (seelistObjects). You can pin a list id (for example your sales pipeline) if the agent always works in one list.
Keep the CRM up to date
- Find the record:
searchRecordswith a name, email or domain inquery, the object slugs inobjects, andrequest_asset to{"type": "workspace"}. For exact filters usequeryRecordson one object. - Read it:
getRecordwith the object slug andrecord_id. - Before writing, call
listAttributes(targetobjects, identifier = object slug) to learn the attribute slugs and value types. - Create or update:
createRecord/updateRecordwith{"data": {"values": {"<attribute_slug>": <value>}}}. Examples:"name": [{"first_name": "Ada", "last_name": "Lovelace", "full_name": "Ada Lovelace"}]for people,"domains": ["acme.com"]for companies,"email_addresses": ["[email protected]"]. - Track it in a pipeline:
listLists, thenaddRecordToListwithparent_record_id,parent_objectand anyentry_values; review a pipeline withqueryListEntries. - Log context:
createNote(parent_object,parent_record_id,title,formatplaintextormarkdown,content). - Follow up:
listWorkspaceMembersto find an assignee, thencreateTask(content,formatplaintext,deadline_at,is_completedfalse,linked_records,assignees); close it withupdateTaskandis_completed: true.
Good to know
- Ask the user to confirm before creating or updating records, list entries, notes or tasks: these change shared customer data.
updateRecord(PATCH) appends to multi-select values instead of replacing them.- Times are ISO 8601 UTC, e.g.
2026-10-10T15:00:00.000Z. - Ids are UUIDs; record ids come from search/query results (
id.record_id). - Query endpoints page with
limit(default 500) andoffset;searchRecordsreturns at most 25 results. - Filters use attribute slugs, e.g.
{"filter": {"email_addresses": "[email protected]"}}or{"filter": {"name": {"$contains": "Acme"}}}.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Attio CRM” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.