Skip to main content
Glama
frothkoetter

data-quality-cde-mcp-server

by frothkoetter

Data Quality CDE MCP Server

MCP server that generates and deploys Cloudera Data Engineering (CDE) Airflow jobs from ODCS data contracts. It validates live table data in CDW against schema and data-quality rules — without Write-Audit-Publish (WAP) staging branches.

Built on patterns from data-quality (CDE deployment, CDW connection, SQL operators) and data-contract-mcp-server (ODCS contract format, MCP tool design).

What it does

  1. Parse an ODCS-compatible data contract (schema_objects + quality rules)

  2. Generate an Airflow DAG that runs daily (default 0 3 * * *) using:

    • SQLExecuteQueryOperator — audit table setup

    • SQLCheckOperator — schema + quality checks against the live table

    • BranchPythonOperator — pass/fail gate with audit logging

  3. Deploy to CDE — upload DAG + lib/ + sql/ resource, create Airflow job

  4. Monitor CDE job runs and Airflow execution status

Related MCP server: aegis-dq

MCP tools (14)

Tool

Description

get_cde_config

Show current CDE/CDW settings

diagnose_cde_connectivity

Probe CDE CLI endpoint + list jobs

generate_dag_from_contract

Generate DAG Python from contract JSON

generate_spark_dag_from_contract

Generate Spark orchestrator DAG + bundle preview

preview_contract_checks

Preview SQL checks before deploy

deploy_contract_dq_job

Generate + deploy CDE job (airflow_sql or spark)

list_cde_jobs

List CDE jobs

describe_cde_job

Job details

list_cde_resources

List file resources

trigger_cde_job

Manual job run

list_cde_job_runs

List runs for a job

get_cde_job_run_status

Run status by id

get_airflow_dag_run_status

Latest Airflow run for a CDE job

delete_cde_job

Delete CDE job

Configuration

Copy .env.example to .env:

CDE_USER=your_cde_workload_user
CDE_PASSWORD=your_cde_workload_password
CDE_ENDPOINT_URL=https://your-cde-service.cloudera.site
CDW_CONNECTION_ID=CDW
DEFAULT_DAG_SCHEDULE=0 3 * * *

Parameter

Description

CDE_USER

CDE workload username

CDE_PASSWORD

CDE workload password

CDE_ENDPOINT_URL

Jobs API URL from CDE cluster details (…/dex/api/v1)

CDE_AUTH_URL

Optional Knox token URL (auto-derived if unset)

CDE_TRANSPORT

api (default, Agent Studio) | cli | auto

CDE_BIN

Path to cde CLI (only for CDE_TRANSPORT=cli)

CDW_CONNECTION_ID

Airflow connection id for Hive/Impala in CDW (default: CDW)

DEFAULT_DAG_SCHEDULE

Cron schedule (default: daily at 03:00 UTC)

Agent Studio: The CDE CLI is not installed in CrewAI/Agent Studio. Use CDE_TRANSPORT=api (default) with the Jobs API URL — not the Grafana or service-only URL.

Local laptop: Use CDE_TRANSPORT=cli if you have the cde binary configured, or keep api everywhere for consistency.

Prerequisite: For deploy tools, generated DAG bundles are uploaded via REST. The Airflow CDW connection must exist in your CDE environment.

Agent Studio only supports stdio MCP servers launched with uvx (Python) or npx (Node.js). Use a git URL so the runtime can install the package; do not use uv run unless the repo is checked out on the same machine.

{
  "mcpServers": {
    "data-quality-cde-mcp-server": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/frothkoetter/data-quality-cde-mcp-server.git@master",
        "run-server"
      ],
      "env": {
        "CDE_USER": "<your_cde_workload_user>",
        "CDE_PASSWORD": "<your_cde_workload_password>",
        "CDE_ENDPOINT_URL": "https://<your-cde-service>.cloudera.site",
        "CDW_CONNECTION_ID": "CDW"
      }
    }
  }
}

See also conf.yaml.example for YAML-style Agent Studio registration.

Registration tips

  1. Push this repo to GitHub first — uvx --from git+https://... cannot resolve a local-only repo.

  2. Use placeholder CDE credentials during catalog registration; provide real values when attaching the MCP server to a workflow agent.

  3. If you see "We could not figure out the tools offered by the MCP server", the server may still work in workflows — Agent Studio documents occasional tool-discovery failures. Add the MCP server to your agent manually and select tools there.

  4. Avoid writing to stdout from wrapper scripts — stdio transport uses stdout for JSON-RPC.

  5. Ensure the Agent Studio environment has uvx on PATH (which uvx) and can reach CDE_ENDPOINT_URL.

