Skip to main content
Glama
us-all
by us-all

@us-all/dbt-mcp

dbt MCP server — manifest.json, run_results.json, sources.json, catalog.json, plus DQ result tables (BigQuery / Postgres) behind one stdio MCP. Built on @us-all/mcp-toolkit.

A read-only window into your dbt project for LLM clients. No dbt run triggering — just deep introspection, run-history analysis, source freshness, per-column test coverage, lineage walks, and (if you have a custom DQ result table) historical check trends and Tier SLA status.

For DAG triggering / run history / log tails, install the companion @us-all/airflow-mcp alongside.

  • 27 tools across 3 categories (dbt, quality, meta) — 21 primitive tools + 5 aggregations + 1 meta

  • 4 MCP Prompts for triage workflows

  • 5 aggregation tools that replace 3-5 round-trips of "list / get / list"

  • extractFields response projection on high-volume reads

  • Read-only by default

  • Hybrid backend: BigQuery (default) or Postgres for DQ result tables — both peer-imported lazily

Install

# 1. add the MCP server
pnpm add -D @us-all/dbt-mcp
# 2. add the DQ backend you actually use (only if you query custom DQ tables):
pnpm add -D @google-cloud/bigquery   # OR
pnpm add -D pg

Related MCP server: dbt-doctor

Run

DBT_PROJECT_DIR=/path/to/dbt-project \
DQ_RESULTS_TABLE=my-project.data_ops.quality_checks \
npx @us-all/dbt-mcp

The server speaks MCP stdio; wire it into Claude Desktop / Cursor / any MCP client. Set MCP_TRANSPORT=http to opt in to Streamable HTTP transport (Bearer auth, /health endpoint).

Categories

Category

Tools

Purpose

dbt

15 + 3 aggregations

Parse manifest.json / run_results.json / sources.json / catalog.json

quality

6 + 2 aggregations

Query quality_checks and quality_score_daily (BQ or PG); per-tier rollup via dq-tier-by-source

meta

1 (always on)

search-tools for natural-language tool discovery

Toggle with DBT_TOOLS=dbt (allowlist) or DBT_DISABLE=quality (denylist).

Tools at a glance

dbt (15 + 3)

dbt-list-models, dbt-get-model, dbt-list-tests, dbt-get-test, dbt-list-sources, dbt-get-source, dbt-list-exposures, dbt-list-macros, dbt-get-macro, dbt-list-runs, dbt-get-run-results, dbt-failed-tests, dbt-slow-models, dbt-coverage, dbt-graph, freshness-status, incident-context, dbt-sla-status

quality (6 + 2)

dq-list-checks, dq-get-check-history, dq-failed-checks-by-dataset, dq-score-trend, dq-tier-status, dq-tier-by-source, failed-tests-summary, dq-score-snapshot

Prompts

Prompt

Use when

investigate-failed-tests

"What's broken in the last 24h?"

freshness-degradation-triage

"Are any sources stale?" (Tier 1 focus optional)

dq-trend-report

"Give me a stakeholder-friendly DQ trend report"

incident-triage

"Triage <model | source>" — bundles all signals

Environment variables

Env

Required

Notes

DBT_PROJECT_DIR

yes

dbt project root (where dbt_project.yml lives)

DBT_TARGET_DIR

no

Defaults to $DBT_PROJECT_DIR/target

DBT_RUN_HISTORY_DIR

no

Optional dir for archived run_results.json history

DQ_BACKEND

no

bigquery (default) or postgres

DQ_RESULTS_TABLE

no

FQN of the checks table; required only for checks-based quality tools

DQ_SCORE_TABLE

no

FQN of the score-daily table; required for score-only tools

GOOGLE_APPLICATION_CREDENTIALS

no

For BigQuery backend (ADC fallback supported)

BQ_PROJECT_ID

no

Explicit BQ project (otherwise inferred from ADC)

PG_CONNECTION_STRING

no

When DQ_BACKEND=postgres (secret)

DQ_SCHEMA

no

generic (default) or us-all — base schema preset for the quality category

DQ_COL_*

no

Per-column overrides on top of DQ_SCHEMA (see below). Overrides must be simple SQL identifiers.

DQ_TIER1_TARGET_PCT

no

Tier 1 SLA threshold for dq-tier-status when no tier column is configured (default 99.5). Superseded by DBT_SLA_CONFIG_PATH tier_sla.1 if both are set.

DBT_SLA_CONFIG_PATH

no

Optional YAML path with tier_sla and dbt_sla blocks. Drives dq-tier-status thresholds and dq-tier-by-source per-tier targets. Mtime cached.

DBT_ALLOW_WRITE

no

Reserved for future write tools (none currently)

DBT_TOOLS / DBT_DISABLE

no

Category toggles

DQ result-table schema flavors

The quality category supports two schema presets via DQ_SCHEMA:

DQ_SCHEMA=generic (default)

Columns assumed on DQ_RESULTS_TABLE: run_at, check_name, check_type, dataset, table_name, status, severity, failure_count, message.

Columns assumed on DQ_SCORE_TABLE: score_date, scope, tier, completeness_pct, freshness_pct, validity_pct, anomaly_free_pct, overall_score.

dq-tier-status rolls up by Tier 1/2/3 against the per-scope rows.

DQ_SCHEMA=us-all

Real schema used at us-all (Postgres data_ops database):

quality_checks: run_date, check_type, dimension, source, target_name, status, metric_value, threshold, details (JSONB).

quality_score_daily: run_date, completeness_pct, freshness_pct, validity_pct, anomaly_free_pct, overall_score, total_checks, failed_checks.

In this flavor quality_score_daily is one row per day (no per-scope rollup, no tier column). dq-tier-status falls back to comparing the day's overall_score against DQ_TIER1_TARGET_PCT (default 99.5).

dq-get-check-history requires checkName formatted as '<check_type>:<target_name>' since us-all has no native check_name column.

Per-column overrides — DQ_COL_*

If your DQ tables don't match either preset, layer per-column overrides on top of DQ_SCHEMA. Any DQ_COL_* env var, when set, replaces the preset value for that single column. Unset vars keep the preset default.

Overrides are validated as simple SQL identifiers to avoid injecting raw SQL through environment variables. Table names in DQ_RESULTS_TABLE / DQ_SCORE_TABLE are also validated and quoted for the configured backend.

Env var

Logical concept

Generic preset

us-all preset

DQ_COL_RUN_AT

timestamp/date on the checks table

run_at

run_date

DQ_COL_CHECK_TYPE

check type / dimension family

check_type

check_type

DQ_COL_STATUS

pass/fail/warn/error

status

status

DQ_COL_DATASET

dataset / source / schema

dataset

source

DQ_COL_TABLE_NAME

table or target name

table_name

target_name

DQ_COL_SEVERITY

severity / dimension

severity

dimension

