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

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_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.7/5.0
Behavior4/5

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

No annotations are provided, so the description must disclose behavioral traits. It details the return fields: assetKey, description, groupName, op name, isObservable, isPartitioned, partitionDefinition, dependencyKeys, dependedByKeys, and latest materialization. This implies a read-only operation with no destructive effects. However, it does not explicitly state that the tool is read-only or mention any authorization requirements, which would have earned 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.

Conciseness5/5

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

The description is concise and well-structured. It begins with a clear single-sentence summary, lists the return fields in a bullet-like format, and ends with usage guidance. Every sentence adds value without redundancy, making it easy for an AI agent to parse quickly.

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?

The tool has moderate complexity (2 parameters, 1 required) and an output schema (not shown but indicated). The description provides all necessary information: purpose, parameter details, comprehensive return fields, and usage context with sibling differentiation. There are no significant gaps given the available context signals.

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. It explains the required 'asset_keys' parameter as 'list of asset name strings (e.g. ['my_extract', 'my_load'])', which adds meaning beyond the schema type. The optional 'env' parameter is not explained, but it is less critical as it has a default of null. The description adds value for the key parameter, earning a 4.

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 starts with 'Get detailed metadata for one or more assets: description, lineage, and partitions,' which clearly states the action (Get), resource (assets), and specific data fields (description, lineage, partitions). This distinguishes it from siblings like search_assets (used for finding assets by name) and get_asset_health (which focuses on health status).

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 description explicitly includes 'When to use: to understand an asset's lineage... Use search_assets first if you don't know the exact key.' This provides clear guidance on appropriate use cases and directs users to an alternative tool when the asset key is unknown, which is highly helpful for an AI agent.

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

get_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?

Describes behavior for group matching, return structure, and staleness explanation. No annotations, but description covers key aspects. Could mention performance or error cases.

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?

Well-structured with clear sections, bullet points, and no fluff. Every sentence adds value.

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 essential return fields and usage, but could add notes on error handling or limitations. Output schema exists, so return value explanation is bonus.

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?

Main parameter asset_key_or_group is well-explained with examples and behavior. However, optional env parameter has no explanation despite 0% schema coverage.

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?

Clearly states it provides a consolidated health view for assets, with explicit details on return fields and distinction from sibling get_recent_materializations.

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 includes 'When to use' section with concrete use cases and recommends preferring this over get_recent_materializations for health assessments.

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

get_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.3/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. It discloses the return structure in detail (healthy, daemons, queued_runs_count, queued_runs_count_capped, code_location_errors) and explains the meaning of 'healthy' and the cap condition. It implies a read-only operation but does not explicitly state side effects, permissions, or error cases beyond code location errors. This is strong but not exhaustive, hence a 4.

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?

The description is well structured: a one-sentence purpose with emphasis ('START HERE'), a clear bulleted list of return fields with explanations, and a dedicated 'When to use' paragraph. It front-loads the key message and wastes no words. Every sentence adds value, and the length is justified by the detailed return spec.

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?

The return values are fully explained (healthy logic, daemon list shape, queued runs count and cap, code location errors), and follow-up tools are suggested. There is an output schema present, which likely covers the return types, so the description doesn't need to repeat that. However, the env parameter is unexplained, and there is no mention of how to handle unreachable instances or authentication. These gaps reduce completeness slightly.

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?

The tool has one parameter (env) with zero schema description coverage (0%). The description never mentions env, its purpose, or expected values. This is a gap: an agent cannot correctly set this parameter based on the description alone. While the parameter is optional, the lack of any guidance is a notable omission.

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 clear, specific purpose: 'Get a global health check of the Dagster instance.' It defines the resource (instance) and the action (get health check), and explicitly positions itself as the first step in monitoring workflows. It distinguishes itself from siblings by framing its global scope and hinting at follow-ups with list_code_locations or get_runs.

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 explicitly states when to use: 'as the FIRST call in any diagnostic or monitoring flow.' It also gives conditional logic: if healthy=false, check daemons and code_location_errors, and suggests follow-up tools. This is clear, actionable guidance that tells the agent exactly when to invoke it and what to do next.

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

get_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?

There are no annotations to rely on. The description correctly implies a read-only operation via 'get', and details the return structure, but does not explicitly state that it performs no side effects or require specific permissions. Additional behavioral traits like pagination or rate limits are not addressed.

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?

The description is well-structured with a clear purpose statement, followed by return field details, parameter descriptions, and usage guidance. Each sentence adds value with no redundancy. It is front-loaded and concise.

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?

