{"openapi":"3.1.0","info":{"title":"Attio (BYOK) API","version":"0.1.0","description":"Attio (BYOK) lets an AI assistant read your own Attio data through the Attio API with a key you supply (Attio API key (access token)). Read-only: 10 tools (get_token_info, list_objects, query_records, get_record, search_records, list_lists, query_list_entries, list_workspace_members, list_notes, list_tasks). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-attio.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-attio/docs"},"termsOfService":"https://connectorbay.com/byok-attio/terms"},"servers":[{"url":"https://byok-attio.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-attio/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_token_info":{"post":{"operationId":"get_token_info","summary":"Show the workspace the Attio key belongs to (name, slug, id) and the scopes and level of the token. Use for \"Which Attio","description":"Show the workspace the Attio key belongs to (name, slug, id) and the scopes and level of the token. Use for \"Which Attio workspace is my API key for, and what can it access\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_token_infoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_objects":{"post":{"operationId":"list_objects","summary":"List the objects of the workspace (people, companies, deals and custom ones) with their slugs and names. Use for \"What o","description":"List the objects of the workspace (people, companies, deals and custom ones) with their slugs and names. Use for \"What objects exist in my Attio workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_objectsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/query_records":{"post":{"operationId":"query_records","summary":"List records of one Attio object (for example people or companies) in the default order. Each record carries its attribu","description":"List records of one Attio object (for example people or companies) in the default order. Each record carries its attribute values. Use for \"List my Attio companies\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"object":{"description":"Object slug or id, for example 'people', 'companies' or 'deals' (list them with list_objects).","maxLength":60,"title":"Object","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"required":["object"],"title":"query_recordsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_record":{"post":{"operationId":"get_record","summary":"Get one Attio record by object and record id, with all its attribute values. Use for \"Show Attio person record 891dcbfc-","description":"Get one Attio record by object and record id, with all its attribute values. Use for \"Show Attio person record 891dcbfc-9141-415d-9b2a-2238a6cc012d\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"object":{"description":"Object slug or id, for example 'people', 'companies' or 'deals' (list them with list_objects).","maxLength":60,"title":"Object","type":"string"},"record_id":{"description":"Record id (a UUID).","maxLength":60,"title":"Record Id","type":"string"}},"required":["object","record_id"],"title":"get_recordArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_records":{"post":{"operationId":"search_records","summary":"Search Attio records of one object by text (names, emails, domains) and get a label per hit. Searches as the whole works","description":"Search Attio records of one object by text (names, emails, domains) and get a label per hit. Searches as the whole workspace. Use for \"Find the Attio company Acme\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Text to search for, for example a name, email address or domain.","maxLength":256,"title":"Query","type":"string"},"object":{"description":"Object slug to search in, for example 'people' or 'companies'.","maxLength":60,"title":"Object","type":"string"},"limit":{"anyOf":[{"maximum":25,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 25).","title":"Limit"}},"required":["query","object"],"title":"search_recordsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_lists":{"post":{"operationId":"list_lists","summary":"List the Attio lists (pipelines and other curated record collections) with slug, name and parent object. Use for \"What l","description":"List the Attio lists (pipelines and other curated record collections) with slug, name and parent object. Use for \"What lists do I have in Attio\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_listsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/query_list_entries":{"post":{"operationId":"query_list_entries","summary":"List the entries of one Attio list (for example a sales pipeline) with the parent record and the entry's own attribute v","description":"List the entries of one Attio list (for example a sales pipeline) with the parent record and the entry's own attribute values. Use for \"What is in my Attio sales pipeline list\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"list":{"description":"List slug or id (see list_lists).","maxLength":60,"title":"List","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"required":["list"],"title":"query_list_entriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_workspace_members":{"post":{"operationId":"list_workspace_members","summary":"List the members of the Attio workspace with name, email and access level. Use for \"Who is in my Attio workspace\".","description":"List the members of the Attio workspace with name, email and access level. Use for \"Who is in my Attio workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_workspace_membersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_notes":{"post":{"operationId":"list_notes","summary":"List Attio notes, optionally for one record (give both parent_object and parent_record_id). Returns title and plain text","description":"List Attio notes, optionally for one record (give both parent_object and parent_record_id). Returns title and plain text. Use for \"What notes are on the Attio company record 891dcbfc-9141-415d-9b2a-2238a6cc012d\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"parent_object":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Object slug of the record the notes belong to, for example 'companies'. Use together with parent_record_id.","title":"Parent Object"},"parent_record_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Record id (UUID) the notes belong to. Use together with parent_object.","title":"Parent Record Id"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many notes to return (1 to 50; the API default is 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many notes to skip, for paging.","title":"Offset"}},"title":"list_notesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_tasks":{"post":{"operationId":"list_tasks","summary":"List Attio tasks with deadline, completion state, assignees and linked records. Can filter to open or completed tasks. U","description":"List Attio tasks with deadline, completion state, assignees and linked records. Can filter to open or completed tasks. Use for \"Which Attio tasks are still open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"is_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for completed tasks only, false for open tasks only; leave out for both.","title":"Is Completed"},"assignee":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks assigned to this workspace member (email address or member id).","title":"Assignee"},"sort":{"anyOf":[{"enum":["created_at:asc","created_at:desc","completed_at:asc","completed_at:desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: created_at:asc, created_at:desc, completed_at:asc or completed_at:desc.","title":"Sort"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many tasks to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many tasks to skip, for paging.","title":"Offset"}},"title":"list_tasksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}