Attio integration for AI agents.
Attio integration for AI agents with secure authentication and server-side credential injection. Open Connector runs the OAuth, seals the token in an encrypted vault, and serves Attio tools to your agent over MCP or a typed API — credentials injected server-side, every call audited, nothing leaving your infrastructure. Open source (AGPL-3.0) and self-hostable.
Real Attio actions, managed and audited.
Your user connects Attio once; your agent can then use the Attio API to manage CRM objects, records, lists, entries, notes, tasks, comments, files, webhooks, and workspace metadata — scoped to the OAuth permissions you grant and the tool allowlist you configure. Every action is least-privilege and written to a tamper-evident audit trail.
- 1
Your user grants Attio access once (OAuth) — the token lands in the vault.
- 2
Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.
- 3
Every routed call appends a hash-chained audit record — nothing leaves your infra.
Supported Attio tools.
75 tools are generated from the published Attio catalog. Descriptions are plain text; each action remains subject to its configured authentication and tool allowlist.
Showing 75 tools. All published catalog entries are included in this page's server-rendered HTML.
- Delete a comment
- Deletes a comment by ID. If deleting a comment at the head of a thread, all messages in the thread are also deleted. Required scopes: `comment:read-write`.
- Comments
- Delete a file
- Delete a single file by ID. Deleting a folder will delete all of its descendants. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `file:read-write`, `object_configuration:read`, `record_permission:read`.
- Files
- Delete a list entry
- Deletes a single list entry by its `entry_id`. Required scopes: `list_entry:read-write`, `list_configuration:read`.
- Entries
- Delete call recording
- Deletes the specified call recording. This will remove the call recording and all associated data. This endpoint is in alpha and may be subject to breaking changes as we gather feedback. Required scopes: `meeting:read`, `call_recording:read-write`.
- Call recordings
- Delete a note
- Delete a single note by ID. Required scopes: `note:read-write`.
- Notes
- Delete a record
- Deletes a single record (e.g. a company or person) by ID. Required scopes: `object_configuration:read`, `record_permission:read-write`.
- Records
- Delete a task
- Delete a task by ID. Required scopes: `task:read-write`.
- Tasks
- Delete a webhook
- Delete a webhook by ID. Required scopes: `webhook:read-write`.
- Webhooks
- Get a comment
- Get a single comment by ID. To view comments on records, you will need the `object_configuration:read` and `record_permission:read` scopes. To view comments on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes. Required scopes: `comment:read`.
- Comments
- List files
- Lists internal files, externally connected files and folders for a specific record. Use the `object` and `record_id` query parameters to specify the record. Optional query parameters may be provided to filter results by storage provider or parent folder. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `object_configuration:read`, `record_permission:read`, `file:read`.
- Files
- Get a file
- Get a single file entry by ID. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `file:read`, `object_configuration:read`, `record_permission:read`.
- Files
- Download a file
- Downloads a file by redirecting to a signed URL. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `object_configuration:read`, `record_permission:read`, `file:read`.
- Files
- List all lists
- List all lists that your access token has access to. lists are returned in the order that they are sorted in the sidebar. Required scopes: `list_configuration:read`.
- Lists
- Get a list
- Gets a single list in your workspace that your access token has access to. Required scopes: `list_configuration:read`.
- Lists
- Get a list entry
- Gets a single list entry by its `entry_id`. Required scopes: `list_entry:read`, `list_configuration:read`.
- Entries
- List attribute values for a list entry
- Gets all values for a given attribute on a list entry. This endpoint has the ability to return all historic values using the `show_historic` query param. Historic values are sorted from oldest to newest (by `active_from`). Required scopes: `list_entry:read`, `list_configuration:read`.
- Entries
- List views for list
- Lists saved views for a list. Results are ordered by view ID (`id.view_id` ascending). Required scopes: `list_configuration:read`.
- Lists
- List meetings
- Lists all meetings in the workspace using a deterministic sort order. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `meeting:read`, `record_permission:read`.
- Meetings
- Get a meeting
- Get a single meeting by ID. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `meeting:read`, `record_permission:read`.
- Meetings
- List call recordings
- List all call recordings for a meeting. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `meeting:read`, `call_recording:read`.
- Call recordings
- Get call recording
- Get a single call recording by ID. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `meeting:read`, `call_recording:read`.
- Call recordings
- Get call transcript
- Get the transcript for a call recording. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `meeting:read`, `call_recording:read`.
- Transcripts
- List notes
- List notes for all records or for a specific record. Required scopes: `note:read`, `object_configuration:read`, `record_permission:read`.
- Notes
- Get a note
- Get a single note by ID. Required scopes: `note:read`, `object_configuration:read`, `record_permission:read`.
- Notes
- List objects
- Lists all system-defined and user-defined objects in your workspace. Required scopes: `object_configuration:read`.
- Objects
- Get an object
- Gets a single object by its `object_id` or slug. Required scopes: `object_configuration:read`.
- Objects
- Get a record
- Gets a single person, company or other record by its `record_id`. Required scopes: `record_permission:read`, `object_configuration:read`.
- Records
- List record attribute values
- Gets all values for a given attribute on a record. Historic values can be queried using the `show_historic` query param. Historic values cannot be queried on COMINT (Communication Intelligence) or enriched attributes and the endpoint will return a 400 error if this is attempted. Historic values are sorted from oldest to newest (by `active_from`). Some attributes are subject to billing status and will return an empty array of values if theworkspace being queried does not have the required billing flag enabled. Required scopes: `record_permission:read`, `object_configuration:read`.
- Records
- List record entries
- List all entries, across all lists, for which this record is the parent. Required scopes: `record_permission:read`, `object_configuration:read`, `list_entry:read`.
- Records
- List views for object
- Lists saved views for an object. Results are ordered by view ID (`id.view_id` ascending). Required scopes: `object_configuration:read`.
- Objects
- Identify
- Identify the current access token, the workspace it is linked to, and any permissions it has.
- Meta
- List attributes
- Lists all attributes defined on a specific object or list. Attributes are returned in the order that they are sorted by in the UI. When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.
- Attributes
- Get an attribute
- Gets information about a single attribute on either an object or a list. When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.
- Attributes
- List select options
- Lists all select options for a particular attribute on either an object or a list. When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.
- Attributes
- List statuses
- Lists all statuses for a particular status attribute on either an object or a list. When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.
- Attributes
- List tasks
- List all tasks. Results are sorted by creation date, from oldest to newest. Required scopes: `task:read`, `object_configuration:read`, `record_permission:read`, `user_management:read`.
- Tasks
- Get a task
- Get a single task by ID. Required scopes: `task:read`, `object_configuration:read`, `record_permission:read`, `user_management:read`.
- Tasks
- List threads
- List threads of comments on a record or list entry. To view threads on records, you will need the `object_configuration:read` and `record_permission:read` scopes. To view threads on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes. Required scopes: `comment:read`.
- Threads
- Get a thread
- Get all comments in a thread. To view threads on records, you will need the `object_configuration:read` and `record_permission:read` scopes. To view threads on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes. Required scopes: `comment:read`.
- Threads
- List webhooks
- Get all of the webhooks in your workspace. Required scopes: `webhook:read`.
- Webhooks
- Get a webhook
- Get a single webhook. Required scopes: `webhook:read`.
- Webhooks
- List workspace members
- Lists all workspace members in the workspace. Required scopes: `user_management:read`.
- Workspace members
- Get a workspace member
- Gets a single workspace member by ID. Required scopes: `user_management:read`.
- Workspace members
- Update a list
- Updates an existing list. Permissions for the list are controlled with the `workspace_access` and `workspace_member_access` parameters. Please note that lists must have either `workspace_access` set to `"full-access"` or one or more element of `workspace_member_access` with a `"full-access"` level. It is also possible to receive a `403` billing error if your workspace is not on a plan that supports either advanced workspace or workspace member level access for lists. Changing the parent object of a list is not possible through the API as it can have unintended side-effects that should be considered carefully. If you wish to carry out a parent object change you should do so through the UI. Required scopes: `list_configuration:read-write`.
- Lists
- Update a list entry (append multiselect values)
- Use this endpoint to update list entries by `entry_id`. If the update payload includes multiselect attributes, the values supplied will be created and prepended to the list of values that already exist (if any). Use the `PUT` endpoint to overwrite or remove multiselect attribute values. Required scopes: `list_entry:read-write`, `list_configuration:read`.
- Entries
- Update an object
- Updates a single object. The object to be updated is identified by its `object_id`. Required scopes: `object_configuration:read-write`.
- Objects
- Update a record (append multiselect values)
- Use this endpoint to update people, companies, and other records by `record_id`. If the update payload includes multiselect attributes, the values supplied will be created and prepended to the list of values that already exist (if any). Use the `PUT` endpoint to overwrite or remove multiselect attribute values. Required scopes: `record_permission:read-write`, `object_configuration:read`.
- Records
- Update an attribute
- Updates a single attribute on a given object or list. When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.
- Attributes
- Update a select option
- Updates a select option on an attribute on either an object or a list. When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.
- Attributes
- Update a status
- Update a status on an status attribute on either an object or a list. When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.
- Attributes
- Update a task
- Updates an existing task by `task_id`. At present, only the `deadline_at`, `is_completed`, `linked_records`, and `assignees` fields can be updated. Required scopes: `task:read-write`, `object_configuration:read`, `record_permission:read`, `user_management:read`.
- Tasks
- Update a webhook
- Update a webhook and associated subscriptions. Required scopes: `webhook:read-write`.
- Webhooks
- Create a comment
- Creates a new comment related to an existing thread, record or entry. To create comments on records, you will need the `object_configuration:read` and `record_permission:read` scopes. To create comments on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes. Required scopes: `comment:read-write`.
- Comments
- Create a folder
- Creates a native folder entry or a connected file/folder entry on an object record. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `file:read-write`, `object_configuration:read`, `record_permission:read`.
- Files
- Upload a file
- Uploads a file to native Attio storage for a record. Send multipart/form-data with a single binary field named `file` together with the body fields `object`, `record_id`, and optional `parent_folder_id`. Maximum file size is 50 MB. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `file:read-write`, `object_configuration:read`, `record_permission:read`.
- Files
- Create a list
- Creates a new list. Once you have your list, add attributes to it using the [Create attribute](/rest-api/endpoint-reference/attributes/create-an-attribute) API, and add records to it using the [Add records to list](/rest-api/endpoint-reference/entries/create-an-entry-add-record-to-list) API. New lists must specify which records can be added with the `parent_object` parameter which accepts either an object slug or an object ID. Permissions for the list are controlled with the `workspace_access` and `workspace_member_access` parameters. Please note that new lists must have either `workspace_access` set to `"full-access"` or one or more element of `workspace_member_access` with a `"full-access"` level. It is also possible to receive a `403` billing error if your workspace is not on a plan that supports either advanced workspace or workspace member-level access for lists. Required scopes: `list_configuration:read-write`.
- Lists
- Create an entry (add record to list)
- Adds a record to a list as a new list entry. This endpoint will throw on conflicts of unique attributes. Multiple list entries are allowed for the same parent record Required scopes: `list_entry:read-write`, `list_configuration:read`.
- Entries
- List entries
- Lists entries in a given list, with the option to filter and sort results. Required scopes: `list_entry:read`, `list_configuration:read`.
- Entries
- Find or create a meeting
- Finds an existing meeting or creates a new one if it doesn't yet exist. [Please see here](/rest-api/guides/syncing-meetings) for a full guide on syncing meetings to Attio. This endpoint is in alpha and may be subject to breaking changes as we gather feedback. Required scopes: `meeting:read-write`, `record_permission:read`.
- Meetings
- Create call recording
- Create a call recording for a meeting. This endpoint is rate limited to 1 request per second. This endpoint is in alpha and may be subject to breaking changes as we gather feedback. Required scopes: `meeting:read`, `call_recording:read-write`.
- Call recordings
- Create a note
- Creates a new note for a given record. Required scopes: `note:read-write`, `object_configuration:read`, `record_permission:read`.
- Notes
- Create an object
- Creates a new custom object in your workspace. Required scopes: `object_configuration:read-write`.
- Objects
- Create a record
- Creates a new person, company or other record. This endpoint will throw on conflicts of unique attributes. If you would prefer to update records on conflicts, please use the [Upsert record endpoint](/rest-api/endpoint-reference/records/upsert-a-record) instead. Required scopes: `record_permission:read-write`, `object_configuration:read`.
- Records
- List records
- Lists people, company or other records, with the option to filter and sort results. Required scopes: `record_permission:read`, `object_configuration:read`.
- Records
- Search records
- The search records endpoint provides a convenient way to fuzzy search for records across one or more objects. The matching strategy employed in this endpoint follows the in-product strategy and will match names, domains, emails, phone numbers and social handles on people and companies, and labels on all other objects. Please note, results returned from this endpoint are eventually consistent. For results which are guaranteed to be up to date, please use the record query endpoint instead. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `record_permission:read`, `object_configuration:read`.
- Records
- Query SQL
- Query records and lists with SQL. This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users. Required scopes: `record_permission:read`, `object_configuration:read`.
- SQL
- Create an attribute
- Creates a new attribute on either an object or a list. For record-reference attributes, you can optionally create a bidirectional relationship by providing a `relationship` object. This will create two entangled attributes: one on the specified object and a reverse attribute on the related object. To create an attribute on an object, you must also have the `object_configuration:read-write` scope. To create an attribute on a list, you must also have the `list_configuration:read-write` scope.
- Attributes
- Create a select option
- Adds a select option to a select attribute on an object or a list. When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.
- Attributes
- Create a status
- Add a new status to a status attribute on either an object or a list. When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.
- Attributes
- Create a task
- Creates a new task. At present, tasks can only be created from plaintext without record reference formatting. Required scopes: `task:read-write`, `object_configuration:read`, `record_permission:read`, `user_management:read`.
- Tasks
- Create a webhook
- Create a webhook and associated subscriptions. Required scopes: `webhook:read-write`.
- Webhooks
- Upsert a list entry by parent
- Use this endpoint to create or update a list entry for a given parent record. If an entry with the specified parent record is found, that entry will be updated. If no such entry is found, a new entry will be created instead. If there are multiple entries with the same parent record, this endpoint with return the "MULTIPLE_MATCH_RESULTS" error. When writing to multi-select attributes, all values will be either created or deleted as necessary to match the list of values supplied in the request body. Required scopes: `list_entry:read-write`, `list_configuration:read`.
- Entries
- Update a list entry (overwrite multiselect values)
- Use this endpoint to update list entries by `entry_id`. If the update payload includes multiselect attributes, the values supplied will overwrite/remove the list of values that already exist (if any). Use the `PATCH` endpoint to add multiselect attribute values without removing those value that already exist. Required scopes: `list_entry:read-write`, `list_configuration:read`.
- Entries
- Upsert a record
- Use this endpoint 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 you would like to avoid matching, please use the [Create record endpoint](/rest-api/endpoint-reference/records/create-a-record). If the matching attribute is a multiselect attribute, new values will be added and existing values will not be deleted. For any other multiselect attribute, all values will be either created or deleted as necessary to match the list of supplied values. Required scopes: `record_permission:read-write`, `object_configuration:read`.
- Records
- Update a record (overwrite multiselect values)
- Use this endpoint to update people, companies, and other records by `record_id`. If the update payload includes multiselect attributes, the values supplied will overwrite/remove the list of values that already exist (if any). Use the `PATCH` endpoint to append multiselect values without removing those that already exist. Required scopes: `record_permission:read-write`, `object_configuration:read`.
- Records
Attio integration, answered
- How do AI agents use Attio through Open Connector?
- Your user connects Attio once with one of its cataloged authentication methods. Open Connector stores the credential in an encrypted vault and exposes Attio tools to your agent over MCP or a typed API, with credentials injected server-side on each call.
- Is this a Attio MCP server?
- Yes. Open Connector can serve Attio as a named MCP server with a scoped allowlist and a per-user connection URL, so any MCP client can call Attio actions with credentials injected server-side.
- Where do Attio credentials live?
- In your own infrastructure. Open Connector keeps credentials in its own vault and injects them at call time, so they never leave your environment.
Give your agents Attio — keep the keys.
Open source, self-hostable, with Attio credentials that never leave your infrastructure. Run it from source today.