Skip to main content
Glama
fabdendev

dagster-mcp

by fabdendev

Dagster MCP

PyPI version Downloads License: MIT Python 3.12+ Tests

An MCP server that gives AI agents full visibility and control over your Dagster instance — like an SRE for your data pipelines.

Works with any MCP client: Claude Code, Claude Desktop, Cursor, and more.

Dagster officially develops and supports their own Dagster Plus MCP server. See the documentation here.

Why this exists

Data pipelines break at 3 AM. Schedules silently stop firing. Assets go stale. Instead of waking up to a dashboard full of red, give your AI agent the tools to monitor, diagnose, and fix your Dagster instance autonomously.

Agent: Checking instance health...
       get_instance_status() -> healthy: false, daemon "SCHEDULER" unhealthy

Agent: Scheduler daemon is down. Let me check recent failures...
       get_runs(statuses=["FAILURE"], limit=5) -> 3 failed runs in the last hour

Agent: Diagnosing the most recent failure...
       get_run_failure_summary("run_abc123") ->
         failed_steps: ["transform_orders"]
         root_cause: "NullPointerError: column 'price' is null"
         suggestions: ["Single step failed — consider re-running from failure"]

Agent: Re-launching the failed job...
       launch_job("etl_pipeline", "my_project") -> run_id: "run_def456", status: STARTED

Agent: One sensor keeps firing on bad data. Checking its ticks...
       get_tick_history("orders_sensor", "SENSOR") -> 12 consecutive FAILURE ticks

Agent: Stopping it until the upstream fix lands...
       stop_sensor("orders_sensor") -> status: STOPPED

Related MCP server: ensemble-mcp

What it does

27 tools across 6 categories, designed for autonomous DataOps workflows:

Category

Tools

What an agent can do

Runs

get_runs get_run_status get_run_logs get_run_stats get_run_failure_summary

Find failures, diagnose root causes, inspect logs and step timing

Assets

search_assets resolve_asset_selection get_asset_details get_recent_materializations get_asset_health

Discover assets, preview lineage selections, check freshness, detect stale data

Jobs

list_jobs

Inventory jobs across code locations, with optional repository/location filters

Schedules & Sensors

list_schedules list_sensors get_tick_history

Detect silent failures, missed ticks, sensor errors

Instance

get_instance_status list_code_locations list_backfills

Global health check, daemon status, code location errors

Actions

materialize_assets backfill_assets launch_job launch_job_with_partitions terminate_run start_schedule stop_schedule start_sensor stop_sensor reload_code_location

Materialize concrete assets with config, backfill partitions, launch jobs, stop stuck runs, start or stop schedules and sensors, reload after deploy

Actions are opt-in: set DAGSTER_READ_ONLY=false to enable write operations.

Quick start

Prerequisites

  • Python 3.12+

  • uv (recommended) or pip

  • A running Dagster instance (self-hosted or Cloud)

Install

The package is published on PyPI.

Option A — run directly with uvx (no install needed):

uvx dagster-mcp

Option B — install with pip:

pip install dagster-mcp

Option C — clone and run:

git clone https://github.com/fabdendev/dagster-mcp.git
cd dagster-mcp
uv sync

Configure

Single environment

Variable

Description

Default

DAGSTER_URL

Base URL of your Dagster instance

http://localhost:3000

DAGSTER_API_TOKEN

Dagster Cloud API token (leave empty for self-hosted)

(empty)

DAGSTER_EXTRA_HEADERS

JSON object of additional request headers sent to Dagster GraphQL

(empty)

DAGSTER_READ_ONLY

When true, only read tools are exposed (no launch/terminate/reload, no schedule or sensor start/stop)

true

Self-hosted:

export DAGSTER_URL=http://localhost:3000

Dagster Cloud:

export DAGSTER_URL=https://myorg.dagster.cloud/prod
export DAGSTER_API_TOKEN=your-dagster-cloud-user-token

Custom auth / proxy headers:

export DAGSTER_EXTRA_HEADERS='{"Authorization":"Bearer your-token","X-My-Header":"value"}'

Multiple environments

Use DAGSTER_ENVS to configure several Dagster instances in one server. Every tool then accepts an optional env parameter so the LLM can target the right instance.

Variable

Description

Default

DAGSTER_ENVS

JSON object mapping env names to {url, token?, extra_headers?} configs

(empty)

DAGSTER_DEFAULT_ENV

Env name to use when env is not passed to a tool

(empty)

export DAGSTER_ENVS='{
  "prod": {"url": "https://myorg.dagster.cloud/prod", "token": "prod-token"},
  "staging": {"url": "https://myorg.dagster.cloud/staging", "token": "stg-token"},
  "dev": {"url": "http://localhost:3000"}
}'
export DAGSTER_DEFAULT_ENV=prod

When DAGSTER_ENVS is set, DAGSTER_URL / DAGSTER_API_TOKEN / DAGSTER_EXTRA_HEADERS are ignored. If only one env is defined, it is used automatically even without DAGSTER_DEFAULT_ENV.

Add to your MCP client

Add to ~/.claude/settings.json:

Single env:

{
  "mcpServers": {
    "dagster": {
      "command": "uvx",
      "args": ["dagster-mcp"],
      "env": {
        "DAGSTER_URL": "http://localhost:3000"
      }
    }
  }
}

Multiple envs:

{
  "mcpServers": {
    "dagster": {
      "command": "uvx",
      "args": ["dagster-mcp"],
      "env": {
        "DAGSTER_ENVS": "{\"prod\":{\"url\":\"https://myorg.dagster.cloud/prod\",\"token\":\"prod-token\"},\"dev\":{\"url\":\"http://localhost:3000\"}}",
        "DAGSTER_DEFAULT_ENV": "prod"
      }
    }
  }
}

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "dagster": {
      "command": "uvx",
      "args": ["dagster-mcp"],
      "env": {
        "DAGSTER_URL": "http://localhost:3000"
      }
    }
  }
}
{
  "mcpServers": {
    "dagster": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/dagster-mcp", "dagster-mcp"],
      "env": {
        "DAGSTER_URL": "http://localhost:3000"
      }
    }
  }
}

Tool reference

Runs

Tool

Description

get_runs

List recent runs, filter by job name and/or status

get_run_status

Get status, config, tags, and run lineage (re-execution chain via rootRunId/parentRunId)

get_run_logs

