{"openapi":"3.1.0","info":{"title":"Agile CRM (BYOK) API","version":"0.1.0","description":"Agile CRM (BYOK) lets an AI assistant read your own Agile CRM data through the Agile CRM API with a key you supply (the email address of your Agile CRM user (the API username)). Read-only: 11 tools (list_contacts, get_contact, search_contacts_or_companies, find_contact_by_email, list_contact_notes, list_deals, get_deal, list_deals_by_track, list_tracks, list_tasks, list_events). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-agile-crm.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-agile-crm/docs"},"termsOfService":"https://connectorbay.com/byok-agile-crm/terms"},"servers":[{"url":"https://byok-agile-crm.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-agile-crm/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/list_contacts":{"post":{"operationId":"list_contacts","summary":"List contacts (people) in creation order with tags, lead score, star rating, owner and the full properties list (name, e","description":"List contacts (people) in creation order with tags, lead score, star rating, owner and the full properties list (name, email, phone, custom fields). Cursor-paged: the last record carries the cursor for the next page. Use for \"Show the most recent contacts in my Agile CRM\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return per page (the account maximum applies; 25 is typical).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from the last record of the previous answer; leave empty for the first page.","title":"Cursor"}},"required":["domain"],"title":"list_contactsArguments","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_contact":{"post":{"operationId":"get_contact","summary":"Get one contact or company by ID with tags, lead score, star rating, owner and the full properties list. Use for \"Show A","description":"Get one contact or company by ID with tags, lead score, star rating, owner and the full properties list. Use for \"Show Agile CRM contact 5629585249009664\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"contact_id":{"description":"Numeric contact ID, as shown in the id field of a contact.","maxLength":200,"title":"Contact Id","type":"string"}},"required":["domain","contact_id"],"title":"get_contactArguments","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_contacts_or_companies":{"post":{"operationId":"search_contacts_or_companies","summary":"Search contacts or companies by a keyword matched against default and searchable custom fields. All three parameters are","description":"Search contacts or companies by a keyword matched against default and searchable custom fields. All three parameters are required. Use for \"Search Agile CRM for contacts matching 'acme'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"q":{"description":"Search keyword.","maxLength":200,"title":"Q","type":"string"},"type":{"description":"PERSON to search contacts, COMPANY to search companies.","enum":["PERSON","COMPANY"],"title":"Type","type":"string"},"page_size":{"description":"How many results to return.","maximum":100,"minimum":1,"title":"Page Size","type":"integer"}},"required":["domain","q","type","page_size"],"title":"search_contacts_or_companiesArguments","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/find_contact_by_email":{"post":{"operationId":"find_contact_by_email","summary":"Look up the contact that has an exact email address (case-sensitive). Use for \"Which Agile CRM contact has the email jan","description":"Look up the contact that has an exact email address (case-sensitive). Use for \"Which Agile CRM contact has the email jane@example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"email":{"description":"Exact email address of the contact.","maxLength":200,"title":"Email","type":"string"}},"required":["domain","email"],"title":"find_contact_by_emailArguments","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_contact_notes":{"post":{"operationId":"list_contact_notes","summary":"List the notes attached to one contact with subject, text and creation time. Use for \"What notes are on Agile CRM contac","description":"List the notes attached to one contact with subject, text and creation time. Use for \"What notes are on Agile CRM contact 5629585249009664\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"contact_id":{"description":"Numeric contact ID, as shown in the id field of a contact.","maxLength":200,"title":"Contact Id","type":"string"}},"required":["domain","contact_id"],"title":"list_contact_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_deals":{"post":{"operationId":"list_deals","summary":"List deals in creation order with value, milestone, probability, close date and owner. Cursor-paged. Use for \"List my Ag","description":"List deals in creation order with value, milestone, probability, close date and owner. Cursor-paged. Use for \"List my Agile CRM deals\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many records to return per page (the account maximum applies; 25 is typical).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from the last record of the previous answer; leave empty for the first page.","title":"Cursor"}},"required":["domain"],"title":"list_dealsArguments","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_deal":{"post":{"operationId":"get_deal","summary":"Get one deal by ID with value, milestone, probability, close date and owner. Use for \"Show Agile CRM deal 981\".","description":"Get one deal by ID with value, milestone, probability, close date and owner. Use for \"Show Agile CRM deal 981\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"deal_id":{"description":"Deal ID.","maxLength":200,"title":"Deal Id","type":"string"}},"required":["domain","deal_id"],"title":"get_dealArguments","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_deals_by_track":{"post":{"operationId":"list_deals_by_track","summary":"List deals of one track (pipeline). Use pipeline_id 0 for the default track or 1 for all tracks. Cursor-paged. Use for \"","description":"List deals of one track (pipeline). Use pipeline_id 0 for the default track or 1 for all tracks. Cursor-paged. Use for \"Which deals are in the default Agile CRM track\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"pipeline_id":{"description":"Track ID from list_tracks; 0 for the default track, 1 for all tracks.","maxLength":40,"title":"Pipeline Id","type":"string"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many records to return per page (the account maximum applies; 25 is typical).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from the last record of the previous answer; leave empty for the first page.","title":"Cursor"}},"required":["domain","pipeline_id"],"title":"list_deals_by_trackArguments","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_tracks":{"post":{"operationId":"list_tracks","summary":"List deal tracks (pipelines) with their ID, name and comma-separated milestones. Use for \"What deal tracks and milestone","description":"List deal tracks (pipelines) with their ID, name and comma-separated milestones. Use for \"What deal tracks and milestones exist in Agile CRM\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"}},"required":["domain"],"title":"list_tracksArguments","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 tasks filtered by criteria (category, status or priority) and whether they are pending, with subject, due date and ","description":"List tasks filtered by criteria (category, status or priority) and whether they are pending, with subject, due date and owner. Cursor-paged. Use for \"Which Agile CRM call tasks are still pending\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"criteria":{"description":"What the type filter means: CATEGORY, STATUS or PRIORITY.","enum":["CATEGORY","STATUS","PRIORITY"],"title":"Criteria","type":"string"},"type":{"description":"Value for the criteria: CATEGORY takes EMAIL, CALL, FOLLOW_UP, MEETING, MILESTONE, SEND, TWEET, OTHER; STATUS takes IN_PROGRESS, YET_TO_START, COMPLETED; PRIORITY takes HIGH, NORMAL, LOW.","maxLength":40,"title":"Type","type":"string"},"pending":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True for pending tasks only.","title":"Pending"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many records to return per page (the account maximum applies; 25 is typical).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor taken from the last record of the previous answer; leave empty for the first page.","title":"Cursor"}},"required":["domain","criteria","type"],"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}},"/v1/tools/list_events":{"post":{"operationId":"list_events","summary":"List calendar events between two times (epoch seconds) with title, start, end, all-day flag and color. Use for \"What eve","description":"List calendar events between two times (epoch seconds) with title, start, end, all-day flag and color. Use for \"What events are on my Agile CRM calendar this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Agile CRM domain: the part before .agilecrm.com, for example 'mycompany' for mycompany.agilecrm.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"start":{"description":"Start of the window as epoch seconds.","minimum":0,"title":"Start","type":"integer"},"end":{"description":"End of the window as epoch seconds.","minimum":0,"title":"End","type":"integer"}},"required":["domain","start","end"],"title":"list_eventsArguments","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}}}}