{"openapi":"3.1.0","info":{"title":"Sequin (BYOK) API","version":"0.1.0","description":"Sequin (BYOK) lets an AI assistant read your own Sequin data through the Sequin API with a key you supply (Sequin Cloud API token). Read-only: 8 tools (list_sinks, get_sink, list_sink_backfills, get_sink_backfill, list_postgres_databases, get_postgres_database, list_http_endpoints, get_http_endpoint). 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-sequin.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sequin/docs"},"termsOfService":"https://connectorbay.com/byok-sequin/terms"},"servers":[{"url":"https://byok-sequin.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sequin/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_sinks":{"post":{"operationId":"list_sinks","summary":"List sink consumers (Postgres change streams to Kafka, webhooks, queues and more) with status, source database, destinat","description":"List sink consumers (Postgres change streams to Kafka, webhooks, queues and more) with status, source database, destination type, actions, tables, filter, transform and health. Use for \"Which Sequin sinks are active and healthy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_sinksArguments","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_sink":{"post":{"operationId":"get_sink","summary":"Get one sink consumer by id or name: status, tables, actions, filter, transform, routing, batch size and health; destina","description":"Get one sink consumer by id or name: status, tables, actions, filter, transform, routing, batch size and health; destination credentials are not returned. Use for \"Show Sequin sink kafka-ids\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sink_id_or_name":{"description":"Id or name of the sink consumer, from list_sinks.","maxLength":200,"title":"Sink Id Or Name","type":"string"}},"required":["sink_id_or_name"],"title":"get_sinkArguments","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_sink_backfills":{"post":{"operationId":"list_sink_backfills","summary":"List the backfills of a sink (one-off copies of existing table rows) with state, table, row counts and times. Use for \"H","description":"List the backfills of a sink (one-off copies of existing table rows) with state, table, row counts and times. Use for \"How did the Sequin backfills of sink kafka-ids go\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sink_id_or_name":{"description":"Id or name of the sink consumer, from list_sinks.","maxLength":200,"title":"Sink Id Or Name","type":"string"}},"required":["sink_id_or_name"],"title":"list_sink_backfillsArguments","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_sink_backfill":{"post":{"operationId":"get_sink_backfill","summary":"Get one backfill of a sink: state, table, initial, processed and ingested row counts and times. Use for \"Is Sequin backf","description":"Get one backfill of a sink: state, table, initial, processed and ingested row counts and times. Use for \"Is Sequin backfill e0c918bb finished\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sink_id_or_name":{"description":"Id or name of the sink consumer, from list_sinks.","maxLength":200,"title":"Sink Id Or Name","type":"string"},"backfill_id":{"description":"Id of the backfill, from list_sink_backfills.","maxLength":200,"title":"Backfill Id","type":"string"}},"required":["sink_id_or_name","backfill_id"],"title":"get_sink_backfillArguments","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_postgres_databases":{"post":{"operationId":"list_postgres_databases","summary":"List the Postgres database connections with host, port, database name, SSL flag and replication slot status; passwords a","description":"List the Postgres database connections with host, port, database name, SSL flag and replication slot status; passwords are never requested. Use for \"Which Postgres databases is Sequin replicating from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_postgres_databasesArguments","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_postgres_database":{"post":{"operationId":"get_postgres_database","summary":"Get one Postgres database connection by id or name, with its replication slot and publication status; the password is ne","description":"Get one Postgres database connection by id or name, with its replication slot and publication status; the password is never requested. Use for \"Is the replication slot of Sequin database production_rds active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"database_id_or_name":{"description":"Id or name of the database connection, from list_postgres_databases.","maxLength":200,"title":"Database Id Or Name","type":"string"}},"required":["database_id_or_name"],"title":"get_postgres_databaseArguments","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_http_endpoints":{"post":{"operationId":"list_http_endpoints","summary":"List HTTP endpoints used by webhook sinks (name and URL, or local path); request headers are not returned. Use for \"Whic","description":"List HTTP endpoints used by webhook sinks (name and URL, or local path); request headers are not returned. Use for \"Which webhook endpoints does Sequin deliver to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_http_endpointsArguments","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_http_endpoint":{"post":{"operationId":"get_http_endpoint","summary":"Get one webhook HTTP endpoint by id or name (name and URL, or local path); headers are not returned. Use for \"What URL i","description":"Get one webhook HTTP endpoint by id or name (name and URL, or local path); headers are not returned. Use for \"What URL is Sequin endpoint my-endpoint\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"endpoint_id_or_name":{"description":"Id or name of the HTTP endpoint, from list_http_endpoints.","maxLength":200,"title":"Endpoint Id Or Name","type":"string"}},"required":["endpoint_id_or_name"],"title":"get_http_endpointArguments","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}}}}