{"openapi":"3.1.0","info":{"title":"Ringba (BYOK) API","version":"0.1.0","description":"Ringba (BYOK) lets an AI assistant read your own Ringba data through the Ringba API with a key you supply (Ringba API access token). Read-only: 12 tools (get_account, list_campaigns, get_campaign, get_campaign_stats, list_publishers, get_publisher_stats, list_buyers, list_targets, get_target_counts, list_target_groups, list_numbers, list_number_pools). The BYOK key travels with each request, is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-ringba.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-ringba/docs"},"termsOfService":"https://connectorbay.com/byok-ringba/terms"},"servers":[{"url":"https://byok-ringba.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-ringba/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_account":{"post":{"operationId":"get_account","summary":"Show the Ringba account the token belongs to: account ID, name, time zone, enabled flag and creation time. Use it to fin","description":"Show the Ringba account the token belongs to: account ID, name, time zone, enabled flag and creation time. Use it to find the account ID the other tools need. Use for \"Which Ringba account is my token connected to and what is its account ID\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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_campaigns":{"post":{"operationId":"list_campaigns","summary":"List the active call campaigns with name, enabled flag, country, IVR setting, distribution method and whether setup is c","description":"List the active call campaigns with name, enabled flag, country, IVR setting, distribution method and whether setup is complete. Use for \"Which call campaigns do we run in Ringba\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"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/get_campaign":{"post":{"operationId":"get_campaign","summary":"Show one campaign: settings, default payout (amount, rev-share, conversion type), dial attempts, recording flag and whet","description":"Show one campaign: settings, default payout (amount, rev-share, conversion type), dial attempts, recording flag and whether RTB is on. Use for \"What are the payout and dial settings of this Ringba campaign\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"},"campaign_id":{"description":"Campaign ID (starts with CA); list them with list_campaigns.","maxLength":200,"title":"Campaign Id","type":"string"}},"required":["account_id","campaign_id"],"title":"get_campaignArguments","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_campaign_stats":{"post":{"operationId":"get_campaign_stats","summary":"Show call counts per campaign: total, this month, today, this hour and live calls right now, keyed by campaign ID. Use f","description":"Show call counts per campaign: total, this month, today, this hour and live calls right now, keyed by campaign ID. Use for \"How many calls did each Ringba campaign get this month and today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"get_campaign_statsArguments","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_publishers":{"post":{"operationId":"list_publishers","summary":"List publishers (affiliates and traffic sources) with name, enabled flag, sub ID and whether they may create numbers. Us","description":"List publishers (affiliates and traffic sources) with name, enabled flag, sub ID and whether they may create numbers. Use for \"Which publishers send us calls in Ringba\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"list_publishersArguments","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_publisher_stats":{"post":{"operationId":"get_publisher_stats","summary":"Show call counts per publisher: total, this month, today, this hour and live calls, keyed by publisher ID. Use for \"Whic","description":"Show call counts per publisher: total, this month, today, this hour and live calls, keyed by publisher ID. Use for \"Which Ringba publishers delivered the most calls this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"get_publisher_statsArguments","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_buyers":{"post":{"operationId":"list_buyers","summary":"List call buyers with name, enabled flag and whether they may pause targets or set concurrency caps. Use for \"Which buye","description":"List call buyers with name, enabled flag and whether they may pause targets or set concurrency caps. Use for \"Which buyers take our calls in Ringba\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"list_buyersArguments","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_targets":{"post":{"operationId":"list_targets","summary":"List call targets (where calls are routed) with name, enabled flag, call type, increment rule, time zone and daily and c","description":"List call targets (where calls are routed) with name, enabled flag, call type, increment rule, time zone and daily and concurrency caps (-1 means no cap). Use for \"Which routing targets do we have in Ringba and what caps do they have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"list_targetsArguments","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_target_counts":{"post":{"operationId":"get_target_counts","summary":"Show call counts and summed value for one target: total, this month, today, this hour and live calls. Use for \"How many ","description":"Show call counts and summed value for one target: total, this month, today, this hour and live calls. Use for \"How many calls has this Ringba target taken this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"},"target_id":{"description":"Target ID (starts with TA); list them with list_targets.","maxLength":200,"title":"Target Id","type":"string"}},"required":["account_id","target_id"],"title":"get_target_countsArguments","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_target_groups":{"post":{"operationId":"list_target_groups","summary":"List target groups (buyer groups of targets) with name, enabled flag, time zone and caps. Use for \"Which target groups a","description":"List target groups (buyer groups of targets) with name, enabled flag, time zone and caps. Use for \"Which target groups are set up in Ringba\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"list_target_groupsArguments","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_numbers":{"post":{"operationId":"list_numbers","summary":"List tracking phone numbers with display number, campaign, toll-free flag, auto-renew, activation and next charge date. ","description":"List tracking phone numbers with display number, campaign, toll-free flag, auto-renew, activation and next charge date. Use for \"Which tracking numbers do we own in Ringba and when do they renew\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"list_numbersArguments","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_number_pools":{"post":{"operationId":"list_number_pools","summary":"List dynamic number pools with name, pool size, rotation settings and hold time. Use for \"Which number pools do we use f","description":"List dynamic number pools with name, pool size, rotation settings and hold time. Use for \"Which number pools do we use for call tracking in Ringba\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Your Ringba account ID (starts with RA); get it with get_account.","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"list_number_poolsArguments","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}}}}