{"openapi":"3.1.0","info":{"title":"Vero (BYOK) API","version":"0.1.0","description":"Vero (BYOK) lets an AI assistant read your own Vero data through the Vero API with a key you supply (Vero Campaigns API secret key (not the Track API key)). Read-only: 11 tools (list_broadcasts, get_broadcast, list_broadcast_messages, list_broadcast_message_contents, list_journeys, get_journey, list_journey_messages, list_journey_message_contents, list_topics, get_topic, get_campaign). The BYOK...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vero.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vero/docs"},"termsOfService":"https://connectorbay.com/byok-vero/terms"},"servers":[{"url":"https://byok-vero.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vero/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_broadcasts":{"post":{"operationId":"list_broadcasts","summary":"List broadcasts with name, channel, schedule type, status and labels, newest first. Use for \"Which broadcasts have I sen","description":"List broadcasts with name, channel, schedule type, status and labels, newest first. Use for \"Which broadcasts have I sent in Vero\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Page size (1 to 100, default 25).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the next_cursor value of the previous response.","title":"Cursor"},"sort":{"anyOf":[{"enum":["updated_at_desc","updated_at_asc","created_at_desc","created_at_asc","name_asc","name_desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order.","title":"Sort"},"status":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated statuses (draft, scheduled, sending, sent, cancelled, active, paused, archived).","title":"Status"}},"title":"list_broadcastsArguments","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_broadcast":{"post":{"operationId":"get_broadcast","summary":"Get one broadcast with its name, channel, schedule type, status and labels. Use for \"What is the status of Vero broadcas","description":"Get one broadcast with its name, channel, schedule type, status and labels. Use for \"What is the status of Vero broadcast 4211\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Vero broadcast id from list_broadcasts.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_broadcastArguments","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_broadcast_messages":{"post":{"operationId":"list_broadcast_messages","summary":"List the messages (A/B test arms) of a broadcast with sender, reply-to and active flag. Use for \"Which message variants ","description":"List the messages (A/B test arms) of a broadcast with sender, reply-to and active flag. Use for \"Which message variants does Vero broadcast 4211 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"broadcast_id":{"description":"Vero broadcast id from list_broadcasts.","minimum":1,"title":"Broadcast Id","type":"integer"}},"required":["broadcast_id"],"title":"list_broadcast_messagesArguments","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_broadcast_message_contents":{"post":{"operationId":"list_broadcast_message_contents","summary":"List the localized contents of a broadcast message with locale, subject line and preheader text. Use for \"What subject l","description":"List the localized contents of a broadcast message with locale, subject line and preheader text. Use for \"What subject lines does Vero broadcast 4211 message 8120 use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"broadcast_id":{"description":"Vero broadcast id from list_broadcasts.","minimum":1,"title":"Broadcast Id","type":"integer"},"message_id":{"description":"Message id from list_broadcast_messages.","minimum":1,"title":"Message Id","type":"integer"}},"required":["broadcast_id","message_id"],"title":"list_broadcast_message_contentsArguments","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_journeys":{"post":{"operationId":"list_journeys","summary":"List triggered journeys with name, description and status, most recently updated first. Use for \"Which automated journey","description":"List triggered journeys with name, description and status, most recently updated first. Use for \"Which automated journeys are active in Vero\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Page size (1 to 100, default 25).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the next_cursor value of the previous response.","title":"Cursor"},"sort":{"anyOf":[{"enum":["updated_at_desc","updated_at_asc","created_at_desc","created_at_asc","name_asc","name_desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order.","title":"Sort"},"status":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated statuses, for example draft,active.","title":"Status"}},"title":"list_journeysArguments","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_journey":{"post":{"operationId":"get_journey","summary":"Get a journey with its event trigger and the full graph of nodes (emails, delays, branches) and edges. Use for \"What ste","description":"Get a journey with its event trigger and the full graph of nodes (emails, delays, branches) and edges. Use for \"What steps does Vero journey 977 contain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Vero journey id from list_journeys.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_journeyArguments","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_journey_messages":{"post":{"operationId":"list_journey_messages","summary":"List the message nodes of a journey with sender, reply-to and their localized contents. Use for \"Which emails does Vero ","description":"List the message nodes of a journey with sender, reply-to and their localized contents. Use for \"Which emails does Vero journey 977 send\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"journey_id":{"description":"Vero journey id from list_journeys.","minimum":1,"title":"Journey Id","type":"integer"}},"required":["journey_id"],"title":"list_journey_messagesArguments","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_journey_message_contents":{"post":{"operationId":"list_journey_message_contents","summary":"List the localized contents of a journey message with locale, subject line and preheader text. Use for \"What subject lin","description":"List the localized contents of a journey message with locale, subject line and preheader text. Use for \"What subject lines does Vero journey 977 message 301 use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"journey_id":{"description":"Vero journey id from list_journeys.","minimum":1,"title":"Journey Id","type":"integer"},"message_id":{"description":"Journey message id from list_journey_messages.","minimum":1,"title":"Message Id","type":"integer"}},"required":["journey_id","message_id"],"title":"list_journey_message_contentsArguments","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_topics":{"post":{"operationId":"list_topics","summary":"List preference center topics with name, description and default subscription status. Use for \"Which subscription topics","description":"List preference center topics with name, description and default subscription status. Use for \"Which subscription topics exist in my Vero preference center\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Page size (1 to 100, default 25).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor: the next_cursor value of the previous response.","title":"Cursor"},"sort":{"anyOf":[{"enum":["position_asc","position_desc","updated_at_desc","updated_at_asc","created_at_desc","created_at_asc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order.","title":"Sort"}},"title":"list_topicsArguments","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_topic":{"post":{"operationId":"get_topic","summary":"Get one preference center topic with its name, description and default subscription status. Use for \"What is Vero topic ","description":"Get one preference center topic with its name, description and default subscription status. Use for \"What is Vero topic 31 about\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Topic id from list_topics.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_topicArguments","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":"Get a legacy campaign with its title, status, channel and scheduled time. Use for \"What is the status of Vero campaign 1","description":"Get a legacy campaign with its title, status, channel and scheduled time. Use for \"What is the status of Vero campaign 120\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Vero campaign id.","minimum":1,"title":"Id","type":"integer"}},"required":["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}}}}