{"openapi":"3.1.0","info":{"title":"SignalWire (BYOK) API","version":"0.1.0","description":"SignalWire (BYOK) lets an AI assistant read your own SignalWire data through the SignalWire API with a key you supply (SignalWire Project ID). Read-only: 9 tools (list_phone_numbers, list_short_codes, list_number_groups, list_domain_applications, list_queues, list_video_rooms, list_messaging_brands, list_brand_campaigns, list_fabric_resources). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-signalwire.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-signalwire/docs"},"termsOfService":"https://connectorbay.com/byok-signalwire/terms"},"servers":[{"url":"https://byok-signalwire.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-signalwire/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_phone_numbers":{"post":{"operationId":"list_phone_numbers","summary":"List the phone numbers owned by the project with capabilities, type, E911 status, caller ID name, next billing date and ","description":"List the phone numbers owned by the project with capabilities, type, E911 status, caller ID name, next billing date and call handler. Needs the Numbers scope. Use for \"Which phone numbers do we own in SignalWire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space":{"description":"Your SignalWire Space subdomain, the first part of <space>.signalwire.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Space","type":"string"},"filter_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only numbers whose name contains this text.","title":"Filter Name"},"filter_number":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only numbers containing this E.164 text, for example +1415.","title":"Filter Number"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 1000, default 50).","title":"Page Size"}},"required":["space"],"title":"list_phone_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_short_codes":{"post":{"operationId":"list_short_codes","summary":"List the project's SMS short codes with capabilities, country, code type, lease duration and next billing date. Use for ","description":"List the project's SMS short codes with capabilities, country, code type, lease duration and next billing date. Use for \"What short codes does our SignalWire project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space":{"description":"Your SignalWire Space subdomain, the first part of <space>.signalwire.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Space","type":"string"},"filter_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only short codes whose name contains this text.","title":"Filter Name"},"filter_number":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only short codes containing this number text.","title":"Filter Number"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 1000, default 50).","title":"Page Size"}},"required":["space"],"title":"list_short_codesArguments","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_groups":{"post":{"operationId":"list_number_groups","summary":"List number groups (pools used to pick a sender) with sticky-sender flag and phone number count. Use for \"What number gr","description":"List number groups (pools used to pick a sender) with sticky-sender flag and phone number count. Use for \"What number groups are set up in SignalWire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space":{"description":"Your SignalWire Space subdomain, the first part of <space>.signalwire.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Space","type":"string"},"filter_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only groups whose name contains this text.","title":"Filter Name"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 1000, default 50).","title":"Page Size"}},"required":["space"],"title":"list_number_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_domain_applications":{"post":{"operationId":"list_domain_applications","summary":"List SIP domain applications with domain, name, identifier, IP-auth flag and call handler (the IP allow-list itself is l","description":"List SIP domain applications with domain, name, identifier, IP-auth flag and call handler (the IP allow-list itself is left out). Use for \"Which SIP domain applications exist in SignalWire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space":{"description":"Your SignalWire Space subdomain, the first part of <space>.signalwire.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Space","type":"string"},"filter_domain":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only applications whose domain contains this text.","title":"Filter Domain"},"filter_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only applications whose name contains this text.","title":"Filter Name"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 1000, default 50).","title":"Page Size"}},"required":["space"],"title":"list_domain_applicationsArguments","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_queues":{"post":{"operationId":"list_queues","summary":"List call queues with maximum size, current size and average wait time in seconds. Use for \"How long is the wait in our ","description":"List call queues with maximum size, current size and average wait time in seconds. Use for \"How long is the wait in our SignalWire call queues\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space":{"description":"Your SignalWire Space subdomain, the first part of <space>.signalwire.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Space","type":"string"}},"required":["space"],"title":"list_queuesArguments","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_video_rooms":{"post":{"operationId":"list_video_rooms","summary":"List video rooms with name, maximum members, quality, layout and join window. Use for \"What video rooms are configured i","description":"List video rooms with name, maximum members, quality, layout and join window. Use for \"What video rooms are configured in SignalWire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space":{"description":"Your SignalWire Space subdomain, the first part of <space>.signalwire.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Space","type":"string"},"starts_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only rooms with a join_from time on or after this RFC 3339 date or datetime.","title":"Starts After"},"ends_before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only rooms with a join_until time on or before this RFC 3339 date or datetime.","title":"Ends Before"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page (1 to 1000, default 50).","title":"Page Size"}},"required":["space"],"title":"list_video_roomsArguments","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_messaging_brands":{"post":{"operationId":"list_messaging_brands","summary":"List 10DLC messaging registry brands with name, legal company name, state, legal entity type and vertical (tax id and co","description":"List 10DLC messaging registry brands with name, legal company name, state, legal entity type and vertical (tax id and contacts are left out). Use for \"What SMS registry brands are registered in SignalWire and what state are they in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space":{"description":"Your SignalWire Space subdomain, the first part of <space>.signalwire.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Space","type":"string"},"filter_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only brands whose name contains this text.","title":"Filter Name"},"filter_state":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Only brands in this registration state, for example pending or complete.","title":"Filter State"}},"required":["space"],"title":"list_messaging_brandsArguments","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_brand_campaigns":{"post":{"operationId":"list_brand_campaigns","summary":"List the messaging campaigns registered under one brand with name, state and SMS use case. Use for \"Which SMS campaigns ","description":"List the messaging campaigns registered under one brand with name, state and SMS use case. Use for \"Which SMS campaigns are registered for brand b1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space":{"description":"Your SignalWire Space subdomain, the first part of <space>.signalwire.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Space","type":"string"},"id":{"description":"Brand id from list_messaging_brands.","maxLength":200,"title":"Id","type":"string"},"filter_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only campaigns whose name contains this text.","title":"Filter Name"},"filter_state":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Only campaigns in this state.","title":"Filter State"}},"required":["space","id"],"title":"list_brand_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_fabric_resources":{"post":{"operationId":"list_fabric_resources","summary":"List Call Fabric resources (AI agents, call flows, SWML scripts and similar) with display name, type and dates. Use for ","description":"List Call Fabric resources (AI agents, call flows, SWML scripts and similar) with display name, type and dates. Use for \"What Call Fabric resources exist in SignalWire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space":{"description":"Your SignalWire Space subdomain, the first part of <space>.signalwire.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Space","type":"string"}},"required":["space"],"title":"list_fabric_resourcesArguments","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}}}}