See Cloudera MCP registration docs.

Troubleshooting MCP server load failures

If CrewAI Agent Studio, Cursor, or another MCP host fails to connect to this server via uvx, check the following.

Wrong git branch in uvx --from

This repo's default branch is master (not main). Agent Studio registration fails if the git URL points at a non-existent branch:

git+https://github.com/frothkoetter/data-quality-cde-mcp-server.git@master

FastMCP / mcp import error

uvx installs the latest mcp package (currently 2.x). MCP Python SDK 2.0 renamed FastMCP to MCPServer. Older server builds crash on startup with:

ImportError: cannot import name 'FastMCP' from 'mcp.server'

This server includes the dual-import fix (MCPServer + FastMCP fallback). Ensure you use a build from main after the MCP SDK 2.x compatibility update.

Verify locally:

CDE_USER="test" CDE_PASSWORD="test" CDE_ENDPOINT_URL="https://example.com" \
uv run python scripts/test_mcp_stdio.py uvx --from . run-server

Expected output: OK initialize and OK tools/list: 13 tools.

Missing CDE credentials

CDE credentials are not required at startup (tool discovery works without them). They are required when calling deploy/monitor tools such as deploy_contract_dq_job or list_cde_jobs. Set CDE_USER, CDE_PASSWORD, and CDE_ENDPOINT_URL in the MCP host env block before using those tools.

FileNotFoundError: cde in Agent Studio

CrewAI Agent Studio does not install the CDE CLI. The server now uses the CDE REST API by default (CDE_TRANSPORT=api). Ensure:

  1. CDE_ENDPOINT_URL is the Jobs API URL from your virtual cluster details (https://<vc>.<host>/dex/api/v1) — not a generic service URL.

  2. CDE_TRANSPORT=api (default) — do not set cli in Agent Studio.

  3. CDE_USER / CDE_PASSWORD are valid CDP workload credentials.

Test connectivity with the diagnose_cde_connectivity MCP tool after re-registering.

Agent Studio / CrewAI config

Ensure uvx is on the Agent Studio host PATH (which uvx).

Cursor / MCP setup

Add to your MCP config (see mcp.json.example):

{
  "mcpServers": {
    "data-quality-cde-mcp-server": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/frothkoetter/data-quality-cde-mcp-server.git@master", "run-server"],
      "env": {
        "CDE_USER": "<user>",
        "CDE_PASSWORD": "<password>",
        "CDE_ENDPOINT_URL": "https://<cde-host>",
        "CDW_CONNECTION_ID": "CDW"
      }
    }
  }
}

Local development:

cd data-quality-cde-mcp-server
uv sync
uv run run-server

Example contract

See examples/flights_contract.json — based on the airlinedata.flights table from the data-quality project:

{
  "contract_id": "flights-contract",
  "version": "1.0",
  "schema_objects": [{
    "name": "flights",
    "physical_name": "airlinedata.flights",
    "properties": [
      {"name": "uniquecarrier", "isRequired": true},
      {"name": "origin", "isRequired": true}
    ]
  }],
  "quality": [
    {"name": "carrier_completeness", "rule_type": "completeness", "element": "uniquecarrier"},
    {"name": "delay_range", "rule_type": "range", "element": "arrdelay", "threshold": "600"}
  ]
}

Generated DAG flow

ensure_audit_table → column/table/custom checks → evaluate_contract_gate
  ├─ dq_success → persist_audit
  └─ contract_violation_alert (AirflowException + audit log)

Uses Airflow Common SQL provider operators per Astronomer's SQL data quality guide:

Operator

Used for

Contract mapping

SQLColumnCheckOperator

Null, unique, min, max, distinct per column

isRequired, primaryKey, completeness, uniqueness, range, min_value, distinct_count_min

SQLTableCheckOperator

Row count, freshness, composite PK

Default COUNT(*) >= 1, timeliness/freshness, multi-column PK

SQLCheckOperator

Custom SQL

Rules with a query field, or unmapped complex checks

Column check types (SQLColumnCheckOperator)

Check type

SQL abstraction

Example contract rule

null_check

SUM(CASE WHEN col IS NULL …)

isRequired: true, completeness

unique_check

COUNT - COUNT(DISTINCT)

primaryKey: true, uniqueness

distinct_check

COUNT(DISTINCT col)