Get structured log events with pagination and optional level filtering (ERROR, WARNING, INFO); EngineEvent events include metadataEntries

get_run_stats

Get per-step execution stats: timing, materializations, expectation results

get_run_failure_summary

Consolidated failure diagnosis — failed steps, root cause error, step durations, and suggestions in one call

Assets

Tool

Description

search_assets

Discover assets by key prefix or group name

resolve_asset_selection

Resolve key/group/tag/kind/owner predicates, wildcards, boolean logic, roots/sinks, and lineage traversal into concrete asset keys without launching anything

get_asset_details

Get description, upstream/downstream dependencies, partitions, latest materialization

get_recent_materializations

Get materialization history with metadata for an asset

get_asset_health

Consolidated health view — staleness, freshness policy, last run status (works with single asset or entire group)

Two-step asset workflow

Start by resolving and reviewing a selection expression:

resolve_asset_selection(
  asset_selection="group:analytics and (kind:dbt or key:*benchmark)"
)

→ {
    "asset_keys": [
      "warehouse/analytics/orders",
      "warehouse/analytics/reranker_benchmark"
    ],
    "assets": [...]
  }

For concrete, unpartitioned assets, pass the returned keys to materialize_assets with any required launch config and tags:

materialize_assets(
  asset_keys=[
    "warehouse/analytics/orders",
    "warehouse/analytics/reranker_benchmark"
  ],
  run_config={"ops": {"benchmark": {"config": {"limit": 1000}}}},
  tags={"triggered_by": "agent"}
)

For partitioned assets, pass the same resolved keys to backfill_assets instead:

backfill_assets(
  asset_keys=["warehouse/analytics/daily_orders"],
  partition_start="2026-07-01",
  partition_end="2026-07-07",
  run_config={"resources": {"warehouse": {"config": {"pool": "benchmark"}}}}
)

resolve_asset_selection is available in both read-only and read-write modes. It returns external, observable, non-executable, and partitioned matches so the caller can inspect the complete result. The write tools re-fetch current asset definitions before execution. resolve_asset_selection and materialize_assets require Dagster 1.9+.

Jobs, Schedules & Sensors

Tool

Description

list_jobs

List jobs across code locations, optionally filtered by exact repository_name and/or location_name (use to find names for launch_job)

list_schedules

List schedules with status (RUNNING/STOPPED), cron, target job, next tick

list_sensors

List sensors with status and target jobs

get_tick_history

Tick-by-tick history for a schedule or sensor — essential for detecting silent failures. Accepts optional repository_name / location_name to disambiguate a name shared by several code locations

list_jobs filters are independent and use AND semantics when combined. For example, list_jobs(repository_name="example_repository") finds that repository across locations, while list_jobs(repository_name="example_repository", location_name="example_location") targets one repository and code-location pair. Calls with only one filter use a lightweight repository-discovery request followed by one batched job request — it isn't free: that's a second round-trip against Dagster, traded for a smaller payload when only a subset of repositories matches. Request counts per call: 1 for no filters, 1 for both filters, 2 for exactly one filter.

If a code location relevant to the filter failed to load or is still loading, list_jobs raises a RuntimeError naming the location instead of silently returning an empty result — an empty filtered result means no match among code locations Dagster could actually load. A non-empty filtered result can still be incomplete: if some repositories matched, list_jobs returns them rather than raising, even when another code location could not be searched. This check rides along in the same requests above (workspaceOrError, which list_code_locations already queries), so it adds no extra round-trip. The unfiltered call (list_jobs() with no filters) is unchanged: it omits this check and keeps returning whatever is loaded, since an agent won't misread a long inventory listing as "nothing exists" the way it would misread an empty filtered result — use list_code_locations or get_instance_status to check load health directly.

Instance & Code Locations

Tool

Description

get_instance_status

Start here — global health: daemon status, queued run count, code location errors

list_code_locations

List all code locations and their load status

list_backfills

List recent backfills with status and partition progress

Write Operations

Tool

Description

materialize_assets

Launch concrete, unpartitioned asset keys with run config and tags; infers one compatible repository/job, includes compatible checks, and expands required non-subsettable multi-asset neighbors. On a failed launch it returns the preflight context plus error and message rather than raising, and omits launched_asset_keys

backfill_assets

Launch a partition backfill by asset selection with optional run config; respects each asset's BackfillPolicy server-side

launch_job

Launch a named job; asset_keys remains supported for compatibility and is sent through GraphQL assetSelection, but the two-step asset workflow is preferred

launch_job_with_partitions

Launch a partitioned job for one or more partition keys; creates a backfill (supports from_failure to retry only failed steps)

start_schedule

Start (enable) a schedule so it launches runs on its cron

stop_schedule

Stop (disable) a schedule — persists across restarts; does not terminate in-flight runs

start_sensor

Start (enable) a sensor so it resumes evaluating

stop_sensor

Stop (disable) a sensor — the fix for a runaway or erroring sensor found via get_tick_history

Schedule/sensor names are unique only within a repository. If the same name exists in several code locations, the start/stop tools refuse to act and list the candidates; pass repository_name / location_name to disambiguate. Successful calls echo the resolved repository and location. | terminate_run | Stop a stuck or runaway run | | reload_code_location | Reload a code location after deploy |

Write tools require DAGSTER_READ_ONLY=false (default is true).

How it differs from Dagster's official AI tooling

Dagster builds and supports its own AI tooling. If you are a Dagster+ customer, start with theirs — it is first-party, needs no local runtime, and reaches Dagster+ platform objects (alerting, Issues, Insights) that this project cannot. This project exists mainly for people running open-source / self-hosted Dagster, which the official server's documented setup does not cover.

Everything in the "official" column comes from Dagster's own docs at https://docs.dagster.io/guides/labs/dagster-mcp (retrieved 2026-07-30), or from Dagster directly in #21. Dagster's docs nowhere state that open-source or self-hosted Dagster is unsupported; what they document is a Dagster-hosted URL, a required Dagster-Cloud-Organization header, and a Dagster+ user token. Their capability matrix is a snapshot of today and Dagster expects to keep adding to it, so treat the gaps below as current rather than permanent.

dagster-mcp (this project)

Dagster+ MCP server (official)

dagster-expert skill (official)

What it is

MCP server you run yourself (Python, MIT)

Dagster-hosted remote MCP endpoint at https://mcp.agent.dagster.cloud/mcp

