{"openapi":"3.1.0","info":{"title":"Batch (BYOK) API","version":"0.1.0","description":"Batch (BYOK) lets an AI assistant read your own Batch data through the Batch API with a key you supply (Batch REST API key). Read-only: 9 tools (list_orchestrations, get_orchestration, get_orchestration_stats, list_segments, list_audiences, get_audience, list_catalogs, get_catalog, list_export_requests). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-batch.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-batch/docs"},"termsOfService":"https://connectorbay.com/byok-batch/terms"},"servers":[{"url":"https://byok-batch.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-batch/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_orchestrations":{"post":{"operationId":"list_orchestrations","summary":"List campaigns, recurring and trigger orchestrations (push, in-app, email, SMS) newest first, with status, channels and ","description":"List campaigns, recurring and trigger orchestrations (push, in-app, email, SMS) newest first, with status, channels and platforms; filter by one status, type or channel. Use for \"Which Batch push campaigns are running right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 100, default 10).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the next_from value of the previous answer (omit on the first call).","title":"Cursor"},"status":{"anyOf":[{"enum":["draft","running","completed","stopped"],"type":"string"},{"type":"null"}],"default":null,"description":"Only orchestrations with this status (default: running and completed).","title":"Status"},"type":{"anyOf":[{"enum":["campaign","recurring","trigger","warmup"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this type: campaign, recurring, trigger or warmup.","title":"Type"},"channels":{"anyOf":[{"enum":["email","push","in-app","sms","universal"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this channel: email, push, in-app, sms or universal.","title":"Channels"}},"title":"list_orchestrationsArguments","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_orchestration":{"post":{"operationId":"get_orchestration","summary":"Get one push campaign in detail: status, platforms, A/B test settings, targeting and the message versions (title, body, ","description":"Get one push campaign in detail: status, platforms, A/B test settings, targeting and the message versions (title, body, deeplinks). Use for \"What does Batch push campaign abc123 say and who does it target\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"orchestration_id":{"description":"Id of the push campaign (from list_orchestrations).","maxLength":200,"title":"Orchestration Id","type":"string"}},"required":["orchestration_id"],"title":"get_orchestrationArguments","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_orchestration_stats":{"post":{"operationId":"get_orchestration_stats","summary":"Get delivery statistics of an orchestration for a date range: sent, delivered, opens, clicks, conversions and revenue pe","description":"Get delivery statistics of an orchestration for a date range: sent, delivered, opens, clicks, conversions and revenue per day. Use for \"How did Batch campaign abc123 perform last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"orchestration_id":{"description":"Id of the orchestration (from list_orchestrations).","maxLength":200,"title":"Orchestration Id","type":"string"},"from_date":{"description":"First day as yyyy-MM-dd, at most 6 months ago.","maxLength":200,"title":"From Date","type":"string"},"to_date":{"description":"Last day as yyyy-MM-dd.","maxLength":200,"title":"To Date","type":"string"},"include_platforms":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to add per-platform figures (android, ios, web).","title":"Include Platforms"}},"required":["orchestration_id","from_date","to_date"],"title":"get_orchestration_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_segments":{"post":{"operationId":"list_segments","summary":"List the segments defined in the project with their codes and display names. Use for \"Which segments exist in my Batch p","description":"List the segments defined in the project with their codes and display names. Use for \"Which segments exist in my Batch project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 100, default 10).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the next_from value of the previous answer (omit on the first call).","title":"Cursor"}},"title":"list_segmentsArguments","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_audiences":{"post":{"operationId":"list_audiences","summary":"List uploaded audiences (custom ids, emails or install ids) with size and indexing state. Use for \"Which audiences have ","description":"List uploaded audiences (custom ids, emails or install ids) with size and indexing state. Use for \"Which audiences have I uploaded to Batch\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 100, default 10).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the next_from value of the previous answer (omit on the first call).","title":"Cursor"}},"title":"list_audiencesArguments","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_audience":{"post":{"operationId":"get_audience","summary":"Get one audience by name: type, number of ids, indexing state and dates. Use for \"How many ids are in my Batch audience ","description":"Get one audience by name: type, number of ids, indexing state and dates. Use for \"How many ids are in my Batch audience vip-users\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Audience name (from list_audiences).","maxLength":200,"title":"Name","type":"string"}},"required":["name"],"title":"get_audienceArguments","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_catalogs":{"post":{"operationId":"list_catalogs","summary":"List item catalogs with their field definitions, item counts, size and indexing state. Use for \"Which product catalogs d","description":"List item catalogs with their field definitions, item counts, size and indexing state. Use for \"Which product catalogs does my Batch project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 100, default 10).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the next_from value of the previous answer (omit on the first call).","title":"Cursor"}},"title":"list_catalogsArguments","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_catalog":{"post":{"operationId":"get_catalog","summary":"Get one catalog by name: fields, item count, size, indexing state and dates. Use for \"What fields does my Batch catalog ","description":"Get one catalog by name: fields, item count, size, indexing state and dates. Use for \"What fields does my Batch catalog products have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Catalog name (from list_catalogs).","maxLength":200,"title":"Name","type":"string"}},"required":["name"],"title":"get_catalogArguments","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_export_requests":{"post":{"operationId":"list_export_requests","summary":"List data export requests of the last 3 months with scope, status and request, completion and start dates (file links ar","description":"List data export requests of the last 3 months with scope, status and request, completion and start dates (file links are not returned). Use for \"Did my last Batch profile export finish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 100, default 10).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the next_from value of the previous answer (omit on the first call).","title":"Cursor"}},"title":"list_export_requestsArguments","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}}}}