distinct_count_min

min / max

MIN(col) / MAX(col)

min_value, range / max_value

Qualifiers: equal_to, greater_than, geq_to, less_than, leq_to (with optional tolerance).

Table checks (SQLTableCheckOperator)

Check

Example

Row count

{"row_count_check": {"check_statement": "COUNT(*) >= 1"}}

Freshness

{"freshness_col": {"check_statement": "MAX(ts) >= CURRENT_TIMESTAMP - INTERVAL '24' HOUR"}}

Composite PK

Custom check_statement with subquery

Custom checks (SQLCheckOperator)

Any rule with a query field, or checks spanning multiple tables. Returns a single row; task fails if any value is Python-falsy (e.g. 0).

Supported quality rule types

Rule type

Generated SQL

completeness / not_null

Null count = 0

uniqueness

No duplicate values

range / max_value

Column <= threshold

min_value

Column >= threshold

timeliness / freshness

Max timestamp within N hours

distinct_count_min

COUNT(DISTINCT col) >= threshold

Custom

Use query field — fails when query returns rows

Schema checks always include: min row count, required-column null checks, primary-key uniqueness.

Deploy from MCP

deploy_contract_dq_job(
  contract_json=<ODCS contract>,
  cde_user=...,
  cde_password=...,
  cde_endpoint_url=...,
  cdw_connection_id="CDW",
  trigger_after_deploy=true
)

This creates:

  • CDE resource: {contract-id}-dq-resource (DAG + lib/ + sql/)

  • CDE Airflow job: {contract-id}-dq-job

  • DAG id: dag_contract_dq_{contract_id}

Spark 3.4 orchestration (execution_mode="spark")

Use when checks should run in Spark instead of Airflow SQL operators:

deploy_contract_dq_job(
  contract_json=<ODCS contract>,
  execution_mode="spark",
  spark_runtime_image="dex-spark-runtime",  # optional Spark 3.4 runtime resource
  schedule="0 * * * *",
  trigger_after_deploy=true
)

This creates:

  • Same CDE resource with contract_dq_spark.py, contract_config.json, and orchestrator DAG

  • Spark child job: {contract-id}-spark-dq-job (triggered by Airflow, not scheduled)

  • Airflow orchestrator job: {contract-id}-dq-job with schedule; DAG ensures Iceberg dq_audit_log / dq_audit_metric tables then calls CDEJobRunOperator

  • Spark job runs contract checks and writes audit log + Griffin metrics rows

Optional env: CDE_SPARK_RUNTIME_IMAGE, CDE_SPARK_NUM_EXECUTORS, CDE_SPARK_EXECUTOR_MEMORY, CDE_SPARK_DRIVER_MEMORY, CDE_SPARK_CONF (JSON).

Monitor:

list_cde_job_runs(job_name="flights-contract-dq-job")
get_airflow_dag_run_status(job_name="flights-contract-dq-job")

Schedule / duplicate runs: Deploy leaves the CDE schedule paused by default. Unpausing can immediately enqueue a missed-interval (backfill) run. Never combine unpause with a manual trigger in the same step — that starts two runs within seconds.

  • default deploy → schedule paused; unpause manually or pass activate_schedule=true

  • trigger_after_deploy=true → one isolated manual run; schedule re-paused after trigger

  • trigger_cde_job → same isolated manual run (schedule stays paused)

  • All generated DAGs set max_active_runs=1 to serialize overlapping DAG runs

Differences from data-quality (WAP project)

Feature

data-quality

This MCP server

WAP / Iceberg branches

Yes

No

DataSketches baseline

Yes

No (contract-driven SQL)

Data ingest staging

Yes

No — checks live table

Deployment

Shell script

MCP tools + CDE CLI

Contract source

Airflow Variables

ODCS JSON / Atlas contracts

Schedule

0 3 * * *

Default 0 3 * * * (configurable)

Development

uv sync
uv run pytest
uv run ruff check src tests

License

Apache-2.0

Available Tools

13 tools
delete_cde_jobB

Delete a CDE Airflow job. WRITE OPERATION

