{"kind":"Skill","metadata":{"namespace":"community","name":"attio-automation","version":"0.1.0"},"spec":{"description":"Automate Attio CRM operations -- search records, query contacts and companies with advanced filters, manage notes, list attributes, and navigate your relationship data -- using natural language through the Composio MCP integration.","files":{"SKILL.md":"---\nname: Attio Automation\ndescription: \"Automate Attio CRM operations -- search records, query contacts and companies with advanced filters, manage notes, list attributes, and navigate your relationship data -- using natural language through the Composio MCP integration.\"\ncategory: crm\nrequires:\n  mcp:\n    - rube\n---\n\n# Attio Automation\n\nManage your Attio CRM workspace -- fuzzy search across people and companies, run complex filtered queries, browse notes, discover object schemas, and list records -- all through natural language commands.\n\n**Toolkit docs:** [composio.dev/toolkits/attio](https://composio.dev/toolkits/attio)\n\n---\n\n## Setup\n\n1. Add the Composio MCP server to your client configuration:\n   ```\n   https://rube.app/mcp\n   ```\n2. Connect your Attio account when prompted (OAuth authentication).\n3. Start issuing natural language commands to manage your CRM data.\n\n---\n\n## Core Workflows\n\n### 1. Fuzzy Search Across Records\nSearch for people, companies, deals, or any object by name, domain, email, phone, or social handle.\n\n**Tool:** `ATTIO_SEARCH_RECORDS`\n\n**Example prompt:**\n\u003e \"Search Attio for anyone named Alan Mathis\"\n\n**Key parameters (all required):**\n- `query` -- Search string (max 256 characters). Empty string returns default results.\n- `objects` -- Array of object slugs to search (e.g., `[\"people\"]`, `[\"people\", \"companies\"]`, `[\"deals\"]`)\n- `request_as` -- Context: use `{\"type\": \"workspace\"}` for full workspace search, or specify a workspace member\n\n---\n\n### 2. Advanced Filtered Queries\nQuery records with server-side filtering, sorting, and complex conditions -- far more powerful than fuzzy search.\n\n**Tool:** `ATTIO_QUERY_RECORDS`\n\n**Example prompt:**\n\u003e \"Find all companies in Attio created after January 2025 sorted by name\"\n\n**Key parameters:**\n- `object` (required) -- Object slug or UUID (e.g., \"people\", \"companies\", \"deals\")\n- `filter` -- Attio filter object with operators like `$eq`, `$contains`, `$gte`, `$and`, `$or`\n- `sorts` -- Array of sort specifications with `direction` (\"asc\"/\"desc\") and `attribute`\n- `limit` -- Max records to return (up to 500)\n- `offset` -- Pagination offset\n\n**Filter examples:**\n```json\n{\"name\": {\"first_name\": {\"$contains\": \"John\"}}}\n{\"email_addresses\": {\"$contains\": \"@example.com\"}}\n{\"created_at\": {\"$gte\": \"2025-01-01T00:00:00.000Z\"}}\n```\n\n---\n\n### 3. Find Records by ID or Attributes\nLook up a specific record by its unique ID or search by unique attribute values.\n\n**Tool:** `ATTIO_FIND_RECORD`\n\n**Example prompt:**\n\u003e \"Find the Attio company with domain example.com\"\n\n**Key parameters:**\n- `object_id` (required) -- Object type slug: \"people\", \"companies\", \"deals\", \"users\", \"workspaces\"\n- `record_id` -- Direct lookup by UUID (optional)\n- `attributes` -- Dictionary of attribute filters (e.g., `{\"email_addresses\": \"john@example.com\"}`)\n- `limit` -- Max records (up to 1000)\n- `offset` -- Pagination offset\n\n---\n\n### 4. Browse and Filter Notes\nList notes across the workspace or filter by specific parent objects and records.\n\n**Tool:** `ATTIO_LIST_NOTES`\n\n**Example prompt:**\n\u003e \"Show the last 10 notes on the Acme Corp company record in Attio\"\n\n**Key parameters:**\n- `parent_object` -- Object slug (e.g., \"people\", \"companies\", \"deals\") -- requires `parent_record_id`\n- `parent_record_id` -- UUID of the parent record -- requires `parent_object`\n- `limit` -- Max notes to return (1-50, default 10)\n- `offset` -- Number of results to skip\n\n---\n\n### 5. Discover Object Schemas and Attributes\nUnderstand your workspace structure by listing objects and their attribute definitions.\n\n**Tools:** `ATTIO_GET_OBJECT`, `ATTIO_LIST_ATTRIBUTES`\n\n**Example prompt:**\n\u003e \"What attributes does the companies object have in Attio?\"\n\n**Key parameters for Get Object:**\n- `object_id` -- Object slug or UUID\n\n**Key parameters for List Attributes:**\n- `target` -- \"objects\" or \"lists\"\n- `identifier` -- Object or list ID/slug\n\n---\n\n### 6. List All Records\nRetrieve records from a specific object type with simple pagination, returned in creation order.\n\n**Tool:** `ATTIO_LIST_RECORDS`\n\n**Example prompt:**\n\u003e \"List the first 100 people records in Attio\"\n\n**Key parameters:**\n- Object type identifier\n- Pagination parameters\n\n---\n\n## Known Pitfalls\n\n- **Timestamp format is critical**: ALL timestamp comparisons (`created_at`, `updated_at`, custom timestamps) MUST use ISO8601 string format (e.g., `2025-01-01T00:00:00.000Z`). Unix timestamps or numeric values cause \"Invalid timestamp value\" errors.\n- **Name attributes must be nested**: The `name` attribute has sub-properties (`first_name`, `last_name`, `full_name`) that MUST be nested under `name`. Correct: `{\"name\": {\"first_name\": {\"$contains\": \"John\"}}}`. Wrong: `{\"first_name\": {...}}` -- this fails with \"unknown_filter_attribute_slug\".\n- **Email operators are limited**: `email_addresses` supports `$eq`, `$contains`, `$starts_with`, `$ends_with` but NOT `$not_empty`.\n- **Record-reference attributes need path filtering**: For attributes that reference other records (e.g., \"team\", \"company\"), use path-based filtering, not nested syntax. Example: `{\"path\": [[\"companies\", \"team\"], [\"people\", \"name\"]], \"constraints\": {\"first_name\": {\"$eq\": \"John\"}}}`.\n- **\"lists\" is not an object type**: Do not use \"lists\" as an `object_id`. Use list-specific actions for list operations.\n- **Search is eventually consistent**: `ATTIO_SEARCH_RECORDS` returns eventually consistent results. For guaranteed up-to-date results, use `ATTIO_QUERY_RECORDS` instead.\n- **Attribute slugs vary by workspace**: System attributes (e.g., \"email_addresses\", \"name\") are consistent, but custom attributes vary. Use `ATTIO_LIST_ATTRIBUTES` to discover valid slugs for your workspace.\n\n---\n\n## Quick Reference\n\n| Action | Tool Slug | Required Params |\n|---|---|---|\n| Fuzzy search records | `ATTIO_SEARCH_RECORDS` | `query`, `objects`, `request_as` |\n| Query with filters | `ATTIO_QUERY_RECORDS` | `object` |\n| Find record by ID/attributes | `ATTIO_FIND_RECORD` | `object_id` |\n| List notes | `ATTIO_LIST_NOTES` | None (optional filters) |\n| Get object schema | `ATTIO_GET_OBJECT` | `object_id` |\n| List attributes | `ATTIO_LIST_ATTRIBUTES` | `target`, `identifier` |\n| List records | `ATTIO_LIST_RECORDS` | Object type |\n\n---\n\n*Powered by [Composio](https://composio.dev)*\n"},"import":{"commit_sha":"f2b5e29bc315f04c8e09591ba275f4c4f7d4b8fe","imported_at":"2026-05-18T20:07:47Z","license_text":"","owner":"ComposioHQ","repo":"ComposioHQ/awesome-claude-skills","source_url":"https://github.com/ComposioHQ/awesome-claude-skills/tree/f2b5e29bc315f04c8e09591ba275f4c4f7d4b8fe/composio-skills/attio-automation"}},"content_hash":[22,47,5,155,42,142,84,21,239,166,224,76,173,171,81,114,211,55,28,55,15,116,30,232,121,30,236,253,185,145,123,107],"trust_level":"unsigned","yanked":false}