DQ_COL_FAILURE_COUNT

numeric failure count / metric

failure_count

metric_value

DQ_COL_MESSAGE

free-text or JSON message

message

details::text

DQ_COL_CHECK_NAME

natural identifier of the check

check_name

(none)

DQ_COL_SCORE_DATE

date column on the score table

score_date

run_date

DQ_COL_SCOPE

scope/tenant column on score table

scope

(none)

DQ_COL_TIER

tier column on score table

tier

(none)

For the three nullable columns (DQ_COL_CHECK_NAME, DQ_COL_SCOPE, DQ_COL_TIER), set the value to none / null / - to declare "no native column":

  • Without check_name → the tools synthesize one from check_type || ':' || table_name. dq-get-check-history then expects checkName formatted as '<check_type>:<table_name>'.

  • Without scopedq-score-trend's scope filter is ignored (with a caveat) and dq-tier-status switches to the single-overall_score path that compares against DQ_TIER1_TARGET_PCT.

  • Without tier → same single-overall_score fallback.

Example — generic preset against a Postgres schema where columns happen to be named differently:

DQ_SCHEMA=generic
DQ_COL_RUN_AT=checked_at
DQ_COL_DATASET=schema_name
DQ_COL_TABLE_NAME=tbl
DQ_COL_FAILURE_COUNT=fail_n
DQ_COL_CHECK_NAME=none      # synthesize from check_type+tbl
DQ_COL_SCOPE=none           # no per-team rollup
DQ_COL_TIER=none            # use DQ_TIER1_TARGET_PCT instead

SLA config (optional) — DBT_SLA_CONFIG_PATH

Set DBT_SLA_CONFIG_PATH to a YAML file to surface project-defined tier targets and DBT SLAs to the quality tools. Schema (extra keys ignored):

dbt_sla:
  test_pass_pct: 99.0          # consumed by dbt-sla-status (test pass rate threshold)
  freshness_pass_pct: 99.5     # consumed by dbt-sla-status (source freshness pass rate threshold)

tier_sla:
  1: 99.5                      # tier-1 overall_score / per-source pass-rate target
  2: 99.0
  3: 95.0

When set, the tier_sla map drives:

  • dq-tier-status — per-tier rollup compares each row's overall_score against the matching target. Without this file, hardcoded {1: 99.5, 2: 99.0, 3: 95.0} is used.

  • dq-tier-by-source — per-source pass-rate is compared to the target for that source's tier (resolved from dbt sources.yml meta.tier).

  • dq-tier-status no-tier-column path (us-all preset / DQ_COL_TIER=none) — uses tier_sla.1 as the single target. DQ_TIER1_TARGET_PCT env still works as a fallback when no SLA file is set.

The dbt_sla block drives:

  • dbt-sla-status — computes test pass rate from latest run_results.json and freshness pass rate from sources.json, then compares each axis against dbt_sla.test_pass_pct / dbt_sla.freshness_pass_pct. Returns passPct, target, meeting per axis plus caveats when fields or artifacts are missing.

The file is mtime-cached; edits between tool calls are picked up automatically.

Per-tier rollup from quality_checksdq-tier-by-source

For schemas where quality_score_daily has only one row per day (no per-scope/tier breakdown), dq-tier-by-source reconstructs a per-tier picture from the raw quality_checks rows. Two modes:

mode: "source" (default) — group by source/dataset column

Use when each row of quality_checks represents a check on a source group and the dataset/source column carries the dbt source-group name directly.

  1. Builds a source_name -> tier map from the dbt manifest's sources.<source>.<table>.meta.tier (first table's tier per source group).

  2. Groups quality_checks rows by the dataset/source column and computes pass rate per source over a date or sinceHours window.

  3. Looks up each source's tier and target (from SLA config or defaults), reports meeting / missing per tier.

mode: "table" — group by table_name column

Use when the dataset/source column is a category (bq / dbt / airflow) and the actual dbt source-table identifier lives in the table_name / target_name column as <source_group>.<table>. Common in checks tables that consolidate signals from heterogeneous backends.

  1. Builds a <source_group>.<table> -> tier map from the manifest using each source entry's source_name + name + meta.tier — picks up table-level tier overrides naturally.

  2. Groups quality_checks rows by the table_name column. Pre-filter via sourceFilter (e.g. sourceFilter: "bq") when only some categories produce parseable target names.

  3. Each rollup key is parsed as <source_group>.<table>; rows without a . or whose key is not in the manifest land in caveats[].

Untiered rows (no manifest meta.tier) and unparseable rows always appear in caveats[] so you can tier them or accept the gap.

Tested-against schemas

  • dbt manifest schema v11 / v12 — the current top version. dbt 1.7 emits v11; dbt 1.8 through 1.12 all emit v12 (the schema evolves additively in-place). Newer/unknown versions still parse, but a caveats line will flag them.

Companion server

For Airflow DAG operations (list, runs, task instances, log tail, trigger, clear), install @us-all/airflow-mcp alongside this server.

Build

pnpm install
pnpm run build      # tsc → dist/
pnpm test           # vitest
pnpm run smoke      # spawns dist/index.js, calls initialize + tools/list (set env first)

License

MIT — see LICENSE.

Available Tools

27 tools
dbt-coverageA

Per-column test coverage for a dbt model (which columns have tests, table-level tests, coverage %)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoModel name (resolved if uniqueId not provided)
uniqueIdNodbt unique_id
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

A3.5/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 of behavioral disclosure. It does not mention that the tool is read-only, any required permissions, potential side effects, or rate limits. For a tool with no annotations, more transparency is needed.

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 a single sentence, front-loaded with the core purpose, and contains no unnecessary words. Every part contributes to understanding the tool's function.

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 that there are no annotations and no output schema, the description is adequate but could be more complete. It explains what the tool returns (coverage per column, table-level tests, coverage %) but does not specify the format or structure of the response. For a simple tool, this is sufficient but not exemplary.

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 100%, so the baseline is 3. The description does not add additional meaning beyond what the schema already provides for the three parameters. The parameter descriptions in the schema are already clear, so the description adds no extra value.

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 (get coverage), resource (dbt model), and the specific output (per-column tests, table-level tests, coverage %). It distinguishes from sibling tools like dbt-list-tests or dbt-get-test by focusing on coverage metrics.

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 for checking test coverage but does not explicitly state when to use this tool versus alternatives like dbt-list-tests or dbt-get-test. No guidance on when not to use or prerequisites.

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

dbt-failed-testsB

Find tests that failed across the last N runs, grouped and ordered by chronic failure count

ParametersJSON Schema
NameRequiredDescriptionDefault
recentRunsNoLook at last N runs
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It mentions grouping and ordering but does not clarify what 'chronic failure count' means, whether the operation is read-only, or any side effects. The behavior beyond the basic purpose is opaque.

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?