ParametersJSON Schema
NameRequiredDescriptionDefault
cde_userNo
job_nameYes
cde_passwordNo
cde_endpoint_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It flags 'WRITE OPERATION' but does not state that deletion is permanent, irreversible, or might have side effects on existing DAG runs or downstream dependencies. It adds minimal context beyond what the action 'Delete' already implies.

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 extremely concise and front-loaded, with a single clear sentence and a bold safety note. It is appropriately short for a simple delete operation, though the 'WRITE OPERATION' warning might be considered redundant given the verb 'Delete.'

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 having an output schema, the description lacks critical context for a destructive operation. It does not mention that deletion is permanent, what happens to associated resources (e.g., job runs), or whether special permissions are required. It also fails to explain the authentication parameters, leaving users under-informed for safe invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no meaning for the input parameters (job_name, cde_user, cde_password, cde_endpoint_url). It fails to explain the purpose of the optional authentication parameters or clarify the required job_name. The description adds zero value over the raw 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 uses a specific verb ('Delete') and resource ('CDE Airflow job'), clearly distinguishing it from sibling tools like list_cde_jobs, describe_cde_job, and trigger_cde_job. It unambiguously states what the tool does.

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

Usage Guidelines3/5

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

The description implies usage when you need to delete a CDE job, but it does not explicitly mention when to use this tool versus alternatives, nor does it provide any prerequisites or exclusions. There is no guidance on when not to use it, such as if the job is running or has dependencies.

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

deploy_contract_dq_jobA

Generate DAG from data contract and deploy to Cloudera CDE as an Airflow job.

Creates/updates a CDE files resource (lib/, sql/, DAG) and an Airflow job. Checks live table data against schema and quality rules — no WAP/staging branch.

Args: contract_json: ODCS-compatible contract JSON. cde_user: CDE workload username. cde_password: CDE workload password. cde_endpoint_url: CDE REST/CLI endpoint URL. cdw_connection_id: Airflow CDW connection id (default CDW). schedule: Cron schedule (default daily 0 3 * * *). audit_table: Optional audit table qualified name. force_recreate: Delete and recreate job/resource before deploy. trigger_after_deploy: Trigger a manual CDE job run after deploy.

ParametersJSON Schema
NameRequiredDescriptionDefault
cde_userNo
scheduleNo
audit_tableNo
cde_passwordNo
contract_jsonYes
force_recreateNo
cde_endpoint_urlNo
cdw_connection_idNo
trigger_after_deployNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well by disclosing that it creates/updates a CDE files resource and Airflow job, checks live table data, avoids WAP/staging, and supports force_recreate for deletion. It lacks details on failure modes or idempotency, but covers the key behavioral traits for a deployment 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 well-structured with a concise summary followed by an Args list. Every sentence adds value, and the layout makes it easy to scan for purpose, behavior, and parameters.

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

Completeness5/5

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

For a complex tool with 9 parameters and no annotations, the description is remarkably complete: it covers all parameter semantics, key side effects, and even special behavior like no WAP branch. Since an output schema exists, not explaining return values is acceptable.

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

Parameters5/5

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

Although schema description coverage is 0%, the Args section in the description provides meaningful definitions and defaults for all 9 parameters, such as 'ODCS-compatible contract JSON', 'default CDW', and 'default daily 0 3 * * *'. This fully compensates for the schema's missing descriptions.

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

Purpose5/5

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

The description opens with a specific verb+resource statement: 'Generate DAG from data contract and deploy to Cloudera CDE as an Airflow job.' It clearly distinguishes itself from siblings like generate_dag_from_contract by explicitly adding deployment and the creation/update of CDE files resource and Airflow job.

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 clearly conveys the tool's deployment purpose and side effects, allowing an agent to infer when to use it. However, it does not explicitly mention alternatives or exclusion criteria, such as 'use generate_dag_from_contract if you only need the DAG without deployment.'

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

describe_cde_jobC

Describe a CDE job by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
cde_userNo
job_nameYes
cde_passwordNo
cde_endpoint_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 burden. It only says 'Describe', which implies a read-only operation, but it does not disclose that cde_user, cde_password, and cde_endpoint_url are likely authentication-related, nor what happens if they are absent or invalid. Credential handling is a meaningful behavioral trait left unexplained.

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, front-loaded sentence with no filler. Every word contributes to the core purpose. It is appropriately concise for a simple describe operation.

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 4 parameters, no annotations, and 13 sibling tools, this one-liner is insufficient. It lacks guidance on authentication requirements, selection relative to sibling tools, and what 'describe' encompasses. The output schema may cover return values, but the description does not make the tool easy to invoke correctly without prior domain knowledge.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only reinforces that job_name is the lookup key via 'by name'. It does not explain cde_user, cde_password, or cde_endpoint_url, which are critical optional parameters. The description fails to compensate for the absent schema descriptions.

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 action ('Describe') and resource ('a CDE job'), and narrows it by name. It distinguishes from list_cde_jobs by implying a single-job lookup, though it doesn't explicitly name alternatives or the nature of the returned details.

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 list_cde_jobs, get_cde_config, or get_cde_job_run_status. The 'by name' qualifier implicitly suggests targeted lookup, but no exclusions or alternative recommendations are provided.

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