The description is comprehensive for a read-only list tool: purpose, return structure, two parameters, and usage guidance. However, it omits the env parameter and does not explain how the tool relates to other sibling tools like get_asset_details. The existence of an output schema reduces the need for extensive return value documentation, but the missing env param is a notable gap.

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?

The description covers two of three parameters (asset_key with example, limit with default), but omits the env parameter entirely. Since schema coverage is 0%, the description must compensate, but the omission of env is a 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?

The description opens with a clear statement: 'Get the most recent materializations for an asset, with metadata.' It further specifies the fields returned, distinguishing the tool from the sibling get_asset_health which is for broader health.

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 description includes a dedicated 'When to use' section that lists specific use cases (check last materialization, track frequency, inspect metadata) and explicitly recommends get_asset_health for a broader view, providing clear guidance on when not to use this tool.

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

get_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.3/5.0
Behavior4/5

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

Since no annotations are provided, the description fully describes the behavior: it returns consolidated failure info, lists the exact fields returned, includes an edge case ('If the run did not fail, returns {message: 'Run did not fail.'}'), and mentions automated diagnostic hints. It does not cover authentication or rate limits, but these are not critical for this query tool.

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?

The description is concise and well-structured. It opens with a clear purpose statement, then provides usage guidance, lists return fields in a bulleted list, and ends with tool selection advice. Every sentence adds value without redundancy.

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 has an output schema, the description sufficiently explains the return values, including edge cases. However, the lack of parameter description slightly reduces completeness. Overall, it provides rich context for an AI agent to understand the tool's function and output.

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 coverage is 0%, so the description should explain the parameters (run_id and optional env). However, it only implicitly implies run_id by saying 'for a run' but provides no details about parameter format, required vs optional, or the meaning of env. The output schema is rich but the input parameters are not described.

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 clearly states the tool's purpose: 'Get a consolidated failure diagnosis for a run in a single call.' It distinguishes itself from sibling tools like get_run_status, get_run_logs, and get_run_stats by combining their outputs, making it the best choice for failed or canceled runs.

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 description explicitly tells when to use this tool: 'always prefer this over get_run_logs for failed runs.' It also specifies when to use alternatives: 'Use get_run_logs only when you need the full event stream.' This provides clear guidance on tool selection.

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

get_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.4/5.0
Behavior4/5

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

With no annotations to carry safety or side-effect info, the description does a solid job: it details return event types, explains the level_filter ordering and special inclusion of failure events, and describes pagination via cursor. It could be more explicit that this is a read-only operation and doesn't mention rate limits, but these are minor omissions given the thoroughness.

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?

The description is well-structured with a lead summary, event details, a parameter list, and a usage note. It is front-loaded with the core purpose, and every sentence adds value—no filler or repetition. The organization makes it easy to scan.

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?

The description covers the main use case well, including return event structure, filtering behavior, and pagination. It points to a sibling for alternative usage. However, it does not mention the 'env' parameter, possible error conditions, or rate limits. Given the tool's complexity and the absence of annotations, these omissions leave some ambiguity, though not enough to prevent correct use.

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?

The description explains run_id, level_filter (with detailed semantics), cursor (pagination), and limit (default), but completely omits the 'env' parameter that appears in the schema. Since schema description coverage is 0%, this gap means the agent must guess the purpose of 'env'. The documented parameters are explained well, but the missing one prevents a higher score.

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 clearly states the tool 'gets structured log events for a run' with optional filtering and pagination. It distinguishes itself from sibling tools by explicitly referencing get_run_failure_summary as the alternative for quick failure diagnosis, making its purpose unambiguous.

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 description includes a dedicated 'When to use' section that tells the agent exactly when to prefer this tool ('full event stream or filter by level') versus the sibling get_run_failure_summary for consolidated failure info. This is explicit and actionable.

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

get_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.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. It explicitly lists returned fields (runId, status, jobName, etc.) and explains filtering parameters with valid values and examples. It does not mention pagination or ordering, but for a list operation, transparency is high.

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 well-structured with sections for returns, filtering, and typical workflows. It is somewhat verbose but every sentence adds value. The formatting aids readability. A slightly more concise version could still be effective, but it is not excessive.

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 (4 params, 0 required, output schema exists), the description covers the main parameters and usage patterns. It explains return fields and provides examples. It could mention default sorting or limit behavior, but overall it is complete for a list tool.

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 coverage is 0%, so the description must compensate. It explains job_name, statuses (with valid values and examples), and limit (default 10). However, the env parameter is not described, so coverage is incomplete. Overall, it adds significant meaning beyond the schema.

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 explicitly states 'List recent pipeline runs' and frames it as the starting point for discovery. It also distinguishes from sibling tools like get_run_status by indicating that get_runs is for initial listing and returns runIds for further drill-down.

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 description provides clear guidance: 'Start here to discover what has been running.' It offers typical workflows such as finding failures, checking job runs, and monitoring active runs. It also directs users to use the returned runId with other tools, effectively differentiating when to use each sibling.

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

