{"openapi":"3.1.0","info":{"title":"Salesmate (BYOK) API","version":"0.1.0","description":"Salesmate (BYOK) lets an AI assistant read your own Salesmate data through the Salesmate API with a key you supply (Salesmate access token (Profile, Access Token)). Read-only: 7 tools (list_users, get_contact, search_contacts, get_company, get_deal, get_activity, list_record_notes). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-salesmate.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-salesmate/docs"},"termsOfService":"https://connectorbay.com/byok-salesmate/terms"},"servers":[{"url":"https://byok-salesmate.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-salesmate/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_users":{"post":{"operationId":"list_users","summary":"List the active users of the Salesmate workspace with name, email, role, profile, timezone and whether each is the curre","description":"List the active users of the Salesmate workspace with name, email, role, profile, timezone and whether each is the current user. Use for \"Who are the active users in my Salesmate\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Salesmate workspace name: the part before .salesmate.io, for example 'mycompany' for mycompany.salesmate.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"status":{"anyOf":[{"const":"active","type":"string"},{"type":"null"}],"default":"active","description":"User status to list; the documented value is active.","title":"Status"}},"required":["workspace"],"title":"list_usersArguments","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 by ID with name, email, phones, company, owner, currency, address, tags and opt-out flags. Use for \"Show","description":"Get one contact by ID with name, email, phones, company, owner, currency, address, tags and opt-out flags. Use for \"Show Salesmate contact 40\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Salesmate workspace name: the part before .salesmate.io, for example 'mycompany' for mycompany.salesmate.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"id":{"description":"Contact ID as returned by search_contacts.","maxLength":200,"title":"Id","type":"string"}},"required":["workspace","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":{"post":{"operationId":"search_contacts","summary":"Search contacts created after a date; returns id, name, owner, mobile, email, designation, city, tags and company, 250 r","description":"Search contacts created after a date; returns id, name, owner, mobile, email, designation, city, tags and company, 250 rows at most per call. Use for \"Which Salesmate contacts were created since 1 June 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Salesmate workspace name: the part before .salesmate.io, for example 'mycompany' for mycompany.salesmate.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"created_after":{"description":"Only contacts created after this time, in the form 'Jun 01, 2026 12:00 AM'.","maxLength":40,"title":"Created After","type":"string"},"rows":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many rows to return (1 to 250).","title":"Rows"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Row offset to start from, for paging.","title":"Offset"},"count_total":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"Also return the total row count.","title":"Count Total"}},"required":["workspace","created_after"],"title":"search_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_company":{"post":{"operationId":"get_company","summary":"Get one company by ID with the fields Salesmate returns for it. Use for \"Show Salesmate company 38\".","description":"Get one company by ID with the fields Salesmate returns for it. Use for \"Show Salesmate company 38\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Salesmate workspace name: the part before .salesmate.io, for example 'mycompany' for mycompany.salesmate.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"id":{"description":"Company ID.","maxLength":200,"title":"Id","type":"string"}},"required":["workspace","id"],"title":"get_companyArguments","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 the fields Salesmate returns for it. Use for \"Show Salesmate deal 12\".","description":"Get one deal by ID with the fields Salesmate returns for it. Use for \"Show Salesmate deal 12\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Salesmate workspace name: the part before .salesmate.io, for example 'mycompany' for mycompany.salesmate.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"id":{"description":"Deal ID.","maxLength":200,"title":"Id","type":"string"}},"required":["workspace","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/get_activity":{"post":{"operationId":"get_activity","summary":"Get one activity (task, call, meeting) by ID with the fields Salesmate returns for it. Use for \"Show Salesmate activity ","description":"Get one activity (task, call, meeting) by ID with the fields Salesmate returns for it. Use for \"Show Salesmate activity 7\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Salesmate workspace name: the part before .salesmate.io, for example 'mycompany' for mycompany.salesmate.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"id":{"description":"Activity ID.","maxLength":200,"title":"Id","type":"string"}},"required":["workspace","id"],"title":"get_activityArguments","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_record_notes":{"post":{"operationId":"list_record_notes","summary":"List the notes attached to one record. Module IDs: 1 contact, 2 activity, 4 deal, 5 company. Use for \"What notes are on ","description":"List the notes attached to one record. Module IDs: 1 contact, 2 activity, 4 deal, 5 company. Use for \"What notes are on Salesmate deal 12\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Your Salesmate workspace name: the part before .salesmate.io, for example 'mycompany' for mycompany.salesmate.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Workspace","type":"string"},"module_id":{"description":"Module of the record: 1 contact, 2 activity, 4 deal, 5 company.","maximum":100,"minimum":1,"title":"Module Id","type":"integer"},"object_id":{"description":"ID of the record the notes belong to.","maxLength":200,"title":"Object Id","type":"string"}},"required":["workspace","module_id","object_id"],"title":"list_record_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}}}}