An Agent Skill — markdown instructions loaded by your coding agent, not an MCP server

When you use it

Operations time, against a live instance

Operations time, against a Dagster+ deployment

Development time, against your local codebase

Works with self-hosted / OSS Dagster

Yes — points at any Dagster webserver (DAGSTER_URL, default http://localhost:3000; /graphql is appended). No token required

Not per the documented setup: the only URL given is Dagster-hosted, and connecting requires a Dagster-Cloud-Organization header plus a Dagster+ user token

Yes — Apache-2.0 markdown files you copy locally

Works with Dagster+

Yes — sends a Dagster-Cloud-Api-Token header; extra headers via DAGSTER_EXTRA_HEADERS

Yes — this is its only documented target

n/a

Setup

Local process launched by your MCP client (Python 3.12+, e.g. uvx dagster-mcp), configured with env vars

No local runtime: claude mcp add --transport http dagster-plus https://mcp.agent.dagster.cloud/mcp --header "Dagster-Cloud-Organization: …" --header "Authorization: Bearer …"

Copy the skill files into your agent

Maturity

v0.8.0 on PyPI (pre-1.0), MIT, single maintainer with occasional outside contributions, "AS IS, WITHOUT WARRANTY OF ANY KIND", no SLA

Labelled by Dagster as Preview: "under active development, and not considered ready for production use… the APIs may change", and published under /guides/labs/

Current, no preview label

Runs

View, launch, terminate, per-step stats, log retrieval, consolidated failure summary

View ✅, Create/Launch ✅, Delete/Terminate ✅, Insights metrics ✅, Update ❌ (Dagster's matrix); run logs View ✅

n/a

Assets

View, search, health, resolve selection syntax, and materialize specific assets (resolve_asset_selectionmaterialize_assets, with run config and partition ranges)

View ✅ and Insights metrics ✅; Create/Launch, Update and Delete marked ❌ — i.e. no asset-level materialization tool, though launching a run is supported

n/a

Schedules & sensors

List, tick history, start/stop

Not supported today — confirmed by Dagster, who expect to add it

n/a

Backfills & partitions

List backfills, launch partitioned jobs, backfill assets over a partition range

Not listed in Dagster's capability matrix

n/a

Code locations & instance health

List/reload code locations, instance status, daemon heartbeats, queued-run counts

Deployments View ✅ and Insights ✅; code locations and daemon health not listed (Dagster+ manages the daemon)

n/a

Alerting, Insights, Dagster+ Issues

Not supported — no alerting, cost/Insights metrics, or Issues equivalent

Alert policies and Dagster+ Issues: View / Create / Update / Delete all ✅. Insights metrics ✅ on Runs, Assets and Deployments. All three are documented Dagster+ features (Issues is in limited early access)

n/a

Multiple instances

Yes — DAGSTER_ENVS maps names to arbitrary URLs and tokens, with a per-tool env argument; you can mix OSS and Dagster+

Deployments within one Dagster+ organization, selected per tool call

n/a

Write safety

17 read tools always registered; the 10 write tools are registered only when DAGSTER_READ_ONLY=false (default true), so clients cannot even see them otherwise. This is a convenience guardrail, not a security boundary: it is a process-level env var read at import, and the API token you configure keeps whatever rights it has

Enforced server-side by Dagster+ token permissions. The docs default to a personal user token; a service user is offered as the alternative for scoped, non-human auth (service users are a Dagster+ Pro feature)

n/a

Support

Best-effort, community, GitHub issues; no SECURITY.md or documented disclosure process

First-party vendor

First-party vendor

Use the official Dagster+ MCP server if you are on Dagster+ and want alerting, Issues or Insights/cost analysis from an agent, want no local runtime, or need vendor support and a supplier your procurement process will accept.

Use this project if you run open-source or self-hosted Dagster, or you need asset-level materialization, schedule/sensor control, backfills, or code-location and daemon operations from an agent.

For Dagster+ users the two are complementary rather than competing — nothing stops you running both. This project is not affiliated with or endorsed by Dagster Labs.

Compatibility

The monitoring and existing action tools are tested with Dagster 1.6+. resolve_asset_selection and materialize_assets require Dagster 1.9+ and verify the required GraphQL capabilities before querying or launching. The RunsFilter field name (jobName vs pipelineName) is auto-detected via schema introspection. Configured asset backfills also feature-detect LaunchBackfillParams.runConfigData and return a clear compatibility error when an older schema does not expose it. Schedule and sensor start/stop work on Dagster 1.6+: the stop mutations are sent with the originId/selectorId argument pair sourced from InstigationState.id/selectorId, which modern Dagster re-parses as a compound id and older versions accept directly, so no version branch is needed. The mutations select error messages via the ... on Error interface fragment rather than per-type fragments, because ScheduleNotFoundError only joined ScheduleMutationResult in Dagster 1.9 and spreading it on 1.6-1.8 would fail document validation.

Development

uv sync --extra dev
uv run ruff check dagster_mcp/    # lint
uv run pytest                     # run the test suite
uv run python -m dagster_mcp      # start server locally

License

MIT

Available Tools

17 tools
get_asset_detailsGet Asset DetailsA

Get detailed metadata for one or more assets: description, lineage, and partitions.

  • asset_keys: list of asset name strings (e.g. ['my_extract', 'my_load'])

Returns per asset: assetKey, description, groupName, op name, isObservable, isPartitioned, partitionDefinition, dependencyKeys (upstream assets), dependedByKeys (downstream assets), and the latest materialization (runId + timestamp).

When to use: to understand an asset's lineage (what it depends on and what depends on it), check if it's partitioned, or get its description. Use search_assets first if you don't know the exact key.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
asset_keysYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read ('Get') and shows it accepts multiple keys in one call, but it does not state read-only semantics explicitly, behavior on missing/invalid keys, or any auth/rate-limit characteristics. An output schema already exists, so the extensive return-field listing adds little behavioral disclosure beyond structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then a parameter bullet, then a 'When to use' block — a clean structure. The long enumeration of return fields is partially redundant given an output schema exists, which costs a little efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because an output schema exists, the return-value explanation is not strictly needed, but usage and the primary parameter are well covered. The only real gap is the undocumented env parameter, which is minor for a read tool of this shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It documents asset_keys well, including type and a concrete example (['my_extract', 'my_load']), but the second parameter, env, is never mentioned, leaving half the parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get detailed metadata for one or more assets') and enumerates what that metadata includes: description, lineage, and partitions. It also distinguishes itself from the sibling search_assets by telling the agent to use that tool first when the key is unknown.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'When to use' block gives concrete conditions (understand lineage, check partitioning, get description) and names the alternative (search_assets) with the exact trigger for preferring it. Nothing about tool selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_asset_healthGet Asset HealthA

Get a consolidated health view for a single asset or all assets in a group.

This is the BEST tool to assess whether assets are healthy and up-to-date.

  • asset_key_or_group: pass either a single asset key (e.g. 'my_report') or a group name (e.g. 'analytics'). If it matches a group, returns health for ALL assets in that group.

Returns per asset:

  • asset_key, group, description

  • last_materialization: {run_id, timestamp, status} of the latest run

  • freshness_policy: {maximum_lag_minutes, cron_schedule} if defined

  • staleness: {is_stale, reasons[]} explaining why the asset is stale

When to use: to check if critical assets are fresh, find stale assets in a group, or verify that recent materializations succeeded. Prefer this over get_recent_materializations when you need a health assessment rather than raw materialization history.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
asset_key_or_groupYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the non-obvious behavior that passing a group name expands to health for ALL assets in that group, and explains staleness semantics via the reasons[] field. It does not explicitly state read-only status, permission needs, or cost/latency implications of a group-wide call, so a small gap remains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then a scoping note, then a bulleted parameter explanation, then usage guidance. The returns list is somewhat redundant against the output schema but is short and aids scanning; no sentence is wasted and formatting is scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with an output schema, the description covers purpose, scope, alternatives, and key result fields well. The only material omission is any mention of the env parameter, which leaves a minor blind spot given 0% schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does so thoroughly for the required asset_key_or_group parameter: dual meaning, concrete examples ('my_report' vs 'analytics'), and the group-expansion consequence. The second parameter, env, is never mentioned in the description or schema, which is the remaining shortfall.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('get a consolidated health view') plus the scope ('single asset or all assets in a group'), and explicitly positions itself against siblings by naming get_recent_materializations. An agent can distinguish it from get_asset_details or get_runs without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit 'When to use' clause (check freshness, find stale assets in a group, verify recent materializations succeeded) and an explicit alternative with the selecting condition ('Prefer this over get_recent_materializations when you need a health assessment rather than raw materialization history'). This is the when/when-not/alternative pattern in full.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_instance_statusGet Instance StatusA

Get a global health check of the Dagster instance. START HERE for any monitoring workflow.

Returns:

  • healthy: boolean — true only if all required daemons are healthy AND no code locations have errors

  • daemons: list of {type, healthy, last_heartbeat, required} for each daemon (scheduler, sensor, run coordinator, etc.)

  • queued_runs_count: number of runs waiting in queue (high count = bottleneck)

  • queued_runs_count_capped: true when the count is a floor rather than exact, which happens only on Dagster versions that do not report a total

  • code_location_errors: list of {name, error} for locations that failed to load

When to use: as the FIRST call in any diagnostic or monitoring flow. If healthy=false, check daemons for unhealthy entries and code_location_errors for loading failures. Follow up with list_code_locations or get_runs as needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it delivers substantive behavioral context the schema cannot: the exact semantics of 'healthy' (all required daemons healthy AND no code location errors), the meaning of a high queued_runs_count, and that queued_runs_count_capped signals a floor rather than exact count on certain versions. It does not state the read-only/side-effect profile explicitly or mention auth or rate limits, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the 'START HERE' directive, then a scannable Returns list and a When-to-use block. Some bullets restate field shapes that the output schema already defines, so it is slightly longer than strictly necessary, but it is well organized and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so enumerating return fields is partly redundant, but the description adds interpretation (bottleneck signal, capped-count caveat, health preconditions) that an agent needs to act on the result. The only real gap is the unexplained 'env' parameter; otherwise the definition is complete for a zero-required-param health check.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions the single 'env' parameter, so an agent gets no guidance on what it selects or when to supply it. With one undocumented parameter, the description does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a global health check of the Dagster instance') and frames the scope as global/instance-level, which cleanly separates it from run-level siblings like get_run_status or get_run_stats. The 'START HERE for any monitoring workflow' line further anchors its role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance: first call in any diagnostic or monitoring flow, with a concrete branching rule (if healthy=false, check daemons and code_location_errors) and named follow-ups (list_code_locations, get_runs). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_materializationsGet Recent MaterializationsA

Get the most recent materializations for an asset, with metadata.

Returns a list of materializations, each with: runId, timestamp, assetKey, and metadataEntries (labels, numeric values, text).

  • asset_key: the asset name as a string (e.g. 'my_daily_report')

  • limit: max materializations to return (default 5)

When to use: to check when an asset was last materialized, track materialization frequency, or inspect metadata from recent runs. For a broader health view (including staleness and freshness), use get_asset_health instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
limitNo
asset_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the return shape (runId, timestamp, assetKey, metadataEntries) but says nothing about permissions, error behavior for missing assets, or pagination. For an un-annotated read tool this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose, then structures return fields, parameter notes, and usage guidance as distinct blocks. Every line earns its place and the alternative tool is placed at the end where it belongs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description's return-value detail is a bonus rather than a requirement, and the when-to-use guidance is thorough. The one gap is the undocumented env parameter, which leaves an agent guessing about environment scoping.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It documents asset_key with a concrete example and explains limit's meaning, which is genuinely helpful, but the third parameter env is left completely unexplained in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('get the most recent materializations for an asset') with clear scope, and explicitly distinguishes itself from the sibling get_asset_health. An agent can tell what it returns (a list of materializations) without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Includes an explicit 'When to use' section listing three concrete scenarios (last materialization time, frequency tracking, metadata inspection) and names the alternative get_asset_health for a broader health view. Routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_run_failure_summaryGet Run Failure SummaryA

Get a consolidated failure diagnosis for a run in a single call.

This is the BEST tool to use when investigating a failed or canceled run. It combines status, step stats, and error logs into one response, avoiding the need to call get_run_status + get_run_logs + get_run_stats separately.

Returns:

  • status, job_name, duration_seconds

  • failed_steps: list of {step_key, duration, error} for each failed step

  • root_cause_error: the RunFailureEvent error (if any)

  • all_step_durations: timing for every step (not just failed ones)

  • suggestions: automated diagnostic hints (e.g. 'Multiple steps failed', 'Step was retried before failing', 'Run was canceled')

If the run did not fail, returns {message: 'Run did not fail.'}.

When to use: always prefer this over get_run_logs for failed runs. Use get_run_logs only when you need the full event stream.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden, and it does substantial work: it enumerates the response sections (failed_steps, root_cause_error, all_step_durations, suggestions) and discloses the non-failure behavior ('returns {message: Run did not fail.}'). It does not mention auth requirements or rate limits, but for a read-only diagnostic tool the behavioral surface is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then structured return fields and a when-to-use section. Efficient sections with no filler sentences, though the enumerated return list is somewhat verbose given an output schema already exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the detailed return enumeration is redundant but not harmful. The routing guidance and failure/non-failure behavior make it complete enough to invoke correctly; the only real gap is unexplained parameter semantics, particularly the optional env.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions either parameter. run_id is inferable from context, but env is entirely undocumented in both schema and description — its meaning, valid values, and default behavior are nowhere stated, so the description does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('consolidated failure diagnosis for a run') and immediately differentiates itself from siblings by naming get_run_status, get_run_logs, and get_run_stats as the calls it replaces. An agent can tell exactly what this tool does and how it differs from adjacent tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('always prefer this over get_run_logs for failed runs'), an explicit exclusion condition for the alternative ('use get_run_logs only when you need the full event stream'), and a scoping statement for investigating failed or canceled runs. Alternatives and their selection criteria are fully enumerated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_run_logsGet Run LogsA

Get structured log events for a run, with optional severity filtering and pagination.

Returns events with __typename, timestamp, message, level, and (where applicable) stepKey and error details. Events include step starts/completions, failures, retries, materializations, and run-level events. EngineEvent events also carry metadataEntries — a list of {label, description, value} dicts (e.g. run worker image, k8s pod name, step keys) surfaced by the engine.

Parameters:

  • run_id: the run to fetch logs for

  • level_filter: only return events at this level or above, ordered DEBUG < INFO < WARNING < ERROR < CRITICAL. Filtering at 'WARNING' therefore also returns ERROR and CRITICAL events. ExecutionStepFailureEvent and RunFailureEvent are always included when filtering at 'ERROR' or below, regardless of their own level field. Default: None (return all events).

  • cursor: pagination cursor returned in previous response. Pass the cursor from the last call to get the next page.

  • limit: max events per page (default 100)

When to use: to investigate what happened during a run. For a quick failure diagnosis, prefer get_run_failure_summary instead — it returns a consolidated view in a single call. Use get_run_logs when you need the full event stream or want to filter by level.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
limitNo
cursorNo
run_idYes
level_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and largely meets it: it enumerates the returned fields (__typename, timestamp, message, level, stepKey, error details) and event categories, and discloses two non-obvious behaviors — the level_filter ordering semantics and that ExecutionStepFailureEvent/RunFailureEvent are always included at ERROR or below regardless of their level. It never explicitly states that the operation is read-only or what happens on a missing/invalid run_id, which is the remaining gap given zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line capability statement, then return contents, then a labeled parameter list, then a labeled 'When to use' block. No sentence is redundant and the structured layout makes the tool skimmable despite its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only log-retrieval tool with no annotations, the description supplies return contents, filtering semantics, pagination mechanics, and sibling routing. The output schema exists, so the return-value detail is bonus rather than a requirement, and nothing an agent needs to call this correctly is missing apart from the minor env omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description has to compensate, and it does for 4 of the 5 parameters — level_filter gets a thorough semantic explanation (ordering, threshold behavior, always-included failure events, default) and cursor/limit/run_id are all clarified. The env parameter is never mentioned in either the schema or the description, so one parameter remains completely opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get structured log events for a run') plus the return shape, and explicitly distinguishes itself from the nearest sibling, get_run_failure_summary. An agent can separate this tool from the other 16 siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit 'When to use' section that names the alternative (get_run_failure_summary) and the exact condition that selects it ('quick failure diagnosis'), then states when this tool is preferred ('full event stream or want to filter by level'). Both directions of the routing decision are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_runsGet RunsA

List recent pipeline runs. Start here to discover what has been running.

Returns runId, status, jobName, startTime, endTime, and tags for each run. Use the returned runId to drill into details with get_run_status, get_run_logs, get_run_stats, or get_run_failure_summary.

Filtering:

  • job_name: filter by job (e.g. 'my_etl_job')

  • statuses: filter by one or more statuses. Valid values: 'SUCCESS', 'FAILURE', 'CANCELED', 'STARTED', 'QUEUED', 'STARTING', 'CANCELING', 'NOT_STARTED'. Examples: ['FAILURE'], ['FAILURE', 'CANCELED'], ['STARTED', 'QUEUED']

  • limit: max runs to return (default 10)

Typical workflows:

  • Find recent failures: get_runs(statuses=['FAILURE'])

  • Check if a job ran today: get_runs(job_name='my_job', limit=5)

  • Monitor active runs: get_runs(statuses=['STARTED', 'QUEUED'])

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
limitNo
job_nameNo
statusesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden. It discloses the returned fields (runId, status, jobName, startTime, endTime, tags) and the limit default, which is genuinely useful, but says nothing about pagination/result caps, ordering guarantees, or what the 'env' scope does. For a list tool the safety profile is low risk, so this is adequate but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the one-line purpose, then return fields, then sibling routing, then grouped filtering, then worked examples. Every line is scannable and none is filler; the example block earns its space by making the filter syntax unambiguous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not strictly required, yet the description still names the fields, which is a bonus. Combined with the status enum and examples, an agent has nearly everything needed; the only real omission is any guidance on the undocumented 'env' parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: job_name is explained with an example, statuses enumerates all eight valid values with example lists, and limit documents its default of 10. The gap is 'env', which is neither described in the schema nor mentioned in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb+resource ('List recent pipeline runs') and immediately distinguishes itself from the many get_run_* siblings by declaring itself the entry point ('Start here to discover what has been running') and routing detailed lookups elsewhere. An agent can place it in the tool family without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the four drill-down alternatives (get_run_status, get_run_logs, get_run_stats, get_run_failure_summary) and chains to them via runId, then supplies three concrete invocation patterns ('Find recent failures', 'Check if a job ran today', 'Monitor active runs'). The when-to-use decision is fully specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_run_statsGet Run StatsA

Get per-step execution statistics for a run: timing, materializations, and expectations.

Returns runId, status, and a stepStats array where each entry has: stepKey, status, startTime, endTime, materializations (with labels), and expectationResults (with success flag and labels).

When to use: to find slow steps (compare startTime/endTime), check which steps materialized assets, or verify expectation results. For failed runs, prefer get_run_failure_summary which includes step stats alongside error details and suggestions.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does add helpful behavioral context by detailing the returned stepStats structure and practical use cases, and the 'Get' verb implies a read operation. However, it does not explicitly state read-only status, side-effect profile, permission requirements, or rate limits, leaving gaps in operational transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by a structured return summary and a clear usage paragraph. It is well organized, though the return-field detail is somewhat redundant given the presence of an output schema, and could be tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with an output schema and no annotations, the description covers purpose, usage, return shape, and sibling routing well. However, it leaves the optional env parameter completely unexplained and provides no explicit safety or permission context, so important gaps remain for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both input parameters, and the description does not explain the required run_id or the optional env parameter. It mentions a 'run' conceptually but adds no format, default, or selection semantics beyond what the bare schema already encodes, so the parameter gap is entirely unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get per-step execution statistics for a run') and enumerates the data returned (timing, materializations, expectations). It also explicitly distinguishes itself from a sibling, get_run_failure_summary, making the scope clear without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: find slow steps, check which steps materialized assets, or verify expectation results. It also names the preferred alternative for failed runs and the condition that selects it, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_run_statusGet Run StatusA

Get full details for a single run: status, config, tags, and run lineage.

Returns: runId, status, startTime, endTime, jobName, tags, runConfigYaml, rootRunId, parentRunId, resolvedOpSelection.

Use rootRunId and parentRunId to understand re-execution chains — if parentRunId is set, this run was re-executed from another run. resolvedOpSelection shows which steps were selected for re-execution.

When to use: after get_runs to inspect a specific run, or to check whether a run is a re-execution of a previous one.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
run_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it delivers real behavioral context: it explains that parentRunId signals re-execution and what resolvedOpSelection means, which goes beyond the structured fields. It still omits error behavior for an unknown run_id and any permission/auth expectations, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded and organized into a purpose line, a Returns list, interpretation notes, and a When-to-use line, so it scans well. The Returns field enumeration partially duplicates the output schema, which is slight redundancy rather than waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because an output schema exists, the description need not explain return values, and instead spends its budget on lineage semantics and usage routing, which is the right allocation. The one real hole is the undocumented env parameter, which leaves an agent guessing at its meaning.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are two parameters: run_id is only loosely implied by 'a single run', and env is never mentioned anywhere in the description or schema. For a tool where the schema provides no parameter documentation, the description should have compensated and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get full details for a single run') and enumerates the payload (status, config, tags, lineage), which clearly separates it from the list-oriented get_runs. It does not explicitly contrast with close siblings like get_run_logs or get_run_stats, so the differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'When to use' clause gives an explicit trigger ('after get_runs to inspect a specific run') and a second concrete use case (checking whether a run is a re-execution). It names the upstream alternative get_runs but gives no exclusions against the other get_run_* siblings, so routing is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tick_historyGet Tick HistoryA

Get recent tick history for a schedule or sensor — essential for detecting silent failures.

  • instigator_name: exact name of the schedule or sensor (from list_schedules/list_sensors)

  • instigator_type: 'SCHEDULE' or 'SENSOR'

  • limit: max ticks to return (default 20)

  • repository_name / location_name: optional, to disambiguate when the same name exists in several code locations (see list_schedules/list_sensors)

Returns per tick: tick_id, status (SUCCESS/FAILURE/SKIPPED), timestamp, error message (if failed), and run_ids (runs launched by this tick).

When to use: when a schedule or sensor is RUNNING but data is not being produced. Common patterns to look for:

  • All ticks SKIPPED: sensor condition not met, or misconfigured

  • Ticks with FAILURE status: the schedule/sensor code is erroring

  • Ticks with SUCCESS but empty run_ids: sensor evaluated but decided not to launch

  • Missing ticks: daemon may be unhealthy (check get_instance_status)

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
limitNo
location_nameNo
instigator_nameYes
instigator_typeYes
repository_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantial work: it enumerates the returned fields (tick_id, status, timestamp, error, run_ids) and, more importantly, explains how to interpret each status/run_ids combination. It does not cover auth requirements, rate limits, or the read-only nature explicitly, so it falls just short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then organized into a parameter block and a diagnostic block. Every bullet on interpretation carries signal, though the description runs somewhat long relative to a six-parameter read tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value structure need not be spelled out, yet the description still adds interpretive meaning on top of it. Nearly complete for correct invocation, with the undocumented 'env' parameter the only notable omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it documents five of six parameters including the effective enum for instigator_type ('SCHEDULE' or 'SENSOR') and the disambiguation role of repository_name/location_name. The 'env' parameter is never mentioned, leaving a real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get recent tick history for a schedule or sensor') and immediately frames the diagnostic goal ('detecting silent failures'). This cleanly separates it from get_runs/get_run_logs, which operate on runs rather than ticks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to use: when a schedule or sensor is RUNNING but data is not being produced' plus four named diagnostic patterns that map observed results to causes. It also routes to a sibling alternative ('Missing ticks: daemon may be unhealthy — check get_instance_status') and names list_schedules/list_sensors as the source of valid names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_backfillsList BackfillsB

List recent asset backfills with their status and partition progress.

Returns per backfill: backfillId, status, numPartitions, timestamp, partitionNames, and partitionSetName.

  • limit: max backfills to return (default 10)

When to use: to monitor in-progress backfills or review recent ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only list operation but doesn't confirm safety, auth requirements, pagination, or behavior details. Only the return fields are listed, which is more about output than behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then lists return fields and the limit parameter, and finishes with 'When to use.' Generally efficient, though listing all return fields is somewhat redundant given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param tool with no annotations and a documented output schema, the description covers purpose and one parameter but omits 'env', auth/prereqs, and sibling routing. It's adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description should compensate. It explains 'limit: max backfills to return (default 10),' adding meaning for one parameter. The 'env' parameter is entirely undocumented in both schema and description, leaving a gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List recent asset backfills with their status and partition progress'), clearly distinguishing it from run-oriented siblings like get_runs or get_recent_materializations. It's a bit generic but the resource domain (backfills) is unique among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides 'When to use: to monitor in-progress backfills or review recent ones,' which gives implied usage context. However, it doesn't contrast against alternatives (e.g., get_recent_materializations or get_runs) or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_code_locationsList Code LocationsA

List all code locations and their load status.

Returns per location: name, loadStatus (LOADED/LOADING), and either the repositories within it or a PythonError if loading failed.

When to use: after a deployment to verify code locations loaded correctly, or when get_instance_status reports code location errors. If a location failed to load, use reload_code_location to retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full behavioral burden. It does describe return shape (name, loadStatus enum values, repositories or PythonError), which is useful, but since an output schema exists the return detail is somewhat redundant with structured data. It adds the load-failure retry path, a genuinely useful behavioral fact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded 'List all...' then return details then usage. Every sentence earns its place; no waste. Slightly dense but structured well.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values needn't be fully enumerated in prose (though they are). The description covers the main usage scenarios and a successor tool, but omits any mention of the env parameter, leaving a small but notable gap for an otherwise simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one optional param (env) with 0% schema description coverage, but the value should come from the description. The description mentions nothing about env, leaving the sole parameter undocumented. Baseline for a single optional param is modest, but this gap is a real loss.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (code locations and their load status). It doesn't explicitly differentiate from sibling list tools, but no sibling covers code locations, so the resource itself is distinct enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives 'When to use' triggers (after deployment, when get_instance_status reports errors) and names a related sibling action (reload_code_location). No 'when-not-to-use', but the routing context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_jobsList JobsA

List jobs across code locations, optionally filtered by repository or location.

Returns per job: repository name, code location name, job name, and description. repository_name and location_name are independent exact-match filters; when both are supplied, a job must match both.

An empty result when filtering means no match was found among loaded code locations. If a code location relevant to the filter failed to load or is still loading, list_jobs raises instead of silently reporting no jobs — check list_code_locations for details. Calling with no filters lists whatever is loaded and never raises for a broken location; use list_code_locations or get_instance_status to check load health directly.

When to use: as a starting point to explore what jobs exist, or to find the exact job name and repository_location needed for launch_job.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
location_nameNo
repository_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that filtered calls raise when a relevant code location failed to load or is still loading, while an unfiltered call never raises. It also defines empty-result semantics, though it omits pagination or read-only confirmation beyond the implied 'List'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and the returned fields, then filtering semantics, then edge cases, then usage. Every sentence is substantive, with only minor repetition around 'check list_code_locations' appearing twice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be documented, yet the description usefully names the per-job fields anyway. Filtering, error behavior, and usage are all covered; only the env parameter and pagination behavior remain unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does for two of three params: repository_name and location_name are independent exact-match filters that combine with AND semantics. The env parameter is never explained in either schema or description, which is the remaining gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List jobs across code locations') plus the optional filter dimensions. It also names the related siblings (list_code_locations, get_instance_status, launch_job) so the agent can distinguish this from its neighbors without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Has an explicit 'When to use' section: as a starting point to explore jobs, or to find the exact job name and repository_location needed for launch_job. It also clarifies the alternative path (use list_code_locations or get_instance_status to check load health), leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_schedulesList SchedulesA

List all schedules with their status, cron expression, target job, and next tick.

Returns per schedule: name, cron expression, status (RUNNING/STOPPED), next_tick timestamp, target job name, repository, and code location.

When to use: to check which schedules are active, verify cron timing, or find schedules that are stopped and might need attention. If a schedule is RUNNING but jobs aren't executing, use get_tick_history to inspect recent ticks for errors. Raises when a code location is unavailable rather than returning a partial list that could be mistaken for the complete set of schedules.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does disclose an important failure semantic: it raises when a code location is unavailable instead of returning a partial list that could be mistaken for complete. It does not cover auth requirements, rate limits, or pagination, so it falls short of fully compensating for the missing annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded and organized into purpose, return shape, and when-to-use. Slightly redundant: the opening sentence lists the same fields (status, cron expression, target job, next tick) that the following 'Returns per schedule' sentence re-enumerates in expanded form.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema present, the description covers purpose, usage routing, and error behavior adequately, and its return-value detail is optional redundancy rather than a gap. The one real omission is any explanation of the 'env' parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter ('env') at 0% schema description coverage, and the description never mentions it — no guidance on what environment values are valid, what the default null means, or whether it scopes the listing. The schema does not compensate, so the agent is left guessing about the tool's only input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all schedules') and enumerates the exact fields returned (status, cron expression, target job, next tick), which lets an agent distinguish it from siblings like list_jobs or list_sensors without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to use' block names three concrete scenarios (check active schedules, verify cron timing, find stopped schedules) and routes the agent to get_tick_history for the specific failure mode of a RUNNING schedule whose jobs aren't executing. That is a named alternative plus the condition that selects it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sensorsList SensorsA

List all sensors with their status and target jobs.

Returns per sensor: name, status (RUNNING/STOPPED), list of target job names, repository, and code location.

When to use: to check which sensors are active and what jobs they trigger. If a sensor is RUNNING but not producing runs, use get_tick_history to inspect recent ticks — it will show skipped ticks, errors, or runs launched. Raises when a code location is unavailable rather than returning a partial list that could be mistaken for the complete set of sensors.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does disclose a meaningful failure trait: it raises when a code location is unavailable rather than returning a partial list that could be mistaken for the complete set. It does not state read-only semantics, permissions, or whether the env parameter affects visibility, but the error contract is a genuinely useful disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then returns, then usage, then edge-case behavior — a clean progression with no filler. The return-field enumeration is somewhat redundant given an output schema exists, which keeps it just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage, alternative routing, and error semantics well enough for an agent to call it correctly, and the output schema means return values did not need restating. The only real gap is the undocumented env parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (env) with 0% schema description coverage, so the description is the only place its meaning could be explained — and it never mentions env at all. The rich description of return fields does not compensate for the undocumented input parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all sensors') plus scope ('with their status and target jobs'), and enumerates the returned fields so an agent knows exactly what it gets. It is clearly distinguishable from siblings like list_jobs, list_schedules, and get_tick_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'When to use' clause (check which sensors are active and what jobs they trigger) and names the alternative tool get_tick_history with the exact condition that selects it (RUNNING but not producing runs). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_asset_selectionResolve Asset SelectionA

Resolve Dagster asset-selection syntax into concrete assets without launching a run.

Supported syntax:

  • key predicates (key:orders or bare orders) with * wildcards

  • group:, tag:, kind:, and owner: predicates

  • case-insensitive and, or, and not with parentheses

  • roots(...) and sinks(...)

  • upstream/downstream traversal such as +orders, 2+orders, orders+, orders+2, or 1+orders+2

Returns asset_keys as slash-delimited strings ready to pass to materialize_assets or backfill_assets, plus compact GraphQL-shaped asset summaries. This tool is read-only and does not filter external, observable, non-executable, or partitioned matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
asset_selectionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It states it is read-only, does not launch a run, and does not filter external/observable/non-executable/partitioned matches. However, it does not state authentication requirements, rate limits, or potential side effects beyond no launch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, followed by a structured syntax list and return information. It is appropriately sized for a complex syntax tool, though the syntax examples could be slightly condensed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (syntax parsing) and that an output schema exists, the description is nearly complete: it explains syntax, return format, and read-only behavior. It misses guidance on the 'env' parameter and explicit when-to-use vs alternatives, but covers the core resolution behavior well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so parameters are undocumented. The description provides extensive detail about the supported syntax for 'asset_selection', but does not explain the 'env' parameter or the expected format for asset_selection's top-level structure beyond syntax examples. This partially compensates but leaves the env parameter ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (resolve), resource (Dagster asset-selection syntax into concrete assets), and explicitly distinguishes from launching a run. This clearly differentiates it from 'search_assets' and other read-only tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: it resolves syntax without launching a run and its output is ready to pass to materialize_assets or backfill_assets. However, it does not explicitly name when to use this vs search_assets or how it differs from listing assets via get_asset_details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_assetsSearch AssetsA

Search and list assets by name prefix or group. Use this to discover assets.

Returns per asset: assetKey, groupName, description, isPartitioned, op name.

  • prefix: case-insensitive substring match on any part of the asset key (e.g. 'raw_' finds 'raw_orders', 'raw_users')

  • group: exact match on groupName (case-insensitive, e.g. 'analytics')

  • Both filters can be combined.

  • If neither is passed, returns ALL assets.

When to use: to discover available assets before calling get_asset_details or get_asset_health. Use prefix for fuzzy search, group for scoped listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
groupNo
prefixNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and mostly does: it discloses case-insensitive substring matching, exact group matching, combinability, and that passing neither filter returns ALL assets. That unbounded-default disclosure is genuinely useful. It stops short of pagination, result limits, or whether ordering is guaranteed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose followed by tight bullets, with the highest-value routing guidance last. The 'Returns per asset: ...' line partially duplicates the output schema and is the one sentence that does not fully earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be spelled out, and the description nonetheless covers discovery intent, filter semantics, and the default-all behavior. Missing only pagination/limit behavior and any explanation of the 'env' parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate — and it documents prefix and group well, including matching semantics and examples. However, the third parameter 'env' is never mentioned in either the schema or the description, leaving a genuine gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search and list assets') and scopes it to two filter modes, name prefix and group. It also names the siblings it precedes (get_asset_details, get_asset_health), so the agent can separate discovery from detail/health lookups without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'When to use' section names the downstream tools it feeds and prescribes which filter to pick ('prefix for fuzzy search, group for scoped listing'). It also states the no-filter fallback, removing the main ambiguity for an all-optional-parameter tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.10.0
    • Changedlist_jobs6 fields changed
      • addedInput schema / properties / location_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / repository_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedOutput schema / properties / result / items / additionalProperties
        Removed value: -true
      • addedOutput schema / properties / result / items / description
        Added value: +"Public job metadata returned by :func:`list_jobs`."
      • addedOutput schema / properties / result / items / properties
        Added value: +{
        +  "description": {
        +    "type": "string"
        +  },
        +  "job": {
        +    "type": "string"
        +  },
        +  "location": {
        +    "type": "string"
        +  },
        +  "repository": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / items / required
        Added value: +[
        +  "repository",
        +  "location",
        +  "job",
        +  "description"
        +]
  2. 17 tool updatesv0.8.0
    • First observedget_asset_details
    • First observedget_asset_health
    • First observedget_instance_status
    • First observedget_recent_materializations
    • First observedget_run_failure_summary
    • First observedget_run_logs
    • First observedget_run_stats
    • First observedget_run_status
    • First observedget_runs
    • First observedget_tick_history
    • First observedlist_backfills
    • First observedlist_code_locations
    • First observedlist_jobs
    • First observedlist_schedules
    • First observedlist_sensors
    • First observedresolve_asset_selection
    • First observedsearch_assets

TDQS

A3.8/5.0

Scored across 17 tools

Disambiguation4/5

Run-inspection tools (get_runs, get_run_status, get_run_logs, get_run_stats, get_run_failure_summary) overlap in scope, but the descriptions explicitly cross-reference each other and state when to prefer one over another (e.g. get_run_failure_summary over get_run_logs). Asset tools (search_assets, get_asset_details, get_asset_health, get_recent_materializations) are similarly well-delineated. Only mild potential confusion remains between stats/logs/failure_summary for a failed run.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (get_runs, list_schedules, search_assets, resolve_asset_selection, get_instance_status). Verbs are used predictably: list_/search_ for discovery, get_ for detail, resolve_ for computation. No mixed conventions.

Tool Count4/5

17 tools is on the heavier side but each covers a distinct slice of Dagster monitoring (runs, assets, schedules, sensors, ticks, code locations, instance health). Nothing feels redundant, though the set is slightly large for a read-only monitoring surface.

Completeness3/5

Read/observability coverage is strong, but several descriptions reference tools that are absent from the set (materialize_assets, backfill_assets, launch_job, reload_code_location), creating dead-end references an agent may follow. No write/action tools exist despite the server hinting at them, so lifecycle coverage is incomplete.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server providing intelligence infrastructure for AI agent pipelines, including vector memory, drift detection, model routing, skills discovery, session management, codebase indexing, and context compression, all running locally with zero LLM/API calls.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that gives AI agents real-time observability into Apache Kafka clusters, enabling natural language queries for broker health, consumer lag, and diagnostics.
    MIT