Attio integrationAttio logo

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.

What your agents can do

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

    Your user grants Attio access once (OAuth) — the token lands in the vault.

  2. 2

    Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.

  3. 3

    Every routed call appends a hash-chained audit record — nothing leaves your infra.

Tools & triggers

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
FAQ

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.