Single sentence, 12 words, highly concise. However, the brevity sacrifices some informational depth that could aid usability. For a simple tool, this is acceptable but could be improved.

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

Completeness2/5

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

For a tool with no output schema, the description should hint at return format or structure. It does not mention what the output looks like (e.g., list of tests with counts). The chronic failure grouping and ordering are mentioned but not explained. Incomplete for an agent to fully understand usage.

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 100%, so baseline 3 applies. The description adds no parameter-specific information; it does not reference recentRuns or extractFields. The schema itself provides adequate definitions, so the description adds no extra value.

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 finds failed tests across N runs, grouped and ordered by chronic failure count. This distinguishes it from siblings like dbt-list-tests (lists all tests) and failed-tests-summary (likely summarizes, not grouped by chronicity).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like dbt-list-tests or dq-failed-checks-by-dataset. The description implies a specific use case (chronic failures) but does not explicitly state when not to use it or mention alternative tools.

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

dbt-get-macroA

Get a dbt macro: signature, raw SQL, and reverse-lookup of nodes that call it

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoMacro name (resolved if uniqueId not provided)
uniqueIdNodbt unique_id (e.g. 'macro.proj.my_macro')
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It discloses the return types (signature, raw SQL, reverse-lookup) but does not mention read-only nature, authentication, rate limits, or any side effects. The description is adequate but not rich in behavioral context.

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 a single, front-loaded sentence that efficiently conveys the tool's purpose and output. Every word earns its place with 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 (3 parameters, no output schema, no annotations), the description covers the core functionality well. It could elaborate more on parameter usage, but the schema descriptions handle that. The reverse-lookup aspect is a nice extra detail.

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 100%, so baseline is 3. The description does not add extra meaning beyond what the schema already provides. For instance, it doesn't clarify the relationship between 'name' and 'uniqueId' or how 'extractFields' reduces tokens.

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 verb 'Get' and resource 'dbt macro' and specifies the exact outputs: signature, raw SQL, and reverse-lookup of nodes that call it. This differentiates it from sibling tools like dbt-get-model or dbt-get-source which have different resources and outputs.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't explain when to use 'name' vs 'uniqueId' parameters, or how this differs from dbt-list-macros which lists all macros. No when-not-to-use or alternative tool mentions.

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

dbt-get-modelA

Get a single dbt model: refs, sources, columns (with catalog types if available), attached tests, raw/compiled SQL

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoModel name (resolved if uniqueId not provided)
uniqueIdNodbt unique_id (e.g. 'model.us_dbt.users_dim')
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.
includeCompiledSqlNoInclude compiled_code in response

TDQS

A3.6/5.0
Behavior3/5

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

Description mentions response contents but does not disclose additional behavioral traits such as read-only nature, authorization needs, or rate limits. No annotations provided, so description carries full burden but provides moderate transparency.

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?

Single sentence efficiently conveys purpose and response contents. Every word adds value; no 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?

Four parameters well-described, but no output schema and no annotations. Description explains what the tool returns (refs, sources, etc.) but lacks details on error handling, prerequisites, or response format. Given complexity, it is mostly complete.

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 has 100% coverage with descriptions for all 4 parameters. The description does not add significant meaning beyond schema, but the overall context helps interpret parameter purpose. Baseline 3 is appropriate.

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 verb 'Get', resource 'single dbt model', and enumerates included elements (refs, sources, columns, tests, SQL). This distinguishes it from sibling tools like dbt-list-models and dbt-get-source.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Implicit from name and sibling tools that it is for fetching one model, but no explicit when-not-to-use or prerequisite information.

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

dbt-get-run-resultsB

Get per-node results from a specific dbt invocation (or the latest run if invocationId omitted)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNoFilter results by status (pass | error | fail | skipped | runtime error | success)
invocationIdNoinvocation_id from a run; if omitted, the latest run_results.json in target/ is used
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as authorization needs, rate limits, or safety. The word 'Get' implies a read-only operation, but explicit safety disclosure is absent.

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 a single clear sentence with no wasted words, effectively front-loaded with the core purpose.

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

Completeness2/5

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

The description is minimal and fails to cover parameter usage, output format, or edge cases. Given the lack of annotations and output schema, more contextual completeness is needed for correct tool invocation.

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 schema already describes 3 of 4 parameters (status, invocationId, extractFields) with 75% coverage. The description adds no additional meaning for any parameter. The `limit` parameter lacks a schema description and is not addressed in the tool description.

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 clearly states the tool returns per-node results from a dbt invocation, distinguishing it from sibling tools that retrieve single objects or run lists. However, it does not explicitly name these alternatives, so it falls short of a 5.

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 context by noting that omitting invocationId retrieves the latest run, but it provides no explicit guidance on when to use this tool versus alternative sibling tools like dbt-list-runs or dbt-get-model.

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

dbt-get-sourceA

Get a single dbt source: freshness criteria, columns, latest freshness result from sources.json

ParametersJSON Schema
NameRequiredDescriptionDefault
uniqueIdNodbt unique_id (e.g. 'source.proj.raw.users')
tableNameNoSource table name (with sourceName)
sourceNameNoSource group name (with tableName)
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

A4/5.0
Behavior4/5

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

No annotations provided, but description indicates a read operation with no destructive side effects, detailing what is returned (freshness criteria, columns, latest freshness result). Full burden is met for a simple get.

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?

Single sentence that is front-loaded with purpose and contains no redundant information; every word earns 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?

Description covers what the tool retrieves (freshness criteria, columns, latest freshness result). Lack of output schema is mitigated by describing return content. Minor gap: no mention of error conditions or empty results.

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 100% with descriptions for all 4 parameters. Description adds overall context on tool output but does not enhance meaning beyond schema for individual parameters.

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 'Get a single dbt source' and specifies returned fields (freshness criteria, columns, latest freshness result), distinguishing it from sibling tools like dbt-list-sources.

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?

Description implies usage for retrieving details of a specific source, but does not explicitly state when to use it versus alternatives or 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.

dbt-get-testA

Get a single dbt test: definition, parameters, attached models, latest run result

ParametersJSON Schema
NameRequiredDescriptionDefault
uniqueIdYesdbt unique_id of the test (e.g. 'test.proj.unique_users_id')
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It implies a read-only operation ('Get') but does not explicitly state idempotency, permissions, or side effects. It adds some behavioral context by listing what the response contains, but does not cover potential errors or cost implications.

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?