get_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

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It details the return structure (runId, status, stepStats with fields) and implies a read-only operation. Could note lack of side effects, but overall sufficient.

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?

Concise, well-structured with bullet points summarizing return fields. Every sentence adds value; no fluff.

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 output schema exists, description provides a useful summary. Could mention how to obtain run_id (from get_runs), but not critical. Covers essential aspects for a stats tool.

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%, yet the description does not explain the parameters 'env' or 'run_id' beyond their presence in the schema. No semantic guidance on formatting or purpose.

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?

Clearly states the tool gets per-step execution statistics for a run, listing specific data points (timing, materializations, expectations). Distinguishes from sibling tools like get_run_failure_summary.

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 states when to use (find slow steps, check materializations, verify expectations) and when not to (for failed runs, prefer get_run_failure_summary), with alternative provided.

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

get_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

A4.1/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. It explains the meaning of key return fields like rootRunId and parentRunId for re-execution chains, and implies this is a read-only operation. However, it does not explicitly state that the tool has no side effects or discuss authentication needs, which would elevate 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 well-structured, starting with a clear purpose sentence, then listing returned fields, explaining key fields, and ending with usage guidance. It is concise but could be slightly shorter without losing meaning. Overall, efficiently communicates essential information.

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?

Given the tool has two parameters and an output schema, the description covers the main use case and explains return field semantics. However, it omits description of the env parameter, which is a gap. The mention of output fields is helpful but not essential since an output schema exists. Completeness is adequate but not thorough.

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 coverage is 0%, so the description should compensate. It mentions run_id implicitly but does not describe the env parameter or provide format/usage details for run_id. This leaves the agent uncertain about what to pass for env (e.g., allowed values) and whether run_id is a UUID or name.

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 clearly states the tool retrieves full details for a single run, including status, config, tags, and lineage. It distinguishes itself from sibling tools like get_runs (which lists runs) and get_run_logs/get_run_stats by focusing on a specific run and its lineage details.

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 description explicitly says '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.' This provides clear context for when the tool is appropriate and implies alternatives (e.g., get_runs for listing).

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

get_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.1/5.0
Behavior3/5

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

No annotations exist, so description carries burden. It explains return fields (tick_id, status, etc.) and optional disambiguation parameters. Lacks disclosure on safety (read-only?), auth needs, or rate limits.

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-structured with bullet points and sections. Front-loaded with purpose. Slightly verbose but each sentence adds value.

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?

Output schema exists; description covers return values. Differentiates well among 16 siblings. Adequate for a tool with moderate complexity.

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 coverage is 0%, but description explains 5 of 6 parameters: instigator_name, instigator_type, limit, repository_name, location_name. Missing 'env' parameter explanation.

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 clearly states the tool gets tick history for schedules or sensors, with a specific verb and resource. It distinguishes from siblings like list_schedules/list_sensors by focusing on history rather than listing.

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?

Includes a 'When to use' section with common patterns (e.g., all ticks skipped, failures). Provides actionable guidance but does not explicitly say when not to use or name alternatives.

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

list_backfillsA

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

A4/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 discloses the return format and a parameter (limit) but does not address mutability, side effects, or permissions. The tool is likely read-only, but this is not explicitly confirmed, and no contradictions exist.

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?

The description is very concise with two short paragraphs and a bullet. It is front-loaded, no redundant sentences, and every line adds value. Structure is easy to scan.

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 output schema exists (covering return values) and the sibling list is provided, the description covers the core purpose and usage context. The omission of the 'env' parameter is a minor gap, but overall adequate for a monitoring 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?

Schema description coverage is 0%, so the description must compensate. It explains the 'limit' parameter (max backfills, default 10), adding value beyond the schema's type and default. However, the 'env' parameter is not described, 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?

