{"openapi":"3.1.0","info":{"title":"Astronomer Airflow (BYOK) API","version":"0.1.0","description":"Astronomer Airflow (BYOK) lets an AI assistant read your own Astronomer Airflow data through the Astronomer Airflow API with a key you supply (Astro Deployment, Workspace or Organization API token). Read-only: 11 tools (get_version, get_health, list_dags, get_dag, list_dag_runs, list_task_instances, list_dag_tasks, list_pools, list_import_errors, list_dag_warnings, list_dag_stats). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-astronomer-airflow.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-astronomer-airflow/docs"},"termsOfService":"https://connectorbay.com/byok-astronomer-airflow/terms"},"servers":[{"url":"https://byok-astronomer-airflow.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-astronomer-airflow/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/get_version":{"post":{"operationId":"get_version","summary":"Show the Airflow version and git version running in the Deployment. Use for \"Which Airflow version does my Astro Deploym","description":"Show the Airflow version and git version running in the Deployment. Use for \"Which Airflow version does my Astro Deployment run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"}},"required":["org_id","deployment_id"],"title":"get_versionArguments","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_health":{"post":{"operationId":"get_health","summary":"Show the health of the metadatabase, scheduler, triggerer and dag processor with last heartbeats. Use for \"Is my Astro D","description":"Show the health of the metadatabase, scheduler, triggerer and dag processor with last heartbeats. Use for \"Is my Astro Deployment's Airflow scheduler healthy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"}},"required":["org_id","deployment_id"],"title":"get_healthArguments","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_dags":{"post":{"operationId":"list_dags","summary":"List dags with paused flag, schedule summary, owners, tags, next run time and import error flag. Use for \"Which Airflow ","description":"List dags with paused flag, schedule summary, owners, tags, next run time and import error flag. Use for \"Which Airflow dags are paused in my Astro Deployment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Offset"},"dag_id_pattern":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Case-insensitive substring to match in the dag id.","title":"Dag Id Pattern"},"paused":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only paused dags, false for only active dags.","title":"Paused"},"exclude_stale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) hides dags whose files are gone.","title":"Exclude Stale"},"order_by":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field: dag_id, dag_display_name, next_dagrun, last_run_state or last_run_start_date; prefix with - for descending.","title":"Order By"}},"required":["org_id","deployment_id"],"title":"list_dagsArguments","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_dag":{"post":{"operationId":"get_dag","summary":"Get one dag: schedule, owners, tags, concurrency limits, next run time and file location. Use for \"Show the Airflow dag ","description":"Get one dag: schedule, owners, tags, concurrency limits, next run time and file location. Use for \"Show the Airflow dag example_dag\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"},"dag_id":{"description":"Dag id, for example 'example_dag'. list_dags returns the ids.","maxLength":250,"title":"Dag Id","type":"string"}},"required":["org_id","deployment_id","dag_id"],"title":"get_dagArguments","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_dag_runs":{"post":{"operationId":"list_dag_runs","summary":"List runs of one dag with state, run type, logical date, start and end times and duration; use '~' as dag id for all dag","description":"List runs of one dag with state, run type, logical date, start and end times and duration; use '~' as dag id for all dags. Use for \"Which runs of example_dag failed recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"},"dag_id":{"description":"Dag id, for example 'example_dag'. list_dags returns the ids.","maxLength":250,"title":"Dag Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Offset"},"state":{"anyOf":[{"enum":["queued","running","success","failed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only runs in this state: queued, running, success or failed.","title":"State"},"order_by":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, for example -start_date for newest first, or logical_date, end_date, duration.","title":"Order By"}},"required":["org_id","deployment_id","dag_id"],"title":"list_dag_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_task_instances":{"post":{"operationId":"list_task_instances","summary":"List task instances of one dag run with state, operator, try number, pool, queue, times and duration; use '~' as dag id ","description":"List task instances of one dag run with state, operator, try number, pool, queue, times and duration; use '~' as dag id and run id for all runs. Use for \"Which tasks failed in run manual__2026-10-01 of example_dag\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"},"dag_id":{"description":"Dag id, for example 'example_dag'. list_dags returns the ids.","maxLength":250,"title":"Dag Id","type":"string"},"dag_run_id":{"description":"Dag run id from list_dag_runs, or '~' for all runs.","maxLength":250,"title":"Dag Run Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Offset"},"state":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only task instances in this state, for example failed, success, running, queued, up_for_retry or skipped.","title":"State"}},"required":["org_id","deployment_id","dag_id","dag_run_id"],"title":"list_task_instancesArguments","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_dag_tasks":{"post":{"operationId":"list_dag_tasks","summary":"List the tasks defined in a dag with operator, owner, retries, pool, trigger rule and downstream task ids. Use for \"What","description":"List the tasks defined in a dag with operator, owner, retries, pool, trigger rule and downstream task ids. Use for \"What tasks does example_dag contain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"},"dag_id":{"description":"Dag id, for example 'example_dag'. list_dags returns the ids.","maxLength":250,"title":"Dag Id","type":"string"}},"required":["org_id","deployment_id","dag_id"],"title":"list_dag_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_pools":{"post":{"operationId":"list_pools","summary":"List Airflow pools with slot counts: total, running, queued, scheduled, deferred and open slots. Use for \"How many pool ","description":"List Airflow pools with slot counts: total, running, queued, scheduled, deferred and open slots. Use for \"How many pool slots are free in my Airflow Deployment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Offset"}},"required":["org_id","deployment_id"],"title":"list_poolsArguments","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_import_errors":{"post":{"operationId":"list_import_errors","summary":"List dag file import errors with file name, bundle and time. The stack trace is not returned. Use for \"Which Airflow dag","description":"List dag file import errors with file name, bundle and time. The stack trace is not returned. Use for \"Which Airflow dag files fail to import\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Offset"}},"required":["org_id","deployment_id"],"title":"list_import_errorsArguments","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_dag_warnings":{"post":{"operationId":"list_dag_warnings","summary":"List dag warnings (for example non-existent pools) with dag id, type, message and time. Use for \"Does Airflow have dag w","description":"List dag warnings (for example non-existent pools) with dag id, type, message and time. Use for \"Does Airflow have dag warnings\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging.","title":"Offset"},"dag_id":{"anyOf":[{"maxLength":250,"type":"string"},{"type":"null"}],"default":null,"description":"Only warnings of this dag id.","title":"Dag Id"}},"required":["org_id","deployment_id"],"title":"list_dag_warningsArguments","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_dag_stats":{"post":{"operationId":"list_dag_stats","summary":"Show per-dag counts of runs by state (queued, running, success, failed). Use for \"How many runs of each dag succeeded or","description":"Show per-dag counts of runs by state (queued, running, success, failed). Use for \"How many runs of each dag succeeded or failed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"The first part of your Deployment's Airflow address (clq52c95r000208i8c7wahwxt for clq52c95r000208i8c7wahwxt.astronomer.run/dz3uu847).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Org Id","type":"string"},"deployment_id":{"description":"The short Deployment id after the host in the Airflow address (dz3uu847 in .../dz3uu847/home).","maxLength":40,"title":"Deployment Id","type":"string"}},"required":["org_id","deployment_id"],"title":"list_dag_statsArguments","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}}}}