diagnose_cde_connectivityB

Probe CDE CLI connectivity (configure endpoint + list jobs).

Args: cde_user: CDE workload username (overrides CDE_USER env). cde_password: CDE workload password (overrides CDE_PASSWORD env). cde_endpoint_url: CDE service URL (overrides CDE_ENDPOINT_URL env).

ParametersJSON Schema
NameRequiredDescriptionDefault
cde_userNo
cde_passwordNo
cde_endpoint_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 the burden of behavioral disclosure. It mentions that it 'configure endpoint + list jobs', which gives some insight into actions, but it does not clarify potential side effects (e.g., modifying config files), authentication requirements, or failure behavior. This partial transparency warrants a middle score.

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 followed by a clear, structured argument list. Every element serves a purpose, with no filler or repetition, making it highly concise and well-structured.

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 tool has an output schema, so the description need not explain return values, but it lacks context about when to use this for diagnosing connectivity versus simply listing jobs. It also does not mention any prerequisites or expected inputs, leaving the agent with a minimal but not fully complete picture.

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?

Despite having 0% schema description coverage, the description enriches all three parameters by stating they override environment variables (e.g., 'overrides CDE_USER env'). This adds clear meaning beyond the raw schema, though it does not specify defaults or required-ness, which are already in the schema as nullable with defaults.

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's purpose with the verb 'probe' and resource 'CDE CLI connectivity', and it distinguishes itself from siblings like list_cde_jobs by noting it also 'configure endpoint + list jobs'. This gives a specific, actionable definition.

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 such as list_cde_jobs or describe_cde_job. There is no mention of scenarios, exclusions, or alternative tools, leaving the agent to infer usage from the purpose alone.

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

generate_dag_from_contractA

Generate Airflow DAG Python from an ODCS data contract (no WAP).

Validates live table schema (required columns, PK uniqueness) and data quality rules using Airflow SQLCheckOperator against the CDW connection (default: CDW). Default schedule is once daily (0 3 * * *) unless overridden.

Args: contract_json: ODCS-compatible contract JSON (schema_objects + quality rules). schedule: Cron schedule (default 0 3 * * * — daily at 03:00 UTC). cdw_connection_id: Airflow connection id for Hive/Impala in CDW (default CDW). audit_table: Optional qualified audit table name for check results.

ParametersJSON Schema
NameRequiredDescriptionDefault
scheduleNo
audit_tableNo
contract_jsonYes
cdw_connection_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions validation logic, CDW connection, and default schedule, which is useful. However, it is ambiguous whether validation happens at generation time or inside the generated DAG, and it does not disclose output format or side effects beyond 'Generate Airflow DAG Python'.

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

Conciseness4/5

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

The description is well-structured with a clear opening, behavioral details, and an Args list. It is front-loaded and every sentence adds information, though the Args section is somewhat verbose and could be tightened.

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 and lack of annotations, the description covers key aspects: purpose, parameters, defaults, and validation behavior. It is nearly complete but leaves gaps around the 'no WAP' qualifier, the distinction from deploy_contract_dq_job, and the exact timing of validation. The presence of an output schema mitigates the need to describe return values.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. The Args section explains all four parameters with meanings and defaults (e.g., contract_json, schedule, cdw_connection_id, audit_table). This adds substantial value beyond the bare input 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 opens with 'Generate Airflow DAG Python from an ODCS data contract (no WAP)', which clearly states the tool's verb, resource, and scope. This distinguishes it from sibling tools like deploy_contract_dq_job and preview_contract_checks, making its purpose unambiguous.

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

Usage Guidelines3/5

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

The description provides context about defaults and validation behavior but does not explicitly state when to use this tool versus alternatives like deploy_contract_dq_job or preview_contract_checks. Usage is implied by the name and purpose, but no explicit exclusions or alternative comparisons are given.

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

get_airflow_dag_run_statusA

Monitor latest CDE Airflow job run status (via CDE run API).

Returns the most recent run for the given CDE Airflow job, including status, start/end times, and run id for further inspection.

