{"openapi":"3.1.0","info":{"title":"Orchestra (BYOK) API","version":"0.1.0","description":"Orchestra (BYOK) lets an AI assistant read your own Orchestra data through the Orchestra API with a key you supply (Orchestra workspace API key). Read-only: 11 tools (list_pipeline_runs, get_pipeline_run_status, list_pipeline_run_tasks, list_task_runs, list_assets, get_asset, list_incidents, get_incident, list_monitors, list_environments, list_operations). 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-orchestra.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-orchestra/docs"},"termsOfService":"https://connectorbay.com/byok-orchestra/terms"},"servers":[{"url":"https://byok-orchestra.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-orchestra/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_pipeline_runs":{"post":{"operationId":"list_pipeline_runs","summary":"List pipeline runs (newest first by default) with status, environment, timing and branch; filter by status, pipeline ids","description":"List pipeline runs (newest first by default) with status, environment, timing and branch; filter by status, pipeline ids, environments or time window. Use for \"Which Orchestra pipeline runs failed in the last day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated run statuses, for example 'FAILED,WARNING' (QUEUED, CREATED, RUNNING, SUCCEEDED, WARNING, FAILED, SKIPPED, CANCELLING, CANCELLED).","title":"Status"},"pipeline_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated pipeline UUIDs to include.","title":"Pipeline Ids"},"environments":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated environment UUIDs to include.","title":"Environments"},"time_from":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the time window, ISO 8601 (for example 2026-10-01T00:00:00Z); the API defaults to the last 24 hours.","title":"Time From"},"time_to":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End of the time window, ISO 8601.","title":"Time To"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100, default 50).","title":"Page Size"}},"title":"list_pipeline_runsArguments","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_pipeline_run_status":{"post":{"operationId":"get_pipeline_run_status","summary":"Get the pipeline name and current status of one pipeline run by id. Use for \"What is the status of Orchestra pipeline ru","description":"Get the pipeline name and current status of one pipeline run by id. Use for \"What is the status of Orchestra pipeline run 7c1e0a52\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pipeline_run_id":{"description":"Pipeline run UUID.","maxLength":200,"title":"Pipeline Run Id","type":"string"}},"required":["pipeline_run_id"],"title":"get_pipeline_run_statusArguments","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_pipeline_run_tasks":{"post":{"operationId":"list_pipeline_run_tasks","summary":"List the task runs of one pipeline run (default 10 per page, up to 50) with integration, status and attempt number. Use ","description":"List the task runs of one pipeline run (default 10 per page, up to 50) with integration, status and attempt number. Use for \"Which tasks of Orchestra pipeline run 7c1e0a52 failed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pipeline_run_id":{"description":"Pipeline run UUID.","maxLength":200,"title":"Pipeline Run Id","type":"string"},"include_superseded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"False to hide earlier attempts of retried tasks.","title":"Include Superseded"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Results per page (1 to 50, default 10).","title":"Page Size"}},"required":["pipeline_run_id"],"title":"list_pipeline_run_tasksArguments","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_task_runs":{"post":{"operationId":"list_task_runs","summary":"List task runs across the workspace with integration, status and timing; filter by status, integration, pipelines or tim","description":"List task runs across the workspace with integration, status and timing; filter by status, integration, pipelines or time window. Use for \"Which Fivetran tasks failed recently in Orchestra\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated task statuses, for example 'FAILED'.","title":"Status"},"integration":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Integration identifier such as FIVETRAN or DBT_CORE.","title":"Integration"},"pipeline_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated pipeline UUIDs to include.","title":"Pipeline Ids"},"time_from":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the time window, ISO 8601 (for example 2026-10-01T00:00:00Z); the API defaults to the last 24 hours.","title":"Time From"},"time_to":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End of the time window, ISO 8601.","title":"Time To"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100, default 50).","title":"Page Size"}},"title":"list_task_runsArguments","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_assets":{"post":{"operationId":"list_assets","summary":"List data assets (tables, dashboards, datasets) Orchestra tracks, with integration, health status, row count and last su","description":"List data assets (tables, dashboards, datasets) Orchestra tracks, with integration, health status, row count and last successful run. Use for \"Which Orchestra assets are unhealthy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset_type":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated asset types, for example 'TABLE,DASHBOARD'.","title":"Asset Type"},"integration":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Integration identifier such as SNOWFLAKE.","title":"Integration"},"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated health statuses: HEALTHY, UNHEALTHY, UNKNOWN, WARNING.","title":"Status"},"database_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only assets in this database.","title":"Database Name"},"schema_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only assets in this schema.","title":"Schema Name"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100, default 50).","title":"Page Size"}},"title":"list_assetsArguments","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_asset":{"post":{"operationId":"get_asset","summary":"Get one asset by Orchestra id or external id with health, size, owner and freshness fields. Use for \"Show Orchestra asse","description":"Get one asset by Orchestra id or external id with health, size, owner and freshness fields. Use for \"Show Orchestra asset a-1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset_id":{"description":"Orchestra asset id or external id.","maxLength":200,"title":"Asset Id","type":"string"}},"required":["asset_id"],"title":"get_assetArguments","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 incidents (most severe first) with status, severity, assignee and monitor; filter by status, severity or name. Use ","description":"List incidents (most severe first) with status, severity, assignee and monitor; filter by status, severity or name. Use for \"Which high severity Orchestra incidents are open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated statuses: OPEN, INVESTIGATING, RESOLVED, DISMISSED.","title":"Status"},"severity":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated severities: CRITICAL, HIGH, MEDIUM, LOW.","title":"Severity"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Case-insensitive text to match in the incident name.","title":"Name"},"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include archived incidents.","title":"Include Archived"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Results per page (1 to 100, default 10).","title":"Page 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 with its status, severity, merge relations, event count and related resources. Use for \"Show Orchestra ","description":"Get one incident with its status, severity, merge relations, event count and related resources. Use for \"Show Orchestra incident i-1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"incident_id":{"description":"Incident id.","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_monitors":{"post":{"operationId":"list_monitors","summary":"List incident monitors in evaluation order with name, enabled flag, match rules and the action they take. Use for \"Which","description":"List incident monitors in evaluation order with name, enabled flag, match rules and the action they take. Use for \"Which Orchestra monitors are enabled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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_environments":{"post":{"operationId":"list_environments","summary":"List workspace environments (name, default flag, allowed branches); variable values are not returned. Use for \"Which env","description":"List workspace environments (name, default flag, allowed branches); variable values are not returned. Use for \"Which environments does my Orchestra workspace have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_environmentsArguments","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_operations":{"post":{"operationId":"list_operations","summary":"List task operations (queries, ingestions, tests) with status, type, duration, rows affected and cost; filter by status,","description":"List task operations (queries, ingestions, tests) with status, type, duration, rows affected and cost; filter by status, type or integration. Use for \"Which Orchestra operations failed today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"operation_type":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated types, for example 'QUERY,INGESTION,TEST'.","title":"Operation Type"},"integration":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Integration identifier such as SNOWFLAKE.","title":"Integration"},"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Operation status, for example FAILED.","title":"Status"},"task_run_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only operations of this task run id.","title":"Task Run Id"},"time_from":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the time window, ISO 8601 (for example 2026-10-01T00:00:00Z); the API defaults to the last 24 hours.","title":"Time From"},"time_to":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End of the time window, ISO 8601.","title":"Time To"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Results per page (1 to 100, default 50).","title":"Page Size"}},"title":"list_operationsArguments","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}}}}