# Attio

Read and write Attio: list objects, query records, upsert records, add notes and tasks.

- Repository: https://github.com/Anil-matcha/awesome-muse-connectors (1403 stars)
- Category: Writing
- License: MIT
- Last updated: 2026-10-13
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add Anil-matcha/awesome-muse-connectors --skill attio -g -a claude-code -y`
Codex: `npx skills add Anil-matcha/awesome-muse-connectors --skill attio -g -a codex -y`
Cursor: `npx skills add Anil-matcha/awesome-muse-connectors --skill attio -g -a cursor -y`
Gemini CLI: `npx skills add Anil-matcha/awesome-muse-connectors --skill attio -g -a gemini-cli -y`

## Description

Read and write Attio: list objects, query records, upsert records, add notes and tasks. Trigger phrases: attio, crm.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Attio

## Purpose
Read and write the user's Attio CRM: list objects, query records on any object, create-or-update records, add notes and tasks to records. Use when the user mentions Attio or their CRM.

## Tooling
All commands go through `bin/attio.py`:

```bash
bin/attio.py auth                                     # verify the API key
bin/attio.py objects                                  # list available objects
bin/attio.py query --object-slug companies --filter-json '{"filters":[]}'  # query records
bin/attio.py upsert --object-slug companies --match-attribute email --values-json '{"name":[{"value":"Acme"}],"email":[{"value":"a@acme.com"}]}'  # create or update a record
bin/attio.py note --record-id rec_abc123 --title "Call notes" --content "Discussed pricing"  # add a note
bin/attio.py task --record-id rec_abc123 --title "Send proposal"  # add a task
```

Attio's preferred write path is `upsert`: it creates the record when `matching_attribute` matches nothing, and updates the matched record otherwise.

Attribute values are arrays even for scalar fields: every attribute value is sent as a list of objects, like `[{"value": 42}]` or `[{"value": "Acme"}]`. Build `--values-json` in that shape, as in the upsert example above.

## Auth
- Provider id: `attio` (credential is collected as `custom.attio`)
- Collection: Bearer API key via the secure credential flow (`credentials.request_api_access`); created in Attio under Workspace settings > Developers
- Allowed hosts: `api.attio.com`
- Status check: `bin/attio.py auth` (must return `"ok": true`)

The rest: https://github.com/Anil-matcha/awesome-muse-connectors/blob/HEAD/connectors/attio/SKILL.md
