{"openapi":"3.1.0","info":{"title":"Soda Cloud US (BYOK) API","version":"0.1.0","description":"Soda Cloud US (BYOK) lets an AI assistant read your own Soda Cloud US data through the Soda Cloud US API with a key you supply (API key ID). Read-only: 11 tools (test_login, list_datasets, get_dataset, list_checks, get_check_result_history, list_incidents, get_incident, list_datasources, list_scans, list_dataset_monitors, list_contracts). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-soda-cloud-us.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-soda-cloud-us/docs"},"termsOfService":"https://connectorbay.com/byok-soda-cloud-us/terms"},"servers":[{"url":"https://byok-soda-cloud-us.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-soda-cloud-us/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/test_login":{"post":{"operationId":"test_login","summary":"Check that the key works and show the Soda Cloud organization name it belongs to. Use for \"Is my Soda Cloud API key vali","description":"Check that the key works and show the Soda Cloud organization name it belongs to. Use for \"Is my Soda Cloud API key valid and which organization is it for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"test_loginArguments","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_datasets":{"post":{"operationId":"list_datasets","summary":"List datasets with data source, health, check and incident counts, passing percentage and last update. Owners and attrib","description":"List datasets with data source, health, check and incident counts, passing percentage and last update. Owners and attributes are left out. Use for \"Which Soda datasets have failing checks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Fuzzy search on the dataset name.","title":"Search"},"datasource_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only datasets of this data source name.","title":"Datasource Name"},"has_contract":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for datasets with a published contract, false for those without.","title":"Has Contract"},"updated_since":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only datasets updated after this ISO 8601 time.","title":"Updated Since"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":1000,"minimum":10,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (10 to 1000, default 10).","title":"Size"}},"title":"list_datasetsArguments","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_dataset":{"post":{"operationId":"get_dataset","summary":"Get one dataset: data source, health status, check and incident counts, contract flag, tags and last update. Use for \"Ho","description":"Get one dataset: data source, health status, check and incident counts, contract flag, tags and last update. Use for \"How healthy is the Soda dataset orders\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dataset_id":{"description":"Dataset id (UUID), from list_datasets or the dataset's Soda Cloud URL.","maxLength":200,"title":"Dataset Id","type":"string"}},"required":["dataset_id"],"title":"get_datasetArguments","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_checks":{"post":{"operationId":"list_checks","summary":"List data quality checks with type, column, definition, latest evaluation status, source and dataset. Latest result diag","description":"List data quality checks with type, column, definition, latest evaluation status, source and dataset. Latest result diagnostics are left out. Use for \"Which Soda checks are failing right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dataset_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only checks of this dataset id.","title":"Dataset Id"},"datasource_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only checks of this data source id.","title":"Datasource Id"},"evaluation_status":{"anyOf":[{"enum":["pass","warn","fail","notEvaluated","excluded"],"type":"string"},{"type":"null"}],"default":null,"description":"Only checks with this latest status.","title":"Evaluation Status"},"check_type":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only checks of this type, for example missing, invalid, row_count, freshness or schema.","title":"Check Type"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only checks with this name.","title":"Name"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 1000, default 10).","title":"Size"}},"title":"list_checksArguments","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_check_result_history":{"post":{"operationId":"get_check_result_history","summary":"List the past results of one check: time, status, measured value and scan id. Diagnostics queries are left out. Use for ","description":"List the past results of one check: time, status, measured value and scan id. Diagnostics queries are left out. Use for \"How did the Soda check chk-1 evolve over the last runs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"check_id":{"description":"Check id from list_checks.","maxLength":200,"title":"Check Id","type":"string"},"from_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only results after this ISO 8601 time.","title":"From Time"},"to_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only results before this ISO 8601 time.","title":"To Time"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 1000, default 10).","title":"Size"}},"required":["check_id"],"title":"get_check_result_historyArguments","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 data quality incidents with number, title, status, severity, dates and description. Use for \"Which Soda incidents a","description":"List data quality incidents with number, title, status, severity, dates and description. Use for \"Which Soda incidents are open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents with this status, for example reported, investigating, fixing or resolved.","title":"Status"},"severity":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents with this severity: minor, major or critical.","title":"Severity"},"dataset_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents of this dataset id.","title":"Dataset Id"},"datasource_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only incidents of this data source id.","title":"Datasource Id"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 1000, default 10).","title":"Size"}},"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/get_incident":{"post":{"operationId":"get_incident","summary":"Get one incident by id: number, title, status, severity, dates, description and resolution notes. Use for \"What is the s","description":"Get one incident by id: number, title, status, severity, dates, description and resolution notes. Use for \"What is the status of Soda incident inc-1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"incident_id":{"description":"Incident id from list_incidents.","maxLength":200,"title":"Incident Id","type":"string"}},"required":["incident_id"],"title":"get_incidentArguments","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_datasources":{"post":{"operationId":"list_datasources","summary":"List connected data sources with name, type, version and timestamps. Use for \"Which data sources are connected to Soda C","description":"List connected data sources with name, type, version and timestamps. Use for \"Which data sources are connected to Soda Cloud\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search by name.","title":"Search"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 1000, default 10).","title":"Size"}},"title":"list_datasourcesArguments","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_scans":{"post":{"operationId":"list_scans","summary":"List recent scans with type, state, start and end time and the datasets they covered. Uses a cursor for paging. Use for ","description":"List recent scans with type, state, start and end time and the datasets they covered. Uses a cursor for paging. Use for \"Which Soda scans failed recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"state":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only scans in this state, for example completed, failed or completedWithFailures.","title":"State"},"dataset_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only scans of this dataset id.","title":"Dataset Id"},"size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many scans to return (default 10).","title":"Size"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from nextCursor of the previous answer.","title":"Cursor"}},"title":"list_scansArguments","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_dataset_monitors":{"post":{"operationId":"list_dataset_monitors","summary":"List the metric monitors of one dataset with metric type, column, evaluation status and enabled flag. Use for \"Which Sod","description":"List the metric monitors of one dataset with metric type, column, evaluation status and enabled flag. Use for \"Which Soda monitors are anomalous on the dataset orders\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dataset_id":{"description":"Dataset id.","maxLength":60,"title":"Dataset Id","type":"string"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 1000, default 10).","title":"Size"}},"required":["dataset_id"],"title":"list_dataset_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_contracts":{"post":{"operationId":"list_contracts","summary":"List data contracts with dataset, creation and update times and the contract YAML text. Use for \"What data contracts are","description":"List data contracts with dataset, creation and update times and the contract YAML text. Use for \"What data contracts are published in Soda\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dataset_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only the contract of this dataset id.","title":"Dataset Id"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many contracts per page (1 to 1000, default 10).","title":"Size"}},"title":"list_contractsArguments","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}}}}