{"openapi":"3.1.0","info":{"title":"DIDWW (BYOK) API","version":"0.1.0","description":"DIDWW (BYOK) lets an AI assistant read your own DIDWW data through the DIDWW API with a key you supply (DIDWW API key). Read-only: 9 tools (get_balance, list_dids, list_countries, list_cities, list_did_groups, list_orders, list_voice_in_trunks, list_voice_out_trunks, list_capacity_pools). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached;...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-didww.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-didww/docs"},"termsOfService":"https://connectorbay.com/byok-didww/terms"},"servers":[{"url":"https://byok-didww.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-didww/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_balance":{"post":{"operationId":"get_balance","summary":"Show the account's prepaid balance, available credit and the net total. Use for \"How much prepaid balance does my DIDWW ","description":"Show the account's prepaid balance, available credit and the net total. Use for \"How much prepaid balance does my DIDWW account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_balanceArguments","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_dids":{"post":{"operationId":"list_dids","summary":"List the phone numbers (DIDs) on the account with description, state flags, capacity limit, expiry and renewal cycles. F","description":"List the phone numbers (DIDs) on the account with description, state flags, capacity limit, expiry and renewal cycles. Filters narrow by number text, description or state. Use for \"Which of my DIDWW numbers expire soonest\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"number":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by DID number (digits in international format without +).","title":"Number"},"description":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by the description you gave the number.","title":"Description"},"terminated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for numbers already marked for termination, false for those not.","title":"Terminated"},"blocked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for blocked numbers, false for those not.","title":"Blocked"},"sort":{"anyOf":[{"enum":["number","-number","expires_at","-expires_at","created_at","-created_at","description"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, prefix with - for descending.","title":"Sort"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page, 1 to 100 (default 50).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_didsArguments","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_countries":{"post":{"operationId":"list_countries","summary":"List the countries DIDWW has number coverage in, with calling prefix and ISO code. The list is not paginated. Use for \"W","description":"List the countries DIDWW has number coverage in, with calling prefix and ISO code. The list is not paginated. Use for \"Which calling prefix does DIDWW list for Germany\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by country name, for example 'Germany'.","title":"Name"},"iso":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by two-letter ISO code, for example 'DE'.","title":"Iso"},"is_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only countries where numbers can currently be bought.","title":"Is Available"}},"title":"list_countriesArguments","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_cities":{"post":{"operationId":"list_cities","summary":"List the cities DIDWW has numbers in, optionally for one country (use the country id from list_countries). Use for \"Whic","description":"List the cities DIDWW has numbers in, optionally for one country (use the country id from list_countries). Use for \"Which German cities does DIDWW cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"country_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Country id (a UUID from list_countries) to restrict the cities to.","title":"Country Id"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by city name.","title":"Name"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page, 1 to 100 (default 50).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_citiesArguments","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_did_groups":{"post":{"operationId":"list_did_groups","summary":"List DID groups: the number blocks DIDWW sells per city or area code, with prefix, features (voice_in, sms_in and simila","description":"List DID groups: the number blocks DIDWW sells per city or area code, with prefix, features (voice_in, sms_in and similar) and metering. Use for \"Which DIDWW number groups in Berlin support SMS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"country_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Country id (UUID from list_countries) to restrict to.","title":"Country Id"},"area_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"City or area name, case-insensitive, for example 'London'.","title":"Area Name"},"features":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated required features from voice_in, voice_out, t38, sms_in, p2p, a2p, emergency, cnam_out.","title":"Features"},"is_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only groups with numbers in stock.","title":"Is Available"}},"title":"list_did_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_orders":{"post":{"operationId":"list_orders","summary":"List the account's orders with status (pending, completed, canceled), amount, reference and creation time. Use for \"What","description":"List the account's orders with status (pending, completed, canceled), amount, reference and creation time. Use for \"What DIDWW orders did I place this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated order statuses to keep: pending, completed, canceled.","title":"Status"},"reference":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated order references to match.","title":"Reference"},"created_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only orders created at or after this ISO 8601 time.","title":"Created After"},"created_before":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only orders created at or before this ISO 8601 time.","title":"Created Before"},"sort":{"anyOf":[{"enum":["created_at","-created_at","amount","-amount","status"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, prefix with - for descending.","title":"Sort"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page, 1 to 100 (default 50).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_ordersArguments","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_voice_in_trunks":{"post":{"operationId":"list_voice_in_trunks","summary":"List inbound voice trunks with name, priority, weight, capacity limit and ringing timeout. SIP credentials in the trunk ","description":"List inbound voice trunks with name, priority, weight, capacity limit and ringing timeout. SIP credentials in the trunk configuration are not returned by this tool. Use for \"What inbound trunks do I have on DIDWW and what capacity does each have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by exact trunk name.","title":"Name"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page, 1 to 100 (default 50).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_voice_in_trunksArguments","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_voice_out_trunks":{"post":{"operationId":"list_voice_out_trunks","summary":"List outbound voice trunks with status (active or blocked), capacity, 24-hour spend threshold and destination rules. Use","description":"List outbound voice trunks with status (active or blocked), capacity, 24-hour spend threshold and destination rules. Use for \"Is my DIDWW outbound trunk active or blocked\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name_contains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by text contained in the trunk name.","title":"Name Contains"},"status":{"anyOf":[{"enum":["active","blocked"],"type":"string"},{"type":"null"}],"default":null,"description":"Filter by status.","title":"Status"},"threshold_reached":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only trunks that hit the 24-hour spend threshold.","title":"Threshold Reached"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page, 1 to 100 (default 50).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_voice_out_trunksArguments","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_capacity_pools":{"post":{"operationId":"list_capacity_pools","summary":"List capacity pools (purchased simultaneous-call channels) with total and assigned channel counts, renewal date and pric","description":"List capacity pools (purchased simultaneous-call channels) with total and assigned channel counts, renewal date and prices. Use for \"How many channels are free in my DIDWW capacity pool\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Items per page, 1 to 100 (default 50).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"}},"title":"list_capacity_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}}}}