The description clearly states the verb 'list' and the resource 'recent asset backfills', and specifies the returned information (status, partition progress, etc.). This distinguishes it from siblings like list_jobs which list different resources.

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 description includes a 'When to use' section explicitly stating 'to monitor in-progress backfills or review recent ones', providing clear context. It does not mention when not to use or alternatives, but the guidance is direct and sufficient for the tool's purpose.

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

list_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

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It describes return values including error cases. However, it does not explicitly state read-only nature or mention any authentication/rate limits, but the scope is limited and safe.

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?

Concise three-sentence structure plus bullet-like return list. Every sentence adds value with no redundancy. Front-loaded with purpose, then returns, then usage guidance.

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 an output schema, description does not need to detail return values. It covers usage, return fields, and error cases. Missing parameter documentation is a minor gap, but overall complete for its complexity.

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 has one optional parameter (env) with 0% documentation coverage. The description does not explain the parameter's purpose or effect, which is a significant gap for a simple list tool.

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 clearly states it lists code locations and their load status, with specific return fields. It differentiates from sibling tools like get_instance_status by mentioning when to use it after deployment or when errors occur.

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 provides clear context for usage: after deployment to verify loading or when get_instance_status reports errors. Also suggests an alternative action (reload_code_location) for failures.

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

list_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.9/5.0
Behavior5/5

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

With zero annotations, the description carries the full burden — and it delivers thoroughly. It discloses the raise-vs-empty behavior on broken/loading locations, the distinction between filtered and unfiltered calls, and the exact-match filter semantics. This is precisely the behavioral context an agent needs to avoid misinterpreting empty results.

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-structured: purpose and return value are front-loaded, followed by filter semantics, error behavior, and a closing when-to-use. Every sentence adds information; the only minor deduction is that the error-handling paragraph could be tightened slightly without losing meaning.

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?

Comprehensive for a filtered-list tool with an output schema. The description covers purpose, filter semantics, error behavior, load-health redirection, and usage context. With an output schema present to document return fields, nothing an agent needs to call this tool correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates fully: it explains that repository_name and location_name are independent exact-match filters, that both must match when supplied together, and that no-filters lists everything loaded. The env parameter is the only one not explicitly discussed, but its role is implied by the tool context.

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 ('List') and resource ('jobs across code locations'), describes the return payload (repository name, code location name, job name, description), and differentiates itself from siblings like list_code_locations and launch_job. An agent can immediately tell what this tool does and how it differs.

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 states 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'), and gives detailed context on filter behavior and the error-raising condition. It also directs the user to list_code_locations or get_instance_status for load-health checks, effectively routing to alternatives.

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

list_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/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses a key behavior: 'Raises when a code location is unavailable rather than returning a partial list that could be mistaken for the complete set of schedules.' However, it does not explicitly state that the operation is read-only (though listing implies it) and does not mention how the 'env' parameter affects results, which is a behavioral gap.

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?

The description is well-structured: it front-loads the purpose, lists output fields, gives usage context, names an alternative, and ends with an error behavior note. Every sentence serves a purpose; there is no fluff. It is slightly longer than necessary but the structure makes it easy to parse.

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?

The description covers the tool's main purpose, usage, and an error condition. It also lists return fields, which is helpful even though the output schema exists. However, it omits any explanation of the 'env' parameter, which is a significant gap for a tool with only one parameter. Additionally, it does not mention pagination or result limits, but that may be covered by the output schema. Overall, the description is incomplete because the sole parameter is undocumented.

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?

The schema has one parameter, 'env', with 0% description coverage, and the description never mentions 'env'. An agent is left without any indication of what 'env' does or how to use it (e.g., environment filter, context selector). Since the schema only provides type information (string or null), the description completely fails to add meaning to the only 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?

The description clearly states the tool's purpose: 'List all schedules with their status, cron expression, target job, and next tick.' It specifies the resource (schedules) and the action (list) and enumerates key output fields. This distinguishes it from sibling tools like list_sensors or list_jobs, which target different resource types.

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 description provides explicit when-to-use guidance: 'to check which schedules are active, verify cron timing, or find schedules that are stopped and might need attention.' It also tells the agent when to use an alternative: 'If a schedule is RUNNING but jobs aren't executing, use get_tick_history to inspect recent ticks for errors.' This is a clear routing decision with no ambiguity.

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

list_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.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: 'Raises when a code location is unavailable rather than returning a partial list.' It also states the return contents precisely. Slight gap: no mention of auth or rate limits, but these are contextually less critical for a read tool.

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?