ParametersJSON Schema
NameRequiredDescriptionDefault
cde_userNo
job_nameYes
cde_passwordNo
cde_endpoint_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It clearly states this is a read-only monitoring operation that returns status, start/end times, and run ID. It does not overpromise or hide side effects; the phrase 'via CDE run API' adds context. Minor gap: it doesn't explicitly state it makes no changes, but the 'monitor' wording implies a safe read operation.

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, front-loaded with the key action and resource. The second sentence adds valuable return details. No wasted words, though 'CDE Airflow job' appears twice redundantly; still concise and well-structured.

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

Completeness3/5

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

The description covers the tool's core purpose and return data, and an output schema exists, so return structure is provided elsewhere. However, it is under-specified given 4 parameters with 0% schema coverage, especially the auth-related params, and lacks usage guidance relative to sibling tools. It is minimally viable but leaves notable gaps for an agent to invoke correctly with correct credentials.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain any parameters. While job_name is obvious, the optional credentials (cde_user, cde_password, cde_endpoint_url) are left entirely unexplained, forcing the agent to guess their purpose. The description fails to compensate for the schema gap.

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

Purpose5/5

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

The description states a specific verb ('Monitor') and resource ('latest CDE Airflow job run status'), and clarifies it returns the most recent run with status, times, and run ID. This clearly differentiates it from sibling tools like get_cde_job_run_status which likely handles specific runs.

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?

Usage is implied: 'Monitor latest' suggests using this tool when you want the most recent run status. However, no explicit alternatives or when-not-to-use guidance is provided, and sibling tools like list_cde_job_runs and get_cde_job_run_status are not mentioned as alternatives.

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

get_cde_configA

Return current CDE/CDW configuration (passwords redacted).

Reads CDE_USER, CDE_PASSWORD, CDE_ENDPOINT_URL, CDE_BIN, CDW_CONNECTION_ID from environment or .env file.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden, and it does well by noting 'passwords redacted' and specifying the exact environment variables and source file. It does not mention whether there are side effects, but the read-only nature is strongly implied by 'Return current configuration'.

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 short sentences with no wasted words. The main purpose is front-loaded, and the redaction note is included parenthetically for immediate awareness.

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

Completeness5/5

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

For a zero-parameter configuration getter, the description is complete: it states what it returns, what it reads, and the important security behavior (password redaction). No further context is needed to invoke it correctly.

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?

The tool has zero parameters, so per the rubric the baseline is 4. The description adds value by listing the exact configuration keys that will be read, even though these are not function 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?

The description uses a specific verb and resource: 'Return current CDE/CDW configuration', clearly indicating this is a read-only retrieval tool. It distinguishes itself from sibling job-management tools by focusing on configuration rather than job operations.

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 clearly implies this is the tool to call when the agent needs the current CDE/CDW configuration, including source (environment or .env). It does not explicitly state when not to use it or name alternatives, but the context is clear enough given the sibling tools are about job lifecycle and diagnostics.

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

get_cde_job_run_statusB

Get status of a specific CDE job run.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
cde_userNo
cde_passwordNo
cde_endpoint_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only says 'Get status' – implying a read operation – but does not mention authentication requirements (despite cde_user/cde_password params), error handling, or any edge-case behavior. The credential parameters hint at auth, but the description gives no context.

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 6-word sentence: 'Get status of a specific CDE job run.' It is front-loaded and has no filler words. However, it is so sparse that it borders on under-specification, but this is still concise rather than 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?

Even though an output schema exists (reducing the need to explain return values), the description is incomplete for a 4-parameter tool with optional auth credentials and multiple sibling tools. It lacks usage guidance, parameter explanations, and any context about when or how to supply cde_user/cde_password/cde_endpoint_url. The tool's complexity is not matched by the description's minimal detail.

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

Parameters1/5

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

Schema description coverage is 0%, and the tool description provides no parameter information whatsoever. run_id, cde_user, cde_password, and cde_endpoint_url are completely undocumented in both schema and description, leaving the agent without any clue about their meanings or expected formats. The description fails to compensate for the schema gap.

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

Purpose5/5

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

Description states 'Get status of a specific CDE job run' – a clear verb ('Get') and resource ('status of a specific CDE job run'), which distinguishes it from list_cde_job_runs (which lists runs) and get_airflow_dag_run_status (Airflow-specific). The specificity of 'specific' run makes the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage when a run_id is known and status is needed, but does not explicitly state when to use this tool versus list_cde_job_runs for seeing all runs or get_airflow_dag_run_status for a different system. No exclusions or alternative tool mentions are provided.

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

