{"openapi":"3.1.0","info":{"title":"Sinch SMS (BYOK) API","version":"0.1.0","description":"Sinch SMS (BYOK) lets an AI assistant read your own Sinch SMS data through the Sinch SMS API with a key you supply (service plan API token). Read-only: 6 tools (list_batches, get_batch, list_delivery_reports, get_batch_delivery_report, list_groups, list_inbound_metadata). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sinch-sms.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sinch-sms/docs"},"termsOfService":"https://connectorbay.com/byok-sinch-sms/terms"},"servers":[{"url":"https://byok-sinch-sms.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sinch-sms/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_batches":{"post":{"operationId":"list_batches","summary":"List SMS batches created in the last 14 days: batch id, sender, type, creation and modification time, cancel flag and cl","description":"List SMS batches created in the last 14 days: batch id, sender, type, creation and modification time, cancel flag and client reference. Message text and recipients are not returned. Use for \"Which SMS batches did I send on Sinch this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Sinch SMS region of your service plan: us, eu, au, br or ca (the first label of the API host).","enum":["us","eu","au","br","ca"],"title":"Region","type":"string"},"service_plan_id":{"description":"Your SMS service plan id from the Sinch dashboard (SMS, APIs).","maxLength":200,"title":"Service Plan Id","type":"string"},"start_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items at or after this ISO 8601 date-time, for example 2026-10-01T00:00:00Z.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items before this ISO 8601 date-time.","title":"End Date"},"from_number":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only batches sent from this sender number or short code.","title":"From Number"},"client_reference":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only batches with this client reference.","title":"Client Reference"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, counting from 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["region","service_plan_id"],"title":"list_batchesArguments","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_batch":{"post":{"operationId":"get_batch","summary":"Get one SMS batch's metadata by id (sender, type, times, cancel flag, delivery report mode); text and recipients are not","description":"Get one SMS batch's metadata by id (sender, type, times, cancel flag, delivery report mode); text and recipients are not returned. Use for \"What is the state of Sinch SMS batch 01B\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Sinch SMS region of your service plan: us, eu, au, br or ca (the first label of the API host).","enum":["us","eu","au","br","ca"],"title":"Region","type":"string"},"service_plan_id":{"description":"Your SMS service plan id from the Sinch dashboard (SMS, APIs).","maxLength":200,"title":"Service Plan Id","type":"string"},"batch_id":{"description":"Batch id returned when the batch was created.","maxLength":200,"title":"Batch Id","type":"string"}},"required":["region","service_plan_id","batch_id"],"title":"get_batchArguments","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_delivery_reports":{"post":{"operationId":"list_delivery_reports","summary":"List finished per-recipient delivery reports (default last 24 hours): batch id, status, error code, operator, parts and ","description":"List finished per-recipient delivery reports (default last 24 hours): batch id, status, error code, operator, parts and time. Filter by status or error code (comma-separated). Use for \"Which Sinch SMS messages failed delivery in the last day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Sinch SMS region of your service plan: us, eu, au, br or ca (the first label of the API host).","enum":["us","eu","au","br","ca"],"title":"Region","type":"string"},"service_plan_id":{"description":"Your SMS service plan id from the Sinch dashboard (SMS, APIs).","maxLength":200,"title":"Service Plan Id","type":"string"},"start_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items at or after this ISO 8601 date-time, for example 2026-10-01T00:00:00Z.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items before this ISO 8601 date-time.","title":"End Date"},"status":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated statuses such as Delivered, Failed, Expired, Rejected.","title":"Status"},"code":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated delivery error codes such as 401,402.","title":"Code"},"client_reference":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only reports with this client reference.","title":"Client Reference"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, counting from 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["region","service_plan_id"],"title":"list_delivery_reportsArguments","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_batch_delivery_report":{"post":{"operationId":"get_batch_delivery_report","summary":"Get a delivery report for one batch: count per status and error code (summary) or with recipient numbers (full). Use for","description":"Get a delivery report for one batch: count per status and error code (summary) or with recipient numbers (full). Use for \"How many messages of Sinch batch 01B were delivered\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Sinch SMS region of your service plan: us, eu, au, br or ca (the first label of the API host).","enum":["us","eu","au","br","ca"],"title":"Region","type":"string"},"service_plan_id":{"description":"Your SMS service plan id from the Sinch dashboard (SMS, APIs).","maxLength":200,"title":"Service Plan Id","type":"string"},"batch_id":{"description":"Batch id returned when the batch was created.","maxLength":200,"title":"Batch Id","type":"string"},"type":{"anyOf":[{"enum":["summary","full"],"type":"string"},{"type":"null"}],"default":null,"description":"Report type: summary (default) or full.","title":"Type"},"status":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated statuses to include.","title":"Status"}},"required":["region","service_plan_id","batch_id"],"title":"get_batch_delivery_reportArguments","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_groups":{"post":{"operationId":"list_groups","summary":"List recipient groups with name, size, child groups and creation time (newest first). Use for \"Which recipient groups do","description":"List recipient groups with name, size, child groups and creation time (newest first). Use for \"Which recipient groups do I have in Sinch SMS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Sinch SMS region of your service plan: us, eu, au, br or ca (the first label of the API host).","enum":["us","eu","au","br","ca"],"title":"Region","type":"string"},"service_plan_id":{"description":"Your SMS service plan id from the Sinch dashboard (SMS, APIs).","maxLength":200,"title":"Service Plan Id","type":"string"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, counting from 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["region","service_plan_id"],"title":"list_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_inbound_metadata":{"post":{"operationId":"list_inbound_metadata","summary":"List incoming messages' metadata, newest first: id, sender, receiving number, time and operator. Message text is not ret","description":"List incoming messages' metadata, newest first: id, sender, receiving number, time and operator. Message text is not returned. Use for \"Which inbound SMS arrived on my Sinch numbers today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Sinch SMS region of your service plan: us, eu, au, br or ca (the first label of the API host).","enum":["us","eu","au","br","ca"],"title":"Region","type":"string"},"service_plan_id":{"description":"Your SMS service plan id from the Sinch dashboard (SMS, APIs).","maxLength":200,"title":"Service Plan Id","type":"string"},"start_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items at or after this ISO 8601 date-time, for example 2026-10-01T00:00:00Z.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only items before this ISO 8601 date-time.","title":"End Date"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, counting from 0.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["region","service_plan_id"],"title":"list_inbound_metadataArguments","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}}}}