A single sentence of 11 words concisely conveys the tool's purpose and output. Every word is informative and front-loaded, with no redundancy or extraneous details.

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 simplicity (2 params, no output schema), the description adequately covers what the tool returns (definition, parameters, models, run result). It is complete enough for a 'get single entity' tool, though it could mention error handling or typical response structure.

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 100% and the input schema already provides detailed descriptions for both parameters (uniqueId with example, extractFields with usage). The description adds no additional parameter information beyond the schema, so baseline score of 3 applies.

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 a single dbt test, listing specific components returned (definition, parameters, attached models, latest run result). It uses a specific verb 'Get' and distinct resource 'single dbt test', differentiating it from sibling tools like dbt-list-tests (list) and dbt-failed-tests (subset).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives such as dbt-list-tests for listing or dbt-failed-tests for failures. The description implies use for detailed retrieval of a specific test but lacks when-not-to-use or prerequisite information.

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

dbt-graphB

Walk dbt parent_map / child_map to return upstream and downstream nodes (model/source/test) up to a given depth

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoModel name (resolved if uniqueId not provided)
uniqueIdNodbt unique_id
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.
upstreamDepthNo
downstreamDepthNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description should disclose behavioral traits. It states it 'walks' and 'returns' but does not mention side effects (e.g., read-only), rate limits, or authorization needs. The description is insufficient for an agent to know if the tool modifies state.

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?

Single sentence that encapsulates core functionality efficiently. Front-loads the action and return value. No extraneous words, earning its place.

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

Completeness2/5

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

Despite simplicity, the description lacks context on how results are structured (no output schema), dependencies on parent_map/child_map, and the role of extractFields parameter. Incomplete for a tool with multiple parameters and no output schema.

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?

Parameter descriptions in the input schema are detailed (e.g., extractFields has extensive documentation). The tool description adds little beyond noting depth limits, so it does not significantly enhance parameter understanding. Baseline 3 due to moderate 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?

Description clearly states action (walking), resource (dbt parent_map/child_map), and return (upstream/downstream nodes up to given depth). It effectively distinguishes from sibling tools like dbt-get-model or dbt-get-source which retrieve single entities.

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 for exploring node dependencies but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. No mention of prerequisites or context.

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

dbt-list-exposuresA

List dbt exposures (downstream BI/ML/application consumers declared in YAML)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNoSubstring match against exposure name
exposureTypeNoFilter by type (dashboard | application | ml | analysis | notebook)
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description holds the burden for behavioral disclosure. It correctly identifies the tool as a read operation (list), but does not elaborate on pagination behavior, impact of the 'limit' parameter, or whether authentication is required. Minimal but acceptable for a simple list 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 a single, clear sentence with no extraneous words. It efficiently conveys the core purpose.

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 basic purpose but is lacking in completeness. It does not hint at the output structure (e.g., list of exposure objects with properties), nor does it explain how the 'search', 'exposureType', or 'extractFields' parameters work. Given no output schema, more context would be beneficial.

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 75% (3 of 4 parameters have descriptions in the input schema). The tool description adds no additional information about parameters beyond what the schema already provides. Baseline is 3 due to high 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?

The description clearly states the action ('List'), the resource ('dbt exposures'), and provides context that they are downstream consumers declared in YAML. This distinguishes it from sibling tools like dbt-list-models or dbt-list-sources.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., dbt-list-models, dbt-graph). There is no mention of prerequisites, typical use cases, or situations where it should be avoided.

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

dbt-list-macrosA

List dbt macros from manifest.json with package / name filters

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNoSubstring match against macro name
packageNoFilter by package name
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states the tool reads from 'manifest.json' and applies filters, implying a read-only operation. However, it does not disclose auth requirements, whether it accesses local files or remote endpoints, or the treatment of the default limit parameter. The core behavior is adequately communicated but not thoroughly.

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 a single, short sentence that conveys the essential information without any superfluous words or tangential details. It is front-loaded and efficient.

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 low complexity (4 params, no output schema, no required params) and the presence of well-described siblings, the description covers the primary behavioral aspects: what it lists, the source, and available filters. It is nearly complete, though it could mention the default limit or how results are ordered. Still, it meets the needs for a simple list 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?

The description adds context (source from manifest.json, filter types) beyond the schema, which already provides descriptions for 3 of 4 parameters. The semantic value is moderate: it clarifies the purpose of search and package filters but omits any mention of the 'limit' parameter, whose schema lacks a description. Overall, it adds some meaning but not deeply.

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 action ('List'), the resource ('dbt macros'), the source ('manifest.json'), and available filters ('package / name'). This effectively distinguishes it from sibling tools like dbt-list-models, 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 Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives (e.g., dbt-get-macro for a single macro, or other list tools). The description does not include when or when not to use it, nor does it reference prerequisites or behavior under different conditions.

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

dbt-list-modelsA

List dbt models from manifest.json with filters (package, tag, materialized, schema, name search)

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter by tag (a model is included if it has this tag)
limitNoMax rows to return
schemaNoFilter by destination schema/dataset
searchNoSubstring match against model name (case-insensitive)
packageNoFilter by dbt package name (e.g. project name)
materializedNoFilter by materialization (table | view | incremental | ...)
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It correctly implies a read-only operation ('list') but does not disclose whether results are paginated, what permissions are required, or how the manifest.json is accessed. The description is adequate but not comprehensive.

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 a single efficient sentence with no superfluous words. It front-loads the verb and resource, and lists filters succinctly.

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 7 well-documented parameters but no output schema, the description misses explaining what the response contains (e.g., model metadata fields). It covers the filtering purpose but lacks completeness for an agent to fully understand the output structure.

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 100% with detailed parameter descriptions. The description provides a high-level summary of filters but adds little meaning beyond the schema. Baseline 3 is appropriate.

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 'dbt models', and enumerates the filtering dimensions (package, tag, materialized, schema, name search), making it distinct from sibling tools like dbt-list-tests or dbt-list-sources.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as dbt-get-model for a single model or dbt-list-exposures. There is no mention of prerequisites, optimal scenarios, or exclusions.

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

dbt-list-runsC

List recent dbt invocations from run_results.json files in target/ and DBT_RUN_HISTORY_DIR

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

C2.8/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 mentions reading from run_results.json but does not disclose whether it is read-only, whether multiple directories are scanned, error handling, or any safety concerns. Minimal behavioral disclosure.

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?

Very concise—one sentence that directly states the tool's function. No unnecessary words or redundancy.

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

Completeness2/5

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

Given no output schema, the description should hint at what information is returned (e.g., list of run objects with timestamps, status). It does not. It also lacks information about input requirements or behavior. Incomplete for a list 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 50% (extractFields has a description, limit has default/min/max but no description). The tool description adds nothing about parameters; it relies on the schema. No additional semantics beyond the schema's hints.

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 clearly states the tool lists recent dbt invocations from specific files (run_results.json). It uses a specific verb 'List' and identifies the resource. However, it does not explicitly differentiate from sibling tools like dbt-get-run-results, but the purpose is still clear.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. No mention of prerequisites, context, or exclusions. The description simply states what it does without usage advice.

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

dbt-list-sourcesC