list_cde_job_runsA

List CDE runs for a job (monitor execution status).

ParametersJSON Schema
NameRequiredDescriptionDefault
cde_userNo
job_nameYes
cde_passwordNo
cde_endpoint_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must carry the burden of disclosing behavioral traits, but it provides no details beyond restating the function name. It does not mention whether the operation is read-only, if authentication is required, or how runs are scoped (e.g., all runs vs. recent). The parenthetical clarifies purpose, not behavior.

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, directly starting with the verb 'List' and including all essential information. There is no redundant text or filler, making it an exemplar of conciseness.

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 the output schema existing, the tool has 4 parameters with no schema descriptions and no annotations. The description does not explain the required job_name parameter or optional credential parameters, leaving the agent uncertain about prerequisites and invocation. This is a significant gap for a tool with multiple configuration parameters.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate by explaining parameter meaning. It only hints at 'job_name' by saying 'for a job', but provides no explanation for the optional cde_user, cde_password, or cde_endpoint_url parameters. This is minimal value beyond the raw 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: 'List CDE runs for a job' with the purpose of monitoring execution status. This verb+resource pairing distinguishes it from sibling tools like list_cde_jobs (which lists jobs) and get_cde_job_run_status (which gets a single run's status). The parenthetical adds clarity to the intent without ambiguity.

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 phrase '(monitor execution status)' gives clear context for when to use this tool—when you want to check the status of a job's runs. However, it does not explicitly state when not to use alternatives or name any exclusions, so it falls short of a full 5.

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

list_cde_jobsC

List all CDE jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
cde_userNo
cde_passwordNo
cde_endpoint_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It only states the action 'List' without confirming read-only status, authentication requirements, pagination behavior, or error handling. This is insufficient for an operation that takes credential parameters.

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 with a front-loaded verb and no wasted words. It is appropriately sized for the information it conveys, though that information is minimal.

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 having an output schema, the tool has three optional authentication-related parameters and a large sibling tool set. The description does not explain why credentials might be needed, how it differs from related list tools, or any connection/authentication prerequisites. The description is minimally viable but lacks essential context.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain the purpose or usage of the three parameters (cde_user, cde_password, cde_endpoint_url). It adds no meaning beyond the parameter names, completely failing to compensate for the lack of schema descriptions.

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 uses a specific verb 'List' and resource 'CDE jobs', which clearly distinguishes it from sibling tools like list_cde_job_runs (lists runs) and describe_cde_job (describes a single job). It is direct and unambiguous.

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 such as list_cde_resources or describe_cde_job. There is no mention of prerequisites, typical use cases, or exclusions, leaving the agent to infer the appropriate context.

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

list_cde_resourcesC

List CDE file resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
cde_userNo
cde_passwordNo
cde_endpoint_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are present, so the description carries the burden of disclosing behavior. It only says 'List' which implies read-only, but it does not mention authentication needs (despite credential parameters), potential errors, rate limits, or the nature of the returned data.

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

Conciseness4/5

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

The description is a single sentence with no filler. It is concise, but the brevity comes at the cost of necessary detail. It still earns its place as a minimal functional statement.

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 that likely requires CDE credentials and connectivity, the description is incomplete. It does not explain what 'file resources' are, when this should be called, or how the optional parameters affect the request. The presence of an output schema reduces the need to describe return values, but the lack of contextual setup is a significant gap.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention or explain any parameters. While parameter names (cde_user, cde_password, cde_endpoint_url) are somewhat self-explanatory, the description adds no contextual meaning about how or why these are used.

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

Purpose4/5

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

The description states a clear action ('List') and a specific resource ('CDE file resources'), which is more specific than a tautology. However, it does not define what 'file resources' encompasses, so it is not fully self-explanatory.

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 siblings like list_cde_jobs or diagnose_cde_connectivity. There is no mention of prerequisites, use cases, or alternatives.

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

preview_contract_checksA

Preview schema and quality SQL checks that would be generated from a contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
contract_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Since no annotations are provided, the description carries the full burden. The word 'Preview' suggests a read-only, non-destructive operation, and 'would be generated' indicates hypothetical output. However, the description doesn't explicitly confirm that no side effects occur, whether validation happens, or what happens on invalid input. This is a minor gap for a preview 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, focused sentence that conveys the core purpose without unnecessary detail. Every word contributes to understanding the tool's function, making it highly concise and well-structured.

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 tool has an output schema, which likely covers return values, and one simple parameter. However, the description lacks contextual guidance on how this tool fits into the broader workflow (e.g., using it before generate_dag_from_contract). It's adequate for a simple preview tool but not fully complete given the sibling context.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds little beyond the parameter name. 'contract_json' is a string, and the description says 'from a contract', but it doesn't specify the expected JSON structure, format, or any details about how the contract should be provided. The description fails to compensate for the lack of schema documentation.

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

Purpose5/5

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

The description uses a specific verb 'Preview' with a clear resource ('schema and quality SQL checks') and source ('from a contract'). It effectively distinguishes this tool from siblings like generate_dag_from_contract or deploy_contract_dq_job, which perform different actions.

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 usage context is implied but not explicitly stated. The description implies this tool is for inspecting checks before generation or deployment, but it doesn't explicitly say when to use it over alternatives or mention any exclusions or prerequisites. There's no clear guidance on workflow placement.

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

trigger_cde_jobC

Trigger a manual CDE job run.

ParametersJSON Schema
NameRequiredDescriptionDefault
cde_userNo
job_nameYes
cde_passwordNo
cde_endpoint_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only states the action ('Trigger'). It does not mention side effects, authorization requirements, whether the run is asynchronous, or what happens if the job is already running. This is a mutating operation that needs more transparency.

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, grammatically correct sentence with no filler, and the verb is front-loaded. However, it is under-specified for a tool with four parameters and mutation side effects, so conciseness borders on being too terse.

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 mutating trigger tool with no annotations and four parameters, the description is incomplete. It fails to explain return values, error conditions, or parameter relationships, and the presence of an output schema does not compensate for missing usage and behavioral context.

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

Parameters2/5

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

Schema description coverage is 0%, and the description names no parameters. The required job_name and optional cde_user, cde_password, and cde_endpoint_url are not explained beyond their titles, leaving the agent without semantic guidance for populating them.

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 uses a specific verb ('Trigger') and identifies the resource ('a manual CDE job run'), making the core action clear. It is distinguishable from sibling tools like list_cde_jobs or describe_cde_job, though it could be more explicit about what 'manual' implies.

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 get_cde_job_run_status or diagnose_cde_connectivity. There is no mention of prerequisites, scheduling context, or exclusions, leaving the agent to infer usage.

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

Tool Schema Changelog

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

  1. 13 tool updatesv0.1.0
    • First observeddelete_cde_job
    • First observeddeploy_contract_dq_job
    • First observeddescribe_cde_job
    • First observeddiagnose_cde_connectivity
    • First observedgenerate_dag_from_contract
    • First observedget_airflow_dag_run_status
    • First observedget_cde_config
    • First observedget_cde_job_run_status
    • First observedlist_cde_job_runs
    • First observedlist_cde_jobs
    • First observedlist_cde_resources
    • First observedpreview_contract_checks
    • First observedtrigger_cde_job

TDQS

A3.5/5.0

Scored across 13 tools

Disambiguation3/5

Most tools are distinct, but there is notable overlap among run-monitoring tools (get_cde_job_run_status, get_airflow_dag_run_status, list_cde_job_runs) and between generate_dag_from_contract and deploy_contract_dq_job, which both generate DAGs. This creates moderate ambiguity for an agent.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in lowercase snake_case (e.g., list_cde_jobs, trigger_cde_job, delete_cde_job). The verbs are distinct and the pattern is highly predictable.

Tool Count5/5

13 tools is well-scoped for a CDE/CDW data-quality server, covering configuration, connectivity checks, DAG generation/deployment, job lifecycle, and monitoring without unnecessary bloat.

Completeness5/5

The tool surface covers the full workflow: configure and diagnose connectivity, generate/preview/deploy data contract DAGs, manage jobs, trigger runs, monitor status, and delete jobs. No critical operations are missing for the stated domain.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Detects schema mismatches between data producers and consumers through static analysis, supporting extraction, comparison, code generation, and automated validation with watch mode for MCP tools, APIs, and service contracts.
    11
    8 npm
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Agentic data quality MCP server — runs structured validation rules against warehouses (DuckDB, BigQuery, Athena, Databricks, Postgres), diagnoses failures with LLM root cause analysis, and proposes SQL remediations. Full audit trail of every AI decision.
    6
    4
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Automatically discovers database schema, performs data quality checks on tables and columns, and generates natural-language root cause analysis reports using Ollama LLM.
    -
  • 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.
    134
    MIT