The description is efficiently front-loaded with the core purpose, then dives into return fields, usage context, and failure behavior. Each sentence earns its place, and the structure is clear without redundancy.

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 list tool, the description covers the main aspects: return fields, usage scenario, and failure mode. However, the undocumented 'env' parameter is a significant gap that leaves the tool incompletely specified. The output schema exists but the parameter semantics are missing, so completeness is not full.

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?

The only parameter 'env' has 0% schema description coverage, and the description never mentions it. The agent has no idea what 'env' controls (e.g., environment name for code location resolution). The description fails to compensate for the lack of schema documentation.

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: 'List all sensors with their status and target jobs.' It clearly distinguishes from siblings like list_schedules and list_jobs by focusing on sensors and their runtime details, plus the failure behavior. No ambiguity about what the tool does.

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: to check active sensors and triggered jobs. It also gives a conditional alternative: if a sensor is RUNNING but not producing runs, use get_tick_history to inspect ticks. This routes the agent correctly and prevents misuse.

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

resolve_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

A4.1/5.0
Behavior4/5

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

With no annotations, description fully discloses behavior: read-only, does not filter external/observable/non-executable/partitioned matches, and returns asset_keys plus summaries. No contradictions.

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?

Description is moderately long but well-structured with clear bullet points listing syntax options. All information is relevant, though some details on output format could be condensed. No fluff.

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 complexity of syntax resolution and existing output schema, the description covers input syntax, output format, and read-only nature. Missing env parameter documentation slightly reduces completeness, but core functionality is well-described.

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 description must compensate. It thoroughly explains the asset_selection syntax (key predicates, wildcards, operators), but completely omits the env parameter. While the primary parameter is well-covered, ignoring a parameter reduces the score.

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?

Description clearly states the tool resolves asset-selection syntax into concrete assets without launching a run. The verb 'resolve' and specific resource 'asset-selection syntax' distinguish it from sibling tools like list_jobs or get_asset_details.

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?

Description indicates the tool is for resolving selection syntax for use with materialize_assets or backfill_assets, and states it is read-only. Provides clear context but does not explicitly list when not to use or alternatives.

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

search_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.6/5.0
Behavior4/5

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

Without annotations, the description details return fields, filter behavior (case-insensitive, combined), and default behavior when no filters. It is transparent about being a read-only discovery tool, though missing authentication or rate limit info.

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-structured with clear sections for filters, returns, and usage. Concise but could be slightly more streamlined. Every sentence adds value.

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?

Given the presence of an output schema, the description covers all needed aspects: purpose, filters, behavior, and when to use. It is complete for a search tool with no missing critical information.

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 coverage is 0%, but description explains prefix and group in detail (substring match, case-insensitive, combined). However, the 'env' parameter is not explained in the description, leaving a 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?

The description explicitly states 'Search and list assets by name prefix or group' with specific filter options. It clearly differentiates from sibling tools like get_asset_details and get_asset_health by stating it is for discovery.

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 explicit 'When to use' guidance: 'to discover available assets before calling get_asset_details or get_asset_health'. Also advises on filter choice: 'Use prefix for fuzzy search, group for scoped listing'.

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. Dates show when Glama detected each change.

  1. 1 tool updatev0.10.0
    • Changedlist_jobs6 fields changed
      • addedInput schema / properties / location_name
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      • addedInput schema / properties / repository_name
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      • removedOutput schema / properties / result / items / additionalProperties
        true
      • addedOutput schema / properties / result / items / description
        "Public job metadata returned by :func:`list_jobs`."
      • addedOutput schema / properties / result / items / properties
        {
          "description": {
            "type": "string"
          },
          "job": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "repository": {
            "type": "string"
          }
        }
      • addedOutput schema / properties / result / items / required
        [
          "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

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct resource and action—runs have five clearly differentiated tools (list, status, logs, stats, failure summary), and assets have search, details, health, and materialization history. Descriptions explicitly cross-reference when to use which tool, eliminating ambiguity.

Naming Consistency5/5

All tools use snake_case with a consistent verb_noun pattern ('list_*' for enumeration, 'get_*' for retrieval). Naming is uniform across code locations, runs, assets, jobs, schedules, sensors, and backfills.

Tool Count4/5

At 17 tools, this is slightly above the ideal 3-15 range but each tool fills a distinct monitoring need. The count is justified by the breadth of Dagster concepts covered, though it edges into 'heavy' territory.

Completeness2/5

The tool surface is entirely read-only—there is no way to launch a run, trigger a job, start/stop schedules or sensors, or update assets. Critical operational actions are missing, which will cause agent failures in real orchestration workflows.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fabdendev/dagster-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server