Documentation Index
Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Playbook
Attio CRM — Agent Guidance
Quick Reference
| Goal | Operation | Notes |
|---|---|---|
| Upsert person by email | attio_assert_record (object: people, matching_attribute: email_addresses) | Preferred over create_record — no conflict errors. |
| Upsert company by domain | attio_assert_record (object: companies, matching_attribute: domains) | Attio auto-enriches when domain is provided. |
| Search by name/keyword | attio_search_records | Fuzzy, max 25 results. Not real-time. |
| Filter records precisely | attio_query_records | Structured filters, pagination, sorting. Use this for production queries. |
| Add to pipeline | attio_create_entry or attio_assert_entry | Use assert for upsert behavior. |
| Query pipeline entries | attio_query_entries | Supports same filter syntax as record queries. |
| Log activity | attio_create_note | Supports markdown format. |
| Assign follow-up | attio_create_task | Link to records, set deadline, assign workspace member. |
| Discover schema | attio_list_attributes | Always check available attributes before writing unfamiliar values. |
| Verify API key | attio_identify | Free. Returns workspace info and scopes. |
Playbooks
Playbook 1: Enrichment Roundtrip
The most common workflow. Attio auto-enriches records when email (people) or domain (companies) is provided.Playbook 2: Pipeline Qualification
Playbook 3: Meeting Follow-Up
Playbook 4: Batch Import
Common Mistakes
- Use
assert_record(PUT) notcreate_record(POST) for upserts. POST fails with 409 on unique attribute conflicts. Assert always succeeds — creates if missing, updates if found. - Multiselect append behavior on assert: When the matching attribute is multiselect, new values are appended (existing preserved). Non-matching multiselect attributes are fully replaced. Plan accordingly.
search_recordsis fuzzy and eventual. It caps at 25 results and is not real-time. Usequery_recordswith structured filters for precise, paginated queries.- No bulk API. Each record is created or updated individually. Stay within rate limits.
- Note event gotcha:
note.updatedonly fires for title changes. Usenote-content.updatedto track body edits. - Enrichment is automatic. Attio enriches records when email (people) or domain (companies) is provided. There is no explicit enrichment API call.
- Always check schema first. Before writing to an unfamiliar object, call
attio_list_attributesto discover available attribute slugs and types.
Rate Limits
| Type | Limit |
|---|---|
| Read requests | 100/sec |
| Write requests | 25/sec |
| Webhook delivery | 25/sec per target URL |
429 responses by respecting the Retry-After header. For batch imports, pace writes to stay under the 25/sec write limit.