List dbt sources from manifest.json with optional source-group / name filters

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNoSubstring match against source table name
sourceNameNoFilter by source group name
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are absent, so the description carries full burden for behavioral disclosure. It only states it lists sources from manifest.json but does not disclose whether the manifest is locally available, if authentication is needed, or any side effects (e.g., read-only). The description fails to communicate traits beyond the basic action, making it minimal.

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 a single concise sentence that front-loads the action and resource. Every word is informative with no redundancy. It fully meets the requirement of being appropriately sized and efficient.

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

Completeness2/5

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

Given the complexity (4 parameters, no output schema, many sibling list tools), the description is too brief. It does not explain the return format or contents, nor does it clarify when to prefer this over dbt-get-source or other list tools. The omission of output and comparative guidance makes it incomplete for effective tool selection.

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 high (75%), so the baseline is 3. The description adds 'optional source-group / name filters' which roughly maps to sourceName and search parameters, but provides no new details beyond the schema. It does not elaborate on limit or extractFields. The added semantic value is marginal, keeping the score at baseline.

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 the specific action (List) and resource (dbt sources from manifest.json), which clearly differentiates it from siblings like dbt-list-models or dbt-list-tests. The mention of 'optional source-group / name filters' indicates filtering but could be slightly ambiguous—'source-group' maps to sourceName parameter and 'name' to search. Overall, purpose is clear with a specific verb and resource.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like dbt-get-source for a single source, or other list tools. There are no explicit context or exclusion statements. The description is purely declarative, leaving the agent to infer usage without comparative information.

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

dbt-list-testsC

List dbt tests (generic or singular) optionally filtered to a specific model

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNoSubstring match against test name
testKindNoall
attachedToNoFilter to tests attached to a specific model unique_id or name
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

C2.9/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 full burden. It only states the action ('list') without disclosing side effects, pagination, rate limits, or any behavioral traits. The limit parameter suggests pagination but is not explained.

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 a single clear sentence without redundant information. It is concise and front-loaded. However, it could be slightly more structured (e.g., listing parameters or use cases) without adding length.

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

Completeness2/5

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

Given 5 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return value structure, pagination behavior, or how to effectively use the 'extractFields' parameter. Sibling tools are not differentiated, leaving the agent confused about when to use this 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?

The description does not add meaning beyond the input schema. With 60% schema description coverage, the description should compensate for missing parameter explanations, but it does not elaborate on any parameter. The 'extractFields' parameter, which is crucial for token reduction, is not mentioned.

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', the resource 'dbt tests', and specifies that it can be filtered by test kind (generic, singular) and optionally to a specific model, distinguishing it from sibling tools like dbt-list-models or dbt-get-test.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like dbt-get-test for single test details or dbt-list-models for models. The description does not mention prerequisites, limitations, or which tool to prefer under different scenarios.

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

dbt-sla-statusB

Compare latest dbt run test pass rate and source freshness pass rate against DBT_SLA_CONFIG_PATH thresholds (dbt_sla.test_pass_pct / freshness_pass_pct). Returns per-axis passPct/target/meeting plus caveats when SLA fields or artifacts are missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses return of per-axis values and caveats for missing fields/artifacts, which is useful. However, it does not mention whether the tool is read-only or requires specific permissions, lacking full behavioral transparency.

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?

Single sentence that conveys purpose, inputs, outputs, and edge cases. Efficient and well-structured.

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 simple tool with one parameter and no output schema, the description provides sufficient context: it explains the comparison, thresholds, and return fields. Minor gap: does not describe the 'caveats' in detail.

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 parameter (extractFields) with 100% schema description coverage. The description adds no extra semantics beyond the schema, so baseline 3 is appropriate.

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 clearly states it compares two pass rates against thresholds from DBT_SLA_CONFIG_PATH and lists specific return fields. It distinguishes from siblings like dbt-coverage and freshness-status by its specific focus on SLA thresholds, but does not explicitly state the use case (e.g., 'check if SLAs are met').

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like dbt-coverage or freshness-status. The description does not provide context about when to prefer this tool or alternatives.

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

dbt-slow-modelsB

Top N slowest models in a dbt run by execution_time, with bytes_processed when available

ParametersJSON Schema
NameRequiredDescriptionDefault
topNNo
invocationIdNoUse a specific run; default is latest
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description is the sole source of behavioral information. It states the tool reads from a dbt run and returns a list, but does not disclose if it is read-only, permissions needed, or any rate limits. Critical behavioral traits are missing.

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 a single sentence that is concise and front-loaded, containing only essential information without extraneous details.

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's simplicity and lack of output schema or annotations, the description is adequate but incomplete. It does not mention how to use invocationId or extractFields, nor explain response format. Additional context would improve completeness.

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 input schema covers two of three parameters (invocationId, extractFields) with descriptions. The topN parameter is inferred from the tool's purpose but lacks explicit schema description. The tool description adds minimal value beyond the schema, so a baseline 3 is appropriate.

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 clearly communicates that the tool returns the top N slowest models from a dbt run, sorted by execution_time. However, it lacks an explicit verb like 'list' or 'get', and while it distinguishes from sibling tools by focusing on slow models, it could be more precise.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as dbt-list-models or dbt-get-model. The description does not mention appropriate contexts or 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.

dq-failed-checks-by-datasetB

Group failing checks by dataset across a recent window with the latest 5 failures per dataset

ParametersJSON Schema
NameRequiredDescriptionDefault
topNNo
sinceHoursNo
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses that it groups by dataset, limits to 5 failures per dataset, and uses a recent window (via sinceHours). However, it does not explicitly state that it is read-only or describe potential side effects, leaving some behavioral questions unanswered.

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?

Single sentence that is concise, front-loaded with the action, and contains no unnecessary words. Every part adds value.

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 tool with 3 parameters, no output schema, and no annotations, the description is minimally complete. It explains the grouping and time window but lacks details on output format, error handling, or how to choose among many similar sibling tools.

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 only 33% (extractFields described). Description adds no detail about topN or sinceHours parameters beyond what schema provides. It mentions 'recent window' and 'latest 5 failures per dataset' but these are output behaviors, not parameter semantics.

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 it groups failing checks by dataset, uses a recent window, and shows latest 5 failures per dataset. This distinguishes it from sibling tools like dq-list-checks (listing without grouping) and dq-get-check-history (history per check).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description implies its purpose but does not specify when not to use it or mention related tools for similar tasks among many dq- siblings.

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

dq-get-check-historyC

Time-series of one check_name's status across the last N days

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo
checkNameYesGeneric schema: exact check_name. us-all schema: 'check_type:target_name' (concat)
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are present, so description must convey behavioral traits. It mentions time-series and days but lacks details on pagination (limit parameter), data freshness, or any side effects. The description does not compensate for 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.

Conciseness3/5

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

The description is a single sentence, concise but overly brief. It misses important details that could be included without excessive length.

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

Completeness2/5

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

