Orchestra MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ORCHESTRA_ENV | No | Environment for local runs. Valid values: app, stage, dev. | app |
| ORCHESTRA_API_KEY | Yes | Your Orchestra API key for authentication. | |
| ORCHESTRA_ENABLE_DELETE | No | Set to 'true', 'TRUE', or '1' to enable the delete_pipeline tool. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whats_brokenA | Start here for 'what is broken' or 'why did last night's run fail'. Returns every failing and warning pipeline run in the window, already joined to the task runs that failed inside it, with each task's message, externalMessage, platformLink and duration-vs-baseline anomalies. Retried attempts are excluded. Windows wider than 168 hours are clamped to that, the widest the API serves. Follow up on a single task run with diagnose. |
| diagnoseA | Deep dive on one failed task run: its status and messages, taskParameters and runParameters, the statuses of the upstream tasks it depends on, the tail of its newest log, and its artifact filenames. Over-long parameter values, the log tail and the artifact list are capped, and the response says which parts were cut. Use download_task_run_log or download_task_run_artifact when the tail is not enough. |
| pipeline_contextA | What an agent needs before editing or reasoning about a pipeline: its metadata, its full definition (the pipeline YAML structure as JSON), the integrations its tasks use, its recent run outcomes, and the median duration of its succeeded runs. Takes a pipeline ID or an alias. Run history covers the last 7 days, the widest window the API serves. |
| get_pipeline_run_lineage_urlA | Build the URL of a pipeline run's lineage graph in the Orchestra UI. |
| validate_pipelineA | Validate a full pipeline definition document without creating or updating a pipeline. Use it to check a definition before create_pipeline or update_pipeline. |
| download_task_run_logA | Download a task run log file, returned base64-encoded. At most 3MiB of file content is returned per call; fetch larger files in chunks by passing range_header (e.g. 'bytes=0-3145727') and advancing the range each call. |
| download_task_run_artifactA | Download a task run artifact file, returned base64-encoded. Artifacts such as a dbt manifest.json are often tens of MB. At most 3MiB of file content is returned per call; fetch larger files in chunks by passing range_header (e.g. 'bytes=0-3145727') and advancing the range each call. |
| list_assetsB | Retrieve a paginated list of assets for the workspace the credential resolves to. Assets can be filtered by type, integration, integration account, workspace, database, schema, status, or asset ID. By default, results are sorted by |
| get_asset_by_idB | Retrieve a single asset by Orchestra asset ID or external ID. |
| list_audit_eventsA | List the audit trail for the workspace the credential resolves to, newest first: who did what, to which resource, and what changed.
|
| list_environmentsA | List the environments for the workspace the credential resolves to. Returns environment metadata only — fetch a single environment by ID to retrieve its variable values. |
| create_environmentB | Create a new environment with an initial set of variable values. The first environment created for a workspace is automatically marked as the default. |
| get_environmentA | Fetch a single environment by its ID, including its variable values. |
| delete_environmentA | Delete an environment entirely. The default environment cannot be deleted while other environments still exist. Only runs for a user signed in with OAuth; with an Orchestra API key it is refused. |
| update_environmentA | Update an environment's name, default flag, and variable values. Only the fields supplied are changed; omitted fields are left untouched. The supplied |
| get_incident_settingsA | Get the workspace's incident settings: whether incidents are on, which failures can raise one, and how incidents alert. A workspace that has never saved its settings gets the defaults. |
| update_incident_settingsA | Change the workspace's incident settings and return all of them. Settings left out of the body keep their current value. |
| list_incidentsA | List incidents for the workspace the credential resolves to, most severe first, with merged children nested under their parent. Filters apply to top-level incidents only - a child is always returned alongside its parent, so a filtered list still shows the full incident rather than part of one. Use |
| get_incidentA | Fetch a single incident, with its merge relationships, summary counts and related resources. |
| update_incidentA | Change an incident's status, severity, name, assignee or subscribers. A field left out of the request body keeps its stored value, and sending Returns the detail shape - a patch writes timeline rows of its own, so the caller's event count is out of date the moment the change lands. |
| list_incident_eventsA | Fetch the timeline for a single incident, newest first. Paginated from the start - a grouped incident accumulates one event per attached failure, so the history runs to hundreds of rows well before anyone triages it. |
| get_incident_external_eventA | Fetch the raw JSON an external system sent for one row of an incident's timeline - a row whose hasExternalEvent is true. Returns 410 once the payload has expired. |
| merge_incidentsA | Merge the incidents named in the request body into the incident in the path. Merging is one level deep - merging an incident that already has a parent, or naming one that has incidents merged into it, is rejected rather than nesting further.
|
| unmerge_incidentsA | Detach the incidents named in the request body from the incident in the path, restoring each as a standalone incident. The exact inverse of merge. |
| mute_incidentA | Silence further alerts on this incident until the account's alert budget next refills. Already muted is a no-op. |
| unmute_incidentA | Lift this incident's mute early. A no-op if it was never muted, or already lapsed. |
| create_incident_commentA | Append a row to an incident's timeline, returning the event it wrote.
The timeline is append-only: nothing can edit or delete a row once it is there. |
| list_integration_connectionsA | List the integration connections configured for the workspace the credential resolves to. Returns connection metadata only — secret auth parameters are never included in the response. Optionally filter by |
| get_integration_connectionB | Fetch a single integration connection in the workspace the credential resolves to, including its auth parameters. Secret auth parameters are obfuscated in the response. |
| delete_integration_connectionA | Delete an integration connection from the workspace the credential resolves to, along with any agent integration mappings that use it. The default connection cannot be deleted while the integration has other connections. Only runs for a user signed in with OAuth; with an Orchestra API key it is refused. |
| update_integration_connectionA | Update one of |
| create_integration_connectionA | Create a connection for an integration in the caller's workspace. |
| get_integrationA | Fetch a single integration by its identifier, including its auth and job schemas. Each |
| list_monitorsB | List the workspace's monitors in evaluation order. Where two monitors claim the same event, the one with the lower |
| create_monitorA | Create a monitor: a rule for which failures to group into one incident, and how that incident alerts. |
| reorder_monitorsA | Set the evaluation order of the workspace's monitors. |
| get_monitorC | Fetch a single monitor's definition. |
| update_monitorA | Replace a monitor's definition with the one in the body. A field left out takes its default rather than keeping its stored value, except |
| delete_monitorA | Delete a monitor. Incidents it already claimed keep their link to it; new events fall through to the next matching monitor or the built-in grouping rules. Only runs for a user signed in with OAuth; with an Orchestra API key it is refused. |
| list_operationsA | Retrieve a paginated list of task operations for the workspace the credential resolves to. From 2026-10-01 the default changed from the last 7 days to the last 24 hours. Pass Use operation filters to narrow results by operation type, integration, external ID, operation status, or task run ID. |
| list_task_runs_for_pipeline_runA | Retrieve task runs belonging to a single pipeline run. This endpoint uses |
| list_task_run_artifactsA | List artifacts linked to a task run, such as dbt |
| list_task_run_logsA | List log files linked to a task run. Use the returned filenames with the download endpoint. |
| get_pipeline_runA | Retrieve a single pipeline run by ID, including its status, however long ago it ran. |
| list_pipeline_runsB | List pipeline runs with optional filters. status accepts comma-separated values: CREATED, QUEUED, RUNNING, SUCCEEDED, WARNING, FAILED, SKIPPED, CANCELLING, CANCELLED. |
| cancel_pipeline_runB | Cancel a running or queued pipeline run by its ID. |
| get_pipelineA | Fetch a single pipeline. Provide exactly one selector: pipeline_id, alias, or repository together with yaml_path. |
| list_pipelinesA | List pipelines for the workspace the credential resolves to. Always pass |
| update_pipelineA | Update an existing Orchestra-backed pipeline. Select it with |
| create_pipelineB | Create a new pipeline. The request body includes the pipeline definition as JSON. Use Validate pipeline schema before creating a pipeline if you want to check the payload without saving it. |
| delete_pipelineA | Delete a pipeline. Provide exactly one selector: pipeline_id, alias, or repository together with yaml_path. Only runs for a user signed in with OAuth; with an Orchestra API key it is refused. |
| get_pipeline_dataA | Fetch the full pipeline definition for a pipeline selected by |
| start_pipelineA | Start a pipeline run. The pipeline can be identified by alias or pipeline ID. All request body fields are optional. Use Any other JSON body, such as a webhook sent by another tool, still starts the run, with default options; |
| pause_pipelineA | Pause or unpause a pipeline by alias or pipeline ID. A paused pipeline's schedules, sensors, trigger events, and |
| move_pipelineA | Move an Orchestra-backed pipeline to a folder by alias or pipeline ID, leaving its definition and versions as they are. A git-backed pipeline's folder comes from where its YAML file lives, so move the file instead. |
| migrate_pipelineB | Migrate an Orchestra-backed pipeline to git-backed storage. Identify it with pipeline_id or alias, and omit working_branch when it equals default_branch. |
| import_pipelineC | Import a Git-backed pipeline definition from a repository into Orchestra. |
| get_integration_state_for_state_awareB | Fetch the stored state for the given integration in the workspace the credential resolves to. |
| list_task_runsA | Retrieve a paginated list of task runs for the workspace the credential resolves to. From 2026-10-01 the default changed from the last 7 days to the last 24 hours. Pass Filter by multiple statuses, integrations, pipeline IDs, or task run IDs using comma-separated values. For example, |
| get_task_runA | Retrieve a single task run by ID, however long ago it ran, without needing its pipeline run ID. |
| list_accountsA | Lists the workspaces this credential can act on. An API key is issued to one workspace, so it lists that workspace alone. An OAuth token lists the workspaces chosen when access was granted, limited to those its user is still a member of. Pass a returned id to select the workspace on calls that act within one (the |
| list_agent_avatarsA | List the avatars an agent can use: Orchestra's stock avatars and those uploaded to the workspace the credential resolves to. Pass an entry's |
| list_agentsA | List the agents in the workspace the credential resolves to, including those managed by Orchestra, filtered to the agents the caller may view. Prompts and secrets are not included; get an agent by id for those. |
| create_agentB | Create an agent in the workspace the credential resolves to. Prompts are Markdown, |
| get_agentA | Get an agent with its prompts and settings. Secrets are returned masked. Returns 404 if the agent does not exist in the workspace the credential resolves to. |
| delete_agentA | Delete an agent from the workspace the credential resolves to. Agents managed by Orchestra cannot be deleted, and are refused with 403. Only runs for a user signed in with OAuth; with an Orchestra API key it is refused. |
| update_agentA | Update the fields given and leave the rest unchanged; send |
| list_agent_skillsA | List the skills attached to an agent, with each skill's name and description. Returns 404 if the agent does not exist in the workspace the credential resolves to. |
| set_agent_skillsA | Replace the skills attached to an agent with the given list: skills not in the list are detached, and an empty list detaches them all. Each |
| list_agent_integrationsA | List the integration connections an agent can use. Each |
| set_agent_integrationsA | Replace the integration connections an agent can use with the given list, and return the agent's integrations afterwards. An empty list removes them all. Each |
| list_agent_sessionsA | List the agent sessions in the workspace the credential resolves to that the caller can see, most recently updated first. A session started by a user in the Orchestra UI is visible to that user alone, so an API key never sees one. Sessions started for a task run or an incident are visible to everyone in the workspace who can view the agent. |
| create_agent_sessionA | Start a session with an agent and send it a first prompt. The agent replies asynchronously: this returns once the prompt is queued, and the reply is read from |
| get_agent_sessionA | Get an agent session by ID. Returns 404 for a session the caller cannot see, and 403 for one whose agent the caller cannot view. A session started by a user in the Orchestra UI is visible to that user alone, so an API key never sees one. Sessions started for a task run or an incident are visible to everyone in the workspace who can view the agent. |
| send_agent_session_messageA | Send a further prompt to an agent session. The agent replies asynchronously: this returns once the prompt is queued, and the reply is read from |
| get_agent_session_history_messagesA | Read a page of an agent session's messages, a whole number of complete turns at a time, oldest first. Pass exactly one of |
| cancel_agent_session_promptA | Ask an agent session to stop working on a prompt, named by the |
| list_skillsA | List the skills available in the workspace the credential resolves to, including those managed by Orchestra. Each skill's |
| create_skillA | Create a skill from a markdown document. The markdown must open with YAML frontmatter holding the skill's |
| get_skillA | Fetch a single skill, including its full |
| delete_skillA | Delete a skill. Skills managed by Orchestra cannot be deleted. Deleting a skill imported from git removes it from Orchestra only; the file in the repository is left as it is. Only runs for a user signed in with OAuth; with an Orchestra API key it is refused. |
| update_skillA | Replace a skill's markdown. Its |
| import_skillA | Import a skill from a markdown file in the workspace's connected git repository, with the same frontmatter as a created skill. Skills imported from git are read-only: edit the file in the connected repository instead. Returns 422 if no git provider is connected, 404 if the file is not on the branch. |
| get_agent_usageA | Retrieve the input and output tokens spent by agent sessions in the account, summed across every agent and LLM connection, as totals for the period and in consecutive time buckets. A session counts towards the bucket it was created in. Requires permission to view account settings. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 84 tools
Most tools map to distinct resources and actions, and the descriptions clarify close pairs such as get_pipeline/get_pipeline_data/pipeline_context and list_task_runs vs list_task_runs_for_pipeline_run. A few adjacent areas remain, like pipeline-run listing vs whats_broken and workspace integrations vs agent integrations, but they are generally readable.
The set is predominantly consistent snake_case verb_noun naming across resource families. Exceptions like diagnose, whats_broken, and pipeline_context are readable but break the otherwise predictable pattern.
84 tools is far beyond the typical 3-15 range and creates an extremely heavy surface for an agent to navigate. Even though the domain is broad, the many CRUD and list variants across each resource family make this an extreme mismatch.
Coverage is extensive: pipelines, runs, task runs, incidents, monitors, agents, sessions, skills, environments, connections, assets, and audit events all have relevant lifecycle operations. Minor gaps remain, such as no obvious integration discovery/list tool and limited write coverage for assets or operations, likely by design.