{"openapi":"3.1.0","info":{"title":"Secoda (BYOK) API","version":"0.1.0","description":"Secoda (BYOK) lets an AI assistant read your own Secoda data through the Secoda API with a key you supply (Secoda API key). Read-only: 11 tools (list_catalog_resources, get_resource, list_integrations, list_collections, list_tags, list_monitors, list_incidents, list_monitor_measurements, list_event_categories, list_failing_dbt_tests, list_manual_lineage). The BYOK key travels with each request,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-secoda.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-secoda/docs"},"termsOfService":"https://connectorbay.com/byok-secoda/terms"},"servers":[{"url":"https://byok-secoda.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-secoda/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_catalog_resources":{"post":{"operationId":"list_catalog_resources","summary":"List catalog resources (tables, columns, dashboards, databases, schemas, documents and more) with type, description, PII","description":"List catalog resources (tables, columns, dashboards, databases, schemas, documents and more) with type, description, PII and verified flags, row count and usage. Narrow with the filter, a URL-safe JSON object such as {\"operator\":\"exact\",\"field\":\"type\",\"value\":\"table\"}. Use for \"Which verified tables in Secoda are flagged as PII\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"},"filter":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":null,"description":"Optional JSON filter object, for example {\"operator\":\"exact\",\"field\":\"type\",\"value\":\"table\"} (see the Secoda API reference for operators).","title":"Filter"},"sort":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Optional JSON sort object (see the Secoda API reference); the default is by external usage, highest first.","title":"Sort"},"teams":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only resources of the team with this id.","title":"Teams"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["region"],"title":"list_catalog_resourcesArguments","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_resource":{"post":{"operationId":"get_resource","summary":"Get one catalog resource: type, description, PII and verified flags, row count, byte size, usage, parent and source inte","description":"Get one catalog resource: type, description, PII and verified flags, row count, byte size, usage, parent and source integration. Use for \"Tell me about Secoda resource 5b4f0c1a-1111-4222-8333-444455556666\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"},"resource_id":{"description":"Id of the resource, from list_catalog_resources.","maxLength":200,"title":"Resource Id","type":"string"}},"required":["region","resource_id"],"title":"get_resourceArguments","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_integrations":{"post":{"operationId":"list_integrations","summary":"List connected integrations (warehouses, BI tools, dbt, event tools) with type, extraction schedule and last and next ex","description":"List connected integrations (warehouses, BI tools, dbt, event tools) with type, extraction schedule and last and next extraction time; credentials are not returned. Use for \"Which integrations does Secoda have and when did they last sync\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"},"type":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only integrations of this type, for example snowflake, bigquery, looker or dbt.","title":"Type"}},"required":["region"],"title":"list_integrationsArguments","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_collections":{"post":{"operationId":"list_collections","summary":"List collections (curated groups of resources) with title, description, resource count, owner counts and verified flag. ","description":"List collections (curated groups of resources) with title, description, resource count, owner counts and verified flag. Use for \"Which Secoda collections exist and how many resources do they hold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"},"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only collections whose title matches this text.","title":"Title"}},"required":["region"],"title":"list_collectionsArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List the tags used to classify resources, with name, description and color. Use for \"Which tags exist in Secoda\".","description":"List the tags used to classify resources, with name, description and color. Use for \"Which tags exist in Secoda\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"}},"required":["region"],"title":"list_tagsArguments","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_monitors":{"post":{"operationId":"list_monitors","summary":"List data quality monitors with metric type, frequency, status, last run, last error and last measurement. Use for \"Whic","description":"List data quality monitors with metric type, frequency, status, last run, last error and last measurement. Use for \"Which Secoda monitors are in an incident or error state\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"}},"required":["region"],"title":"list_monitorsArguments","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_incidents":{"post":{"operationId":"list_incidents","summary":"List monitor incidents with status, summary, measured value and first and last seen times. Use for \"Which Secoda data in","description":"List monitor incidents with status, summary, measured value and first and last seen times. Use for \"Which Secoda data incidents are still active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"}},"required":["region"],"title":"list_incidentsArguments","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_monitor_measurements":{"post":{"operationId":"list_monitor_measurements","summary":"List measurements of one monitor (or one incident) with value and lower and upper thresholds. Use for \"Show the recent m","description":"List measurements of one monitor (or one incident) with value and lower and upper thresholds. Use for \"Show the recent measurements of Secoda monitor m1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"},"monitor":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Id of the monitor (give this or incident_id).","title":"Monitor"},"incident_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Id of the incident (give this or monitor).","title":"Incident Id"}},"required":["region"],"title":"list_monitor_measurementsArguments","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_event_categories":{"post":{"operationId":"list_event_categories","summary":"List event categories of the tracking plan (analytics event groups) with title, description and child count. Use for \"Wh","description":"List event categories of the tracking plan (analytics event groups) with title, description and child count. Use for \"Which event categories are in the Secoda tracking plan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"},"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only categories whose title matches this text.","title":"Title"}},"required":["region"],"title":"list_event_categoriesArguments","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_failing_dbt_tests":{"post":{"operationId":"list_failing_dbt_tests","summary":"List resources that have failing or warning dbt tests for one dbt integration, as resource ids. Use for \"Which resources","description":"List resources that have failing or warning dbt tests for one dbt integration, as resource ids. Use for \"Which resources have failing dbt tests in Secoda integration 9a1b\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"},"integration_id":{"description":"Id of the dbt integration, from list_integrations.","maxLength":200,"title":"Integration Id","type":"string"}},"required":["region","integration_id"],"title":"list_failing_dbt_testsArguments","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_manual_lineage":{"post":{"operationId":"list_manual_lineage","summary":"List manually defined lineage links between resources, optionally filtered by source or target resource id. Use for \"Wha","description":"List manually defined lineage links between resources, optionally filtered by source or target resource id. Use for \"What manual lineage does Secoda have from resource 5b4f\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"API host prefix of your Secoda workspace: api for app.secoda.co (US), eapi for eu.secoda.co, aapi for apac.secoda.co.","enum":["api","eapi","aapi"],"title":"Region","type":"string"},"from_entity_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only links starting at this resource id.","title":"From Entity Id"},"to_entity_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only links ending at this resource id.","title":"To Entity Id"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["region"],"title":"list_manual_lineageArguments","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}}}}