Given four parameters and no output schema, the description is insufficient. It does not explain the return format, how days and limit interact, or how extractFields works.

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?

With 50% schema coverage, the description adds no extra meaning to parameters. The schema provides a detailed description for checkName, but days, limit, and extractFields are not elaborated in the description.

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 clearly states it provides a time-series of one check's status over days, distinguishing from siblings like dq-failed-checks-by-dataset or dq-score-trend. However, it does not explicitly define 'status' and relies on the tool name for the verb 'get'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives such as dq-list-checks or dq-score-snapshot. The description does not provide any context for selection among siblings.

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

dq-list-checksA

List recent rows from DQ_RESULTS_TABLE filtered by dataset / status / type / time window

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by check type (dbt_test | freshness | anomaly | reconciliation | ...)
limitNo
statusNoFilter by status
datasetNoFilter by dataset / source
sinceHoursNo
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Mentions 'recent rows' but doesn't clarify default time window or explain that it's a read-only operation. Lacks details on authorization or performance.

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?

Single sentence, focused, no unnecessary words. Could include more detail but remains efficient.

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

Completeness2/5

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

With 6 parameters, no output schema, and no annotations, the description is minimal. It does not explain return format, pagination, or the meaning of 'recent' beyond the sinceHours 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 coverage is 67% (4/6 parameters described). Description adds context that filters apply to DQ_RESULTS_TABLE, but does not significantly expand on parameters like limit or sinceHours beyond defaults.

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 it lists recent rows from DQ_RESULTS_TABLE with filters by dataset, status, type, and time window. It distinguishes from siblings like dq-failed-checks-by-dataset and dq-get-check-history.

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?

Implies usage for listing recent checks with filters, but no explicit when-to-use or when-not-to-use compared to siblings like dq-failed-checks-by-dataset or dq-get-check-history.

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

dq-score-snapshotA

Aggregated 4-axis score trend + today's Tier compliance + most recent failing checks. Combines dq-score-trend + dq-tier-status + dq-list-checks(fail).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.
includeFailingNoAlso include the most recent failing checks

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 behavioral burden. It discloses it combines outputs from three sub-tools but doesn't state whether it makes independent API calls, or any side effects. It is read-only by implication. Reasonable transparency, but could explicitly state it is non-destructive.

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 one sentence clearly conveying the composite nature. Very concise. Could benefit from a second sentence explaining typical use case, but front-loads key info effectively.

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 no output schema and composite nature, the description sufficiently explains what the tool returns (aggregation of three sub-results). It misses mention of how the aggregation is structured (e.g., merged JSON), but the intended behavior is clear for an AI agent.

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 has 3 parameters (days, extractFields, includeFailing) with 67% description coverage. The description does not add new meaning beyond the schema. Per rules, baseline 3 is appropriate since schema already explains parameters adequately.

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 the tool aggregates three specific sub-tools' outputs (score trend, tier compliance, failing checks). It clearly differentiates from siblings like dq-score-trend (single axis) or dq-tier-status (single component) by naming the combined result.

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 explains what the tool does but provides no guidance on when to use it vs. calling the individual sub-tools (dq-score-trend, dq-tier-status, dq-list-checks) or alternatives. It implies it is a convenience composite but doesn't specify scenarios where the composite is preferable.

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

dq-score-trendB

Time-series of the 4-axis DQ score (completeness / freshness / validity / anomaly_free) plus overall_score from DQ_SCORE_TABLE

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
scopeNoScope filter (only honored when DQ_SCHEMA=generic)
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of behavioral disclosure. It does not mention ordering, aggregation period, pagination, or any side effects. For a time-series tool, critical behaviors like default time range and data granularity are missing.

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 a single concise sentence that is front-loaded with the key concept (time-series of scores). It is efficient but lacks additional context that could be added without becoming verbose.

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

Completeness2/5

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

Given the tool has 3 parameters and no output schema, the description is insufficient. It does not explain default behavior (e.g., how far back the time-series goes), what the response looks like, or how parameters like 'scope' and 'extractFields' affect the output. Users are left guessing essential details.

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 67% (2 of 3 parameters have descriptions). The description does not add meaning beyond schema: the tool description mentions the source table but not parameter usage. The missing 'days' parameter description is not compensated by the tool 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?

The description clearly states the tool returns a time-series of specific DQ scores (completeness, freshness, validity, anomaly_free, and overall_score) from a named source table. It distinguishes from siblings like dq-score-snapshot (snapshot vs. time-series) and dq-failed-checks-by-dataset (different focus).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like dq-score-snapshot or dq-failed-checks-by-dataset. The description does not provide context for appropriate usage or scenarios where other tools might be preferred.

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

dq-tier-by-sourceA

Per-tier rollup computed from quality_checks grouped by source. Reads source-to-tier mapping from dbt sources.yml meta.tier and tier targets from DBT_SLA_CONFIG_PATH (falls back to defaults). Reports per-source pass rate, meeting/missing per tier, and untiered sources as caveats.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoISO date (YYYY-MM-DD) for the rollup, default = today
modeNoHow to roll up. 'source' (default) groups by the dataset/source column and looks up tier from each source group's first table-level meta.tier. 'table' groups by table_name (assumed format '<source_group>.<table>'), parses the prefix, and looks up the table-level meta.tier — useful when meta.tier varies per table inside a source group.source
sinceHoursNoAlternative window: rollup over the last N hours instead of a single date
sourceFilterNoOptional pre-filter on the dataset/source column. Useful in mode='table' when only some source rows have target_name in '<source_group>.<table>' format (e.g. sourceFilter='bq' to keep only the BigQuery-shaped rows).
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

A4.1/5.0
Behavior4/5

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

No annotations provided; description fully carries burden. It discloses data sources, fallback defaults, rollup logic, and caveats like untiered sources. Lacks authorization or rate limit info, but acceptable for read-only rollup.

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?

Three concise sentences, front-loaded with purpose, no redundancies. Each sentence adds value.

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?

Explains core logic and parameter implications well, but with no output schema, it omits return format, which could aid agent understanding. Adequate but leaves a 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?

Schema coverage is 100%, so baseline is 3. Description adds high-level context (e.g., mode distinction) but does not extend parameter meaning beyond schema definitions.

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 computes per-tier rollups from quality_checks grouped by source, with specific verb and resource. It distinguishes from siblings like dq-tier-status by detailing the source-to-tier mapping.

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 explains when to use source vs table mode, but does not explicitly exclude cases or reference alternatives. It provides context but lacks direct when-not guidance.

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

dq-tier-statusA

