{"openapi":"3.1.0","info":{"title":"Salesflare (BYOK) API","version":"0.1.0","description":"Salesflare (BYOK) lets an AI assistant read your own Salesflare data through the Salesflare API with a key you supply (Salesflare API key). Read-only: 10 tools (get_me, list_accounts, get_account, list_contacts, list_opportunities, list_tasks, list_pipelines, list_tags, list_users, list_workflows). The BYOK key travels with each request, is used for that one call only and is never stored, logged...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-salesflare.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-salesflare/docs"},"termsOfService":"https://connectorbay.com/byok-salesflare/terms"},"servers":[{"url":"https://byok-salesflare.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-salesflare/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_me":{"post":{"operationId":"get_me","summary":"Show the Salesflare user the key belongs to: name, email, role and team name. Use for \"Which Salesflare user is my API k","description":"Show the Salesflare user the key belongs to: name, email, role and team name. Use for \"Which Salesflare user is my API key for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_meArguments","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_accounts":{"post":{"operationId":"list_accounts","summary":"List Salesflare accounts (companies). The answer shape is not documented by Salesflare, so fields are returned as the AP","description":"List Salesflare accounts (companies). The answer shape is not documented by Salesflare, so fields are returned as the API sends them (first 25 accounts). Filter by name, domain, tag name, country, hotness or creation date. Use for \"Show my Salesflare accounts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search across accounts.","title":"Search"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Account name to match.","title":"Name"},"domain":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Account web domain to match, for example example.com.","title":"Domain"},"tag_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only accounts having this tag name.","title":"Tag Name"},"country":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only accounts in this country.","title":"Country"},"hotness":{"anyOf":[{"maximum":3,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items with this hotness level: 1 (cold), 2 (warm) or 3 (hot).","title":"Hotness"},"creation_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only accounts created after this ISO 8601 time.","title":"Creation After"},"details":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True (API default) for full details, false for a shorter answer.","title":"Details"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many accounts to return (at least 1; the API default is 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"title":"list_accountsArguments","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_account":{"post":{"operationId":"get_account","summary":"Get one Salesflare account by its numeric id, as the API returns it (not documented by Salesflare). Use for \"Show Salesf","description":"Get one Salesflare account by its numeric id, as the API returns it (not documented by Salesflare). Use for \"Show Salesflare account 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Numeric Salesflare account id.","maximum":999999999999,"minimum":1,"title":"Account Id","type":"integer"}},"required":["account_id"],"title":"get_accountArguments","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_contacts":{"post":{"operationId":"list_contacts","summary":"List Salesflare contacts. The answer shape is not documented by Salesflare, so fields are returned as the API sends them","description":"List Salesflare contacts. The answer shape is not documented by Salesflare, so fields are returned as the API sends them (first 25). Filter by name, email, phone, account, tag, role or type. Use for \"Find Salesflare contacts named Smith\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search across contacts.","title":"Search"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Contact name to match.","title":"Name"},"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Email address to match.","title":"Email"},"phone_number":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Phone number to match.","title":"Phone Number"},"domain":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Email domain to match, for example example.com.","title":"Domain"},"account":{"anyOf":[{"maximum":999999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Numeric account id: only contacts of this account.","title":"Account"},"tag_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only contacts having this tag name.","title":"Tag Name"},"position_role":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only contacts with this job role.","title":"Position Role"},"type":{"anyOf":[{"enum":["customer","mycontacts"],"type":"string"},{"type":"null"}],"default":null,"description":"customer for contacts of customer accounts, mycontacts for your own.","title":"Type"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many contacts to return (at least 1; the API default is 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"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/list_opportunities":{"post":{"operationId":"list_opportunities","summary":"List Salesflare opportunities (deals). Shape not documented by Salesflare, so fields come as the API sends them (first 2","description":"List Salesflare opportunities (deals). Shape not documented by Salesflare, so fields come as the API sends them (first 25). Filter by name, stage, pipeline, account, value range or open/closed. Use for \"What open opportunities do I have in Salesflare\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search across opportunities.","title":"Search"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Opportunity name to match.","title":"Name"},"stage":{"anyOf":[{"maximum":999999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Numeric stage id from list_pipelines.","title":"Stage"},"pipeline":{"anyOf":[{"maximum":999999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Numeric pipeline id.","title":"Pipeline"},"account":{"anyOf":[{"maximum":999999999999,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Numeric account id.","title":"Account"},"closed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for closed opportunities only, false for open ones only.","title":"Closed"},"min_value":{"anyOf":[{"maximum":1000000000000,"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Smallest opportunity value.","title":"Min Value"},"max_value":{"anyOf":[{"maximum":1000000000000,"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Largest opportunity value.","title":"Max Value"},"hotness":{"anyOf":[{"maximum":3,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items with this hotness level: 1 (cold), 2 (warm) or 3 (hot).","title":"Hotness"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many opportunities to return (at least 1; the API default is 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"title":"list_opportunitiesArguments","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 Salesflare tasks (for the key's user by default). Shape not documented by Salesflare, so fields come as the API sen","description":"List Salesflare tasks (for the key's user by default). Shape not documented by Salesflare, so fields come as the API sends them (first 25). Use for \"What Salesflare tasks do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search tasks by name or description.","title":"Search"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many tasks to return (at least 1; the API default is 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results 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}},"/v1/tools/list_pipelines":{"post":{"operationId":"list_pipelines","summary":"List Salesflare sales pipelines with currency, default flag, whether archived and their dates. Use for \"What sales pipel","description":"List Salesflare sales pipelines with currency, default flag, whether archived and their dates. Use for \"What sales pipelines are set up in Salesflare\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Pipeline name to search for.","title":"Search"}},"title":"list_pipelinesArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List Salesflare tags with how many accounts, people and opportunities carry each. Use for \"Which tags exist in Salesflar","description":"List Salesflare tags with how many accounts, people and opportunities carry each. Use for \"Which tags exist in Salesflare\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Tag name to match.","title":"Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many tags to return (at least 1; the API default is 50).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"title":"list_tagsArguments","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_users":{"post":{"operationId":"list_users","summary":"List the users of your Salesflare team. Shape not documented by Salesflare, so fields come as the API sends them (first ","description":"List the users of your Salesflare team. Shape not documented by Salesflare, so fields come as the API sends them (first 25). Use for \"Who is on my Salesflare team\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search users by name or email.","title":"Search"},"only_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to hide disabled users.","title":"Only Enabled"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many users to return (at least 1; the API default is 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"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/list_workflows":{"post":{"operationId":"list_workflows","summary":"List Salesflare automation workflows with status, record type, goal and analytics counters. Use for \"Which Salesflare wo","description":"List Salesflare automation workflows with status, record type, goal and analytics counters. Use for \"Which Salesflare workflows are running\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Workflow name to search for.","title":"Search"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many workflows to return (at least 1; the API default is 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging.","title":"Offset"}},"title":"list_workflowsArguments","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}}}}