# Attio (/docs/connectors/attio)

CoreSpeed connects your AI client to an Attio workspace through OAuth. You can
ask your agent to find CRM records, inspect available objects and lists, show
the workspace member directory, and create or update record attributes.

The MCP server runs on CoreSpeed at `https://api.corespeed.io/mcp`. CoreSpeed's
Attio connector calls the Attio REST API using your authorized connection.
There is no MCP server to register or run inside Attio for this integration.

## Connect and authorize \[#connect-and-authorize]

You need a CoreSpeed account and access to the Attio workspace you want to
connect. The workspace must permit you to install the CoreSpeed app.

1. Sign in to [CoreSpeed](https://app.corespeed.io) and select the CoreSpeed
   organization where you want the connection.
2. Open [Connectors → Attio](https://app.corespeed.io/connectors/attio) and
   choose **Connect**. If Attio is not offered for your organization, contact
   [support@corespeed.io](mailto:support@corespeed.io).
3. Review the access summary and connection visibility. A **private**
   connection is available to you and your clients; a **shared** connection
   is available to members and agent principals in your CoreSpeed organization.
   Choose **Authorize** to continue to Attio.
4. On Attio's authorization screen, select the intended Attio workspace,
   review the CoreSpeed app's permissions, and approve the installation.
   Attio controls this grant through the app's configured scopes.
5. Return to CoreSpeed and check that the Attio account shows **Connected**.
   Note its account alias so you can select the correct workspace when more
   than one Attio account is connected.
6. [Connect your AI client to CoreSpeed](/docs/mcp) and sign in to the same
   CoreSpeed organization. Refresh the client's tools to discover the
   `attio__` tools below.

For a first read, ask: “Using my Attio connection, list the available objects
and show up to five company records.” This uses `list_objects` followed by
`query_records` with `object: "companies"` and `limit: 5`.

## What the connector reads \[#what-the-connector-reads]

Access is limited to the connected Attio workspace and the app's granted
permissions. Record tools accept an object API slug or ID. This supports
`people`, `companies`, `deals`, and custom objects that exist in that workspace
and are accessible to the app.

| Tool                            | Data returned from Attio                                                                                                                                                                       |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `attio__list_objects`           | Workspace object definitions, including their IDs, API slugs, and singular/plural names.                                                                                                       |
| `attio__list_lists`             | List configuration returned by Attio, including list IDs, names, parent objects, and access configuration. This reads list metadata; it does not read the records or entries inside each list. |
| `attio__list_workspace_members` | The workspace member directory: member IDs, names, email addresses, and member metadata returned by Attio, such as access level and avatar URL.                                                |
| `attio__query_records`          | Records in one chosen object, optionally narrowed by an Attio filter. Returns record IDs, URLs, and attribute values. The default limit is 25; you can request 1–500 records per call.         |
| `attio__get_record`             | A single record's IDs, URL, and attribute values, selected by object and `record_id`.                                                                                                          |

Record results can include personal or business information stored in those
attributes. The response is sent to the AI client making the request; choose
a client appropriate for the data you intend to use.

### Workspace member directory \[#workspace-member-directory]

Ask: “Show the names and email addresses of members in this Attio workspace.”
The agent calls `attio__list_workspace_members` and presents the returned
directory in your conversation. Member IDs also let the agent identify a
workspace member referenced in a record attribute.

This directory feature is the reason for `user_management:read`. The tool
reads the member directory on demand; it does not invite members, change
roles, or administer users. Attio documents the returned fields and required
scope in [List workspace members](https://docs.attio.com/rest-api/endpoint-reference/workspace-members/list-workspace-members).

## Exactly what can be created or updated \[#exactly-what-can-be-created-or-updated]

The connector exposes two write tools. Both operate on records in an existing
Attio object and submit only the attribute values supplied in the tool call.

| Tool                   | Required input                      | Change in Attio                                                                                                                                                               |
| ---------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `attio__create_record` | `object` and `values`               | Creates one new record in the selected object. For example, create a company with a name and domain. Attio validates the attributes and rejects conflicts with unique values. |
| `attio__update_record` | `object`, `record_id`, and `values` | Updates the supplied attributes on that one record through Attio's PATCH endpoint. For multiselect attributes, supplied values are prepended to existing values.              |

`values` maps attribute slugs or IDs to values in Attio's format. Existing
attributes, required fields, and permissions determine which writes Attio
accepts. See Attio's [create record](https://docs.attio.com/rest-api/endpoint-reference/records/create-a-record)
and [update record](https://docs.attio.com/rest-api/endpoint-reference/records/update-a-record-append-multiselect-values)
references for the value format and update behavior.

For example, ask: “Create a company named Example Company with the domain
example.com in my Attio companies object.” The write tool arguments are:

```json
{
  "object": "companies",
  "values": {
    "name": "Example Company",
    "domains": ["example.com"]
  }
}
```

To rename that company, use `attio__update_record` with the returned
`record_id`, `object: "companies"`, and `values: { "name": "Example Company Ltd" }`.
The result contains Attio's saved record, including its ID and URL.

The current tool set does not delete records, create or change object
definitions, create or change lists or list entries, or create tasks, notes,
or messages. Keep your AI client's confirmation enabled for writes and
review the selected account, record, and values before running a change.

## Permissions and their uses \[#permissions-and-their-uses]

Attio's consent screen is the source of truth for the app's grant. These
permissions support the operations documented above:

| Attio permission               | Why CoreSpeed uses it                                                 |
| ------------------------------ | --------------------------------------------------------------------- |
| `object_configuration:read`    | Discover objects and address their records.                           |
| `list_configuration:read`      | Show the workspace's available lists and their configuration.         |
| `record_permission:read-write` | Find and read records, create a record, and update record attributes. |
| `user_management:read`         | Show the workspace member directory and resolve member references.    |

## How data moves \[#how-data-moves]

```text
Your AI client
  → CoreSpeed MCP server (api.corespeed.io/mcp)
  → CoreSpeed Attio connector + stored OAuth connection
  → Attio REST API (api.attio.com/v2)
  → CoreSpeed returns Attio's result to your AI client
```

During connection, Attio sends an authorization code back to CoreSpeed.
CoreSpeed exchanges it for an access token and stores that token encrypted,
together with connection metadata that identifies the Attio workspace. The
token stays on CoreSpeed's server and is not included in MCP tool results.

For a read, the agent sends the requested operation, object, filter, or record
ID to CoreSpeed. CoreSpeed authenticates the call, selects the accessible
connection, requests the data from Attio, and returns Attio's JSON result as
MCP tool content. For a write, the submitted attribute values travel the same
route to Attio, which validates and saves the record before returning it.

Connecting alone does not start a background CRM sync. Reads and writes happen
when a client invokes a tool. Saving returned information to
[CoreSpeed Memory](/docs/memory) is a separate tool action. Your selected AI
client may retain conversation and tool results under its own settings.
CoreSpeed's data handling is described in the [Privacy Policy](/privacy), and
calls appear in [Activity](/docs/activity).

## Disconnect or reconnect \[#disconnect-or-reconnect]

Open [Connectors → Attio](https://app.corespeed.io/connectors/attio), find the
account, and choose **Disconnect** to remove CoreSpeed's stored connection.
To revoke the installation on Attio's side as well, remove the CoreSpeed app
from that Attio workspace's installed apps. Disconnecting does not undo
records you already created or changed.

If CoreSpeed reports that the account needs reauthorization, choose
**Reconnect** and complete Attio's consent flow again. For help, contact
[support@corespeed.io](mailto:support@corespeed.io).