Compare today's overall_score per scope against Tier SLA targets (defaults Tier 1 99.5 / 2 99.0 / 3 95.0; override via DBT_SLA_CONFIG_PATH yaml or DQ_TIER1_TARGET_PCT) and report meeting vs missing counts

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoISO date (YYYY-MM-DD) to check, default = today
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.
fallbackMaxDaysNous-all schema only: when the cutoff date has no row, walk back to the most recent prior row only if it is within this many days. Beyond the limit, score/meeting are returned null with a stale note instead of silently passing SLA with stale data. Default 2.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, but the description explains the main behavior (comparison, default targets, override options, fallback for missing rows). It does not mention read-only nature or side effects, but these are implied.

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?

Single sentence that is front-loaded and concise, containing all key information without wasted words.

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?

Adequate for a simple tool with 3 parameters and no output schema, but lacks details about return format or structure. Could be improved by briefly describing the output.

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 100%, baseline 3. Description adds meaningful context beyond field descriptions, such as explaining the fallback logic for fallbackMaxDays and default behavior for date.

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 verb (compare/report) and resource (today's overall_score per scope against Tier SLA targets). Distinguishes from siblings like dbt-sla-status by focusing on tier-specific SLA compliance.

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?

Provides clear context for when to use: comparing scores against tier SLA targets with defaults and override methods. Does not explicitly exclude alternatives or specify when-not-to-use, but the context is sufficient.

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

failed-tests-summaryA

Aggregated 24h-ish view: dbt failed tests + DQ checks failures grouped by dataset + most recent failing rows. Replaces 3+ tool calls (dbt-failed-tests + dq-failed-checks-by-dataset + dq-list-checks).

ParametersJSON Schema
NameRequiredDescriptionDefault
recentRunsNoLook at last N dbt runs
sinceHoursNoRecent window for DQ checks
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

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 full burden. It discloses the aggregated nature, the 24h-ish time window, and that it includes the most recent failing rows. However, it does not explicitly state side effects, auth requirements, or whether it is read-only. For a composite tool, a bit more detail on behavior would be beneficial, but what is provided is adequate.

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 two sentences: the first introduces the aggregated view and grouping, and the second explains that it replaces multiple tool calls. Every word earns its place; no fluff. Front-loaded with key information.

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 (composite with 3 parameters, no output schema), the description provides a good overview: aggregation, grouping by dataset, time window, and replacement of multiple calls. It could have included a bit more detail on the exact structure of the response, but for a 3-param tool it is largely complete.

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 100%, with each parameter having a clear description. The tool description does not add additional meaning beyond what the schema already provides; it only mentions defaults implicitly. Therefore, baseline 3 is appropriate.

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 what the tool does: it aggregates dbt failed tests and DQ check failures grouped by dataset with the most recent failing rows. It explicitly distinguishes itself from siblings by noting it replaces three separate tool calls (dbt-failed-tests, dq-failed-checks-by-dataset, dq-list-checks), making its composite nature clear.

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 explicitly states that this tool replaces 3+ separate tool calls, giving strong guidance on when to use it (when a consolidated view is needed). It does not provide explicit exclusions or when-not conditions, but the context is clear enough for an agent to infer appropriate usage.

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

freshness-statusB

Cross-reference dbt source freshness criteria with sources.json results in a single 'is anything stale right now?' answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
failingOnlyNoOnly return sources where freshness is warn/error
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It mentions 'cross-reference' but doesn't disclose what data is accessed, potential side effects, or staleness criteria. For a read-only query tool, more detail on behavior is needed.

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?

Single sentence is concise and front-loaded with the primary action. However, it lacks structure like separate usage or behavior sections, but remains efficient.

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 simple query tool with two optional params and no output schema, the description covers core purpose. However, it lacks details on staleness criteria, prerequisites, or return format, leaving some gaps.

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 100% with descriptions for both parameters. The description adds meaningful context beyond schema: 'failingOnly' limits to warn/error, and 'extractFields' explains the project pattern including wildcard and backtick usage.

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 clearly states it answers 'is anything stale right now?' by cross-referencing dbt source freshness, but it doesn't differentiate from sibling tools like dbt-sla-status or dbt-list-sources.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., dbt-sla-status, dbt-list-sources). The implication is for staleness checks, but no when-not-to or context provided.

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

incident-contextA

Single asset deep-dive: dbt definition + recent test failures + DQ checks for the dataset. Designed to anchor an LLM-driven incident triage.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNameNodbt model name to anchor on (provide modelName OR sourceFqn)
sourceFqnNo'source_name.table_name' to anchor on a source instead of a model
sinceHoursNo
extractFieldsNoComma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It mentions it returns dbt definition, test failures, and DQ checks, but does not disclose behavioral traits like read-only status, error handling (e.g., if both modelName and sourceFqn are provided), or any side effects. It provides moderate transparency but lacks detail.

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 two sentences: the first defines the content, the second states the purpose. No extraneous words, every sentence earns its place. It is well-structured and front-loaded with key 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 4 parameters, no output schema, and no annotations, the description is somewhat incomplete. It covers the purpose and output scope but lacks details on return format, error handling, or what happens when the asset is not found. For a complex tool combining multiple data sources, more contextual information would be beneficial.

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 75% (three out of four parameters have descriptions). The description adds context by stating 'single asset deep-dive' implying modelName or sourceFqn anchors the query, but it does not explain sinceHours or extractFields. The schema already covers the purpose of the parameters, so the description adds minimal value 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 clearly states the tool's function as a single asset deep-dive combining dbt definition, recent test failures, and DQ checks. It is designed for LLM-driven incident triage, which differentiates it from sibling tools that focus on individual aspects like dbt-get-model or dq-failed-checks-by-dataset.

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 explicitly states the tool is designed for incident triage, giving context for when to use it. However, it lacks explicit guidance on when not to use it or how to choose between similar tools (e.g., dbt-get-model vs this). The phrase 'anchor an LLM-driven incident triage' implies a comprehensive investigation context.

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

search-toolsA

Discover available dbt MCP tools by natural language query across dbt / quality / meta categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
queryYesNatural language query. Discover available dbt MCP tools across dbt artifact / DQ result table / meta categories — call this first to find the right tool.
categoryNoRestrict search to a specific category

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 full burden for behavioral disclosure. It describes the tool's purpose (search/discovery) but does not explicitly state that it is a read-only operation or any other behavioral traits (e.g., no side effects, no data modification). The description adds minimal context beyond the immediate function.

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 a single, focused sentence that front-loads the purpose. Every word is necessary and there is no extraneous information. It is optimally 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?

Given the tool's simplicity (search/discovery) and the absence of an output schema, the description is adequate. It explains what the tool does and when to use it. However, it could be slightly more complete by hinting at the output format (e.g., a list of tool names) to fully inform the agent, but overall it suffices.

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 100%, so the baseline is 3. The description does not add extra meaning beyond the parameter names and hints in the schema. It mentions 'natural language query' and 'categories' but these are already reflected in the 'query' and 'category' parameter descriptions. No new semantic value.

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 'Discover available dbt MCP tools by natural language query across dbt / quality / meta categories' clearly states the verb (discover), resource (tools), and scope (cross-category). It distinguishes the tool from its siblings, which are specific operational tools like dbt-coverage or dq-failed-checks.

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 explicit guidance: 'call this first to find the right tool.' This tells the agent when to use it (before other tools) but does not specify when not to use it or name direct alternatives. The instruction is clear but lacks exclusionary context.

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. 27 tool updatesv1.0.3
    • Addeddbt-coverage
    • Addeddbt-failed-tests
    • Addeddbt-get-macro
    • Addeddbt-get-model
    • Addeddbt-get-run-results
    • Addeddbt-get-source
    • Addeddbt-get-test
    • Addeddbt-graph
    • Addeddbt-list-exposures
    • Addeddbt-list-macros
    • Addeddbt-list-models
    • Addeddbt-list-runs
    • Addeddbt-list-sources
    • Addeddbt-list-tests
    • Addeddbt-sla-status
    • Addeddbt-slow-models
    • Addeddq-failed-checks-by-dataset
    • Addeddq-get-check-history
    • Addeddq-list-checks
    • Addeddq-score-snapshot
    • Addeddq-score-trend
    • Addeddq-tier-by-source
    • Addeddq-tier-status
    • Addedfailed-tests-summary
    • Addedfreshness-status
    • Addedincident-context
    • Addedsearch-tools
  2. 27 tool updatesv1.0.2
    • Removeddbt-coverage
    • Removeddbt-failed-tests
    • Removeddbt-get-macro
    • Removeddbt-get-model
    • Removeddbt-get-run-results
    • Removeddbt-get-source
    • Removeddbt-get-test
    • Removeddbt-graph
    • Removeddbt-list-exposures
    • Removeddbt-list-macros
    • Removeddbt-list-models
    • Removeddbt-list-runs
    • Removeddbt-list-sources
    • Removeddbt-list-tests
    • Removeddbt-sla-status
    • Removeddbt-slow-models
    • Removeddq-failed-checks-by-dataset
    • Removeddq-get-check-history
    • Removeddq-list-checks
    • Removeddq-score-snapshot
    • Removeddq-score-trend
    • Removeddq-tier-by-source
    • Removeddq-tier-status
    • Removedfailed-tests-summary
    • Removedfreshness-status
    • Removedincident-context
    • Removedsearch-tools
  3. 26 tool updatesv1.0.0
    • Changeddbt-coverage1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-failed-tests1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-get-macro1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-get-model1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-get-run-results1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-get-source1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-get-test1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-graph1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-list-exposures1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-list-macros1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-list-models1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-list-runs1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-list-sources1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-list-tests1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-sla-status1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddbt-slow-models1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddq-failed-checks-by-dataset1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddq-get-check-history1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddq-list-checks1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddq-score-snapshot1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddq-score-trend1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddq-tier-by-source1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changeddq-tier-status1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changedfailed-tests-summary1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changedfreshness-status1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
    • Changedincident-context1 field changed
      • addedInput schema / properties / extractFields
        Added value: +{
        +  "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.",
        +  "type": "string"
        +}
  4. 2 tool updatesv0.4.2
    • Addeddbt-sla-status
    • Changeddq-tier-status1 field changed
      • addedInput schema / properties / fallbackMaxDays
        Added value: +{
        +  "default": 2,
        +  "description": "us-all schema only: when the cutoff date has no row, walk back to the most recent prior row only if it is within this many days. Beyond the limit, score/meeting are returned null with a stale note instead of silently passing SLA with stale data. Default 2.",
        +  "maximum": 30,
        +  "minimum": 0,
        +  "type": "integer"
        +}
  5. 1 tool updatev0.3.1
    • Addeddq-tier-by-source
  6. 3 tool updatesv0.1.1
    • Changeddq-get-check-history1 field changed
      • changedInput schema / properties / checkName / description
        Previous value: -"Exact check_name as stored in the results table"New value: +"Generic schema: exact check_name. us-all schema: 'check_type:target_name' (concat)"
    • Changeddq-list-checks1 field changed
      • changedInput schema / properties / dataset / description
        Previous value: -"Filter by dataset / schema"New value: +"Filter by dataset / source"
    • Changeddq-score-trend1 field changed
      • changedInput schema / properties / scope / description
        Previous value: -"Scope filter (domain or dataset, when score table supports it)"New value: +"Scope filter (only honored when DQ_SCHEMA=generic)"
  7. 25 tool updatesv0.1.0
    • First observeddbt-coverage
    • First observeddbt-failed-tests
    • First observeddbt-get-macro
    • First observeddbt-get-model
    • First observeddbt-get-run-results
    • First observeddbt-get-source
    • First observeddbt-get-test
    • First observeddbt-graph
    • First observeddbt-list-exposures
    • First observeddbt-list-macros
    • First observeddbt-list-models
    • First observeddbt-list-runs
    • First observeddbt-list-sources
    • First observeddbt-list-tests
    • First observeddbt-slow-models
    • First observeddq-failed-checks-by-dataset
    • First observeddq-get-check-history
    • First observeddq-list-checks
    • First observeddq-score-snapshot
    • First observeddq-score-trend
    • First observeddq-tier-status
    • First observedfailed-tests-summary
    • First observedfreshness-status
    • First observedincident-context
    • First observedsearch-tools

TDQS

B3.3/5.0
Disambiguation4/5

Most tools have distinct purposes, but composite tools like `failed-tests-summary` overlap with `dbt-failed-tests` and `dq-failed-checks-by-dataset`, and `incident-context` aggregates multiple individual tools, potentially causing confusion about which to use.

Naming Consistency3/5

Tools follow a consistent prefix pattern (`dbt-` and `dq-`) but there are deviations like `dbt-graph` instead of `dbt-get-graph`, and four tools without any prefix (`failed-tests-summary`, `freshness-status`, `incident-context`, `search-tools`), mixing naming conventions.

Tool Count4/5

With 27 tools covering dbt core operations, data quality, and incident triage, the count is slightly high but well-justified for the broad scope, avoiding the extremes of overwhelming or insufficient coverage.

Completeness4/5

The tool set covers essential dbt monitoring and data quality workflows (listing, details, failures, SLAs, scores), but lacks write operations and some administrative functions, though that seems intentional for a read-only analysis server.

Maintenance

ActivitySlowing
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
    C
    maintenance
    AI-driven MCP server that audits, profiles, detects schema drift, and auto-generates documentation for dbt projects, enabling natural language interaction with your dbt project's health.
    133
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides tools to interact with dbt, including dbt Core, Cloud CLI, Semantic Layer, and Discovery API.
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready MCP server that provides comprehensive dbt project quality assessment for any GitHub repository, enabling AI agents to analyze dbt models, check metadata coverage, and map data lineage.
    9
    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/us-all/dbt-mcp-server'

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