{"openapi":"3.1.0","info":{"title":"SalesRabbit (BYOK) API","version":"0.1.0","description":"SalesRabbit (BYOK) lets an AI assistant read your own SalesRabbit data through the SalesRabbit API with a key you supply (SalesRabbit API key). Read-only: 10 tools (list_leads, get_lead, get_lead_status_history, list_lead_statuses, list_stages, list_campaigns, list_areas, list_teams, list_profiles, list_custom_fields). The BYOK key travels with each request, is used for that one call only and is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-salesrabbit.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-salesrabbit/docs"},"termsOfService":"https://connectorbay.com/byok-salesrabbit/terms"},"servers":[{"url":"https://byok-salesrabbit.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-salesrabbit/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_leads":{"post":{"operationId":"list_leads","summary":"List leads (prospects) with title, city, region, country, status, assignee, team and dates. Street address and coordinat","description":"List leads (prospects) with title, city, region, country, status, assignee, team and dates. Street address and coordinates are not returned. Filter by city, region or status. Use for \"Show our latest SalesRabbit leads\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"city":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only leads in this city (exact match).","title":"City"},"region":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only leads in this region or state (exact match).","title":"Region"},"lead_status_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only leads with this lead status ID (see list_lead_statuses).","title":"Lead Status Id"},"updated_since":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only leads updated at or after this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Updated Since"},"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"-updated_at","description":"Sort field, prefix with - for descending, for example -updated_at or inserted_at.","title":"Sort"},"page_limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 250, default 30).","title":"Page Limit"},"page_offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for the next page.","title":"Page Offset"},"page_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to include the total record count in the answer.","title":"Page Count"}},"title":"list_leadsArguments","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_lead":{"post":{"operationId":"get_lead","summary":"Get one lead by ID with title, city, region, country, status, assignee, team and dates. Use for \"Show SalesRabbit lead 4","description":"Get one lead by ID with title, city, region, country, status, assignee, team and dates. Use for \"Show SalesRabbit lead 4fc6fa51-5a9b-4472-8ee1-2036336be0da\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Lead ID (a UUID, see list_leads).","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_leadArguments","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_lead_status_history":{"post":{"operationId":"get_lead_status_history","summary":"List leads with how their status changed over time (status history), optionally only those updated since a time. Offset-","description":"List leads with how their status changed over time (status history), optionally only those updated since a time. Offset-paged. Use for \"How have lead statuses changed in SalesRabbit since January\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"since":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only records updated since this ISO 8601 time, for example 2026-01-01T00:00:00Z.","title":"Since"},"page_limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 250, default 30).","title":"Page Limit"},"page_offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for the next page.","title":"Page Offset"}},"title":"get_lead_status_historyArguments","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_lead_statuses":{"post":{"operationId":"list_lead_statuses","summary":"List lead statuses with name, abbreviation, order, active state and the stage they belong to. Use for \"What lead statuse","description":"List lead statuses with name, abbreviation, order, active state and the stage they belong to. Use for \"What lead statuses do we use in SalesRabbit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"order","description":"Sort field, prefix with - for descending.","title":"Sort"},"page_limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 250, default 30).","title":"Page Limit"},"page_offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for the next page.","title":"Page Offset"},"page_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to include the total record count in the answer.","title":"Page Count"}},"title":"list_lead_statusesArguments","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_stages":{"post":{"operationId":"list_stages","summary":"List the sales stages that lead statuses are grouped into, with order and default flag. Use for \"What sales stages exist","description":"List the sales stages that lead statuses are grouped into, with order and default flag. Use for \"What sales stages exist in SalesRabbit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 250, default 30).","title":"Page Limit"},"page_offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for the next page.","title":"Page Offset"},"page_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to include the total record count in the answer.","title":"Page Count"}},"title":"list_stagesArguments","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_campaigns":{"post":{"operationId":"list_campaigns","summary":"List campaigns with name, description, status and number of leads. Use for \"Which SalesRabbit campaigns are running\".","description":"List campaigns with name, description, status and number of leads. Use for \"Which SalesRabbit campaigns are running\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 250, default 30).","title":"Page Limit"},"page_offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for the next page.","title":"Page Offset"},"page_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to include the total record count in the answer.","title":"Page Count"}},"title":"list_campaignsArguments","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_areas":{"post":{"operationId":"list_areas","summary":"List territories (areas) with title, color, external ID and team. Map polygons are not returned. Use for \"What territori","description":"List territories (areas) with title, color, external ID and team. Map polygons are not returned. Use for \"What territories are set up in SalesRabbit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 250, default 30).","title":"Page Limit"},"page_offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for the next page.","title":"Page Offset"},"page_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to include the total record count in the answer.","title":"Page Count"}},"title":"list_areasArguments","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_teams":{"post":{"operationId":"list_teams","summary":"List teams with name, external ID and parent team. Use for \"What teams are in SalesRabbit\".","description":"List teams with name, external ID and parent team. Use for \"What teams are in SalesRabbit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 250, default 30).","title":"Page Limit"},"page_offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for the next page.","title":"Page Offset"},"page_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to include the total record count in the answer.","title":"Page Count"}},"title":"list_teamsArguments","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_profiles":{"post":{"operationId":"list_profiles","summary":"List users (sales reps and managers) with name, status, role and team. Email and phone are not returned. Use for \"Who ar","description":"List users (sales reps and managers) with name, status, role and team. Email and phone are not returned. Use for \"Who are the reps on our SalesRabbit account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only profiles with this status, for example active.","title":"Status"},"page_limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 250, default 30).","title":"Page Limit"},"page_offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for the next page.","title":"Page Offset"},"page_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to include the total record count in the answer.","title":"Page Count"}},"title":"list_profilesArguments","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_custom_fields":{"post":{"operationId":"list_custom_fields","summary":"List the custom lead fields defined on the account with name, type, order and status. Use for \"What custom lead fields d","description":"List the custom lead fields defined on the account with name, type, order and status. Use for \"What custom lead fields do we have in SalesRabbit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 250, default 30).","title":"Page Limit"},"page_offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for the next page.","title":"Page Offset"},"page_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to include the total record count in the answer.","title":"Page Count"}},"title":"list_custom_fieldsArguments","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}}}}