VX Agents

OpenAPI Marketplace · CRM & Sales

Attio CRM

v1.0.0 · 17 endpoints · 0 connections · shared by vx.ai

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.

MethodPathOperationDescription
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

  1. In Attio, open Workspace settings > Developers (workspace admin required).
  2. Click Create a new integration, name it (for example "VX Agents") and open its Scopes tab.
  3. Grant the scopes in the table below (Read for read-only agents, Read-write where the agent creates or updates data).
  4. 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-After seconds 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 identifySelf once to confirm it works.
  • Object slugs are usually people, companies and deals; custom objects have their own slug (see listObjects). 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

  1. Find the record: searchRecords with a name, email or domain in query, the object slugs in objects, and request_as set to {"type": "workspace"}. For exact filters use queryRecords on one object.
  2. Read it: getRecord with the object slug and record_id.
  3. Before writing, call listAttributes (target objects, identifier = object slug) to learn the attribute slugs and value types.
  4. Create or update: createRecord / updateRecord with {"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]"].
  5. Track it in a pipeline: listLists, then addRecordToList with parent_record_id, parent_object and any entry_values; review a pipeline with queryListEntries.
  6. Log context: createNote (parent_object, parent_record_id, title, format plaintext or markdown, content).
  7. Follow up: listWorkspaceMembers to find an assignee, then createTask (content, format plaintext, deadline_at, is_completed false, linked_records, assignees); close it with updateTask and is_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) and offset; searchRecords returns 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

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “Attio CRM” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs