Skip to main content
Glama
Pibbers

teradata-gcfr-mcp-server

by Pibbers

teradata-gcfr-mcp-server

An MCP (Model Context Protocol) server that exposes Teradata GCFR (Global Control Framework Repository) operational reporting as natural-language tools consumable by Claude Desktop, Claude Code, VS Code Copilot Chat, and any other MCP-compatible client. Connect Claude to your Teradata environment and ask questions like "show me failed processes since yesterday" or "what are the slowest streams this week" — without writing SQL.


Prerequisites

Requirement

Notes

Python 3.11+

Earlier versions not supported

uv

Package manager and runner — pip install uv

teradatasql Python driver

Installed automatically by uv sync

Network access to Teradata

Direct TCP to port 1025, or via ODBC gateway


Related MCP server: redash-mcp

How it works

Server architecture:

  1. Entry point (server.py) — Initializes the connection pool, registers all tools, applies profile filtering, and starts the MCP server.

  2. Connection pool (db.py) — Thread-safe pooling of Teradata connections with configurable size, overflow, and timeout. Queries have automatic reconnect-once on transient failures.

  3. Tool modules (tools/*.py) — 7 categories of MCP tools:

    • Streams (3 tools): Live stream status and business date tracking

    • Processes (3 tools): Process execution history and current status

    • Loads (3 tools): Data ingestion statistics and registration audit

    • Transforms (5 tools): Transform statistics, performance ranking, and trend analysis

    • Errors (3 tools): Error log, execution trace, and failed process diagnostics

    • SLA (2 tools): Service-level agreement compliance reporting

    • Lineage (2 tools): Data lineage tracing and health checks

  4. Custom tools (tool_loader.py) — YAML-defined SQL tools loaded from CONFIG_DIR at startup, allowing site-specific reporting without Python code.

Query execution:

  • All SQL uses parameterized queries (? placeholders) to prevent injection.

  • Schema/table names come from settings.py constants, never user input.

  • Per-query timeout enforced via GCFR_QUERY_TIMEOUT (default 120s).

  • Queries are capped at GCFR_MAX_ROWS (default 500 rows).

  • Results returned as structured error dicts on failure — no exceptions.

Transport modes:

Transport

Best for

Visibility

stdio

Claude Desktop, local REPL

Silent (stdout = MCP protocol)

sse

Development, debugging, VS Code

Log output on stderr

streamable-http

Web dashboards, REST clients

HTTP on configured port/path


Recent improvements

Query timeout enforcement (2025-04-02)

  • GCFR_QUERY_TIMEOUT is now wired to teradatasql.connect() at connection initialization

  • Queries that exceed the timeout are interrupted at the database level (no more runaway queries)

  • Timeout applies to all tool queries uniformly

HTTP mount path support (2025-04-02)

  • MCP_PATH setting is now properly passed to FastMCP's mcp.run() call

  • HTTP transports now mount at the configured path (e.g., /mcp/ → http://127.0.0.1:8001/mcp/)

  • Enables better URL hierarchy and multi-server configurations

Connection pool robustness

  • Automatic reconnect-once on transient failures (stale connections, temporary network issues)

  • QueryBand set on all connections for Teradata workload-management attribution

  • Graceful handling of connection exhaustion with timeout-aware blocking


Quick start

git clone <repo-url>
cd teradata-gcfr-mcp-server
uv sync
cp .env.example .env          # Edit with your Teradata credentials
MCP_TRANSPORT=sse uv run teradata-gcfr-mcp-server  # Or use stdio for Claude Desktop

The MCP_TRANSPORT defaults to stdio (for Claude Desktop), but sse is useful for debugging with visible log output on stderr.


Development install

git clone <repo-url>
cd teradata-gcfr-mcp-server

# Install all dependencies including dev extras
uv sync

# Run linting and type checks before making changes
uv run ruff check src/
uv run mypy src/

# Run unit tests (no Teradata connection required)
uv run pytest tests/unit/ -v

# Run the server locally in development mode
MCP_TRANSPORT=sse uv run teradata-gcfr-mcp-server

Copy .env.example to .env and update with your Teradata credentials. The server will use environment variables automatically.

Verification gate (run before committing):

All three checks must pass with zero errors:

uv run ruff check src/        # Linting
uv run mypy src/              # Type checking (strict)
uv run pytest tests/unit/ -v  # Unit tests (76 tests)

Configuration reference

All settings are read from environment variables or a .env file in the working directory.

Variable

Type

Default

Description

DATABASE_URI

str

(required)

teradata://user:pass@host:1025/db

LOGMECH

str

TD2

Auth mechanism: TD2, LDAP, TDNEGO, KRB5

TD_POOL_SIZE

int

5

Persistent connections in the pool

TD_MAX_OVERFLOW

int

10

Extra connections allowed under burst load

TD_POOL_TIMEOUT

int

30

Seconds to wait for a free connection

GCFR_VIEW_DB

str

GDEV1V_GCFR

Base view layer — registration/metadata tools

GCFR_OPR_DB

str

GDEV1V_OPR

Operational reporting views (GCFR_RV_*)

GCFR_UTLFW_DB

str

GDEV1V_UTLFW

BKEY/BMAP surrogate-key views

GCFR_TABLE_DB

str

GDEV1T_GCFR

Physical tables — health-check only

GCFR_MAX_ROWS

int

500

Maximum rows any single tool may return

GCFR_QUERY_TIMEOUT

int

120

Per-query timeout in seconds (enforced at connection init)

MCP_TRANSPORT

str

stdio

stdio | streamable-http | sse

MCP_HOST

str

127.0.0.1

(read-only) Bind host for HTTP/SSE — not configurable at runtime

MCP_PORT

int

8001

(read-only) Bind port for HTTP/SSE — not configurable at runtime

MCP_PATH

str

/mcp/

URL path prefix for HTTP transports

PROFILE

str

all

Active tool profile (see Profiles below)

LOGGING_LEVEL

str

WARNING

Python logging level

CONFIG_DIR

str

.

Directory scanned for *_tools.yml custom tools

Notes on transport configuration:

  • MCP_HOST and MCP_PORT are FastMCP internal settings and cannot be changed at runtime. The server binds to these values but the MCP framework controls the actual binding. Modify them only if you understand the implications.

  • MCP_PATH is properly wired and controls the HTTP mount point (e.g., /mcp/ → http://host:port/mcp/).

  • GCFR_QUERY_TIMEOUT is now wired to teradatasql.connect(), ensuring all queries respect the configured timeout.


Profiles

Profiles limit which tools are exposed to the MCP client. Set via the PROFILE env var or the --profile CLI flag.

all (default)

Every tool is available.

ops

Focused on live operational monitoring:

gcfr_stream_status, gcfr_current_stream_status, gcfr_stream_business_date, gcfr_current_process_status, gcfr_process_history, gcfr_process_status_summary, gcfr_failed_processes, gcfr_error_log, gcfr_execution_log, gcfr_load_status, gcfr_health_check

performance

Focused on SLA and throughput analysis:

gcfr_sla_process_report, gcfr_sla_stream_report, gcfr_top_slowest_processes, gcfr_top_slowest_streams, gcfr_data_trend_loads, gcfr_data_trend_transforms, gcfr_stream_status, gcfr_health_check

lineage

Focused on data lineage and registration audit:

gcfr_data_lineage, gcfr_dataset_registered, gcfr_load_stats, gcfr_transform_stats, gcfr_health_check


Available MCP tools (22 total)

All tools are read-only queries against GCFR operational views. None modify data.

Streams (3 tools)

  • gcfr_stream_status — History and completion state for a date range

  • gcfr_current_stream_status — Real-time stream status (running now)

  • gcfr_stream_business_date — Current, previous, next business date for a stream

Processes (3 tools)

  • gcfr_process_status_summary — All processes for a business date (completed vs incomplete)

  • gcfr_current_process_status — Real-time process status

  • gcfr_process_history — Execution history with timing and outcomes

Loads (3 tools)

  • gcfr_load_status — Which staging tables loaded successfully and row counts

  • gcfr_load_stats — Detailed load statistics (rejections, ET/UV violations, errors)

  • gcfr_dataset_registered — Source datasets registered for processing

Transforms (5 tools)

  • gcfr_transform_stats — Rows inserted/updated/deleted per process

  • gcfr_top_slowest_processes — Top N slowest processes by elapsed time

  • gcfr_top_slowest_streams — Top N slowest streams by elapsed time

  • gcfr_data_trend_loads — Daily load volume trends

  • gcfr_data_trend_transforms — Daily transform volume trends

Errors (3 tools)

  • gcfr_failed_processes — Failed process instances with error details

  • gcfr_error_log — Raw error log entries for root cause investigation

  • gcfr_execution_log — Step-level execution trace (debug level only)

SLA (2 tools)

  • gcfr_sla_process_report — Expected vs actual process timing and SLA compliance

  • gcfr_sla_stream_report — Expected vs actual stream duration and SLA compliance

Lineage (2 tools)

  • gcfr_data_lineage — Trace target table back to source objects

  • gcfr_health_check — Verify GCFR databases are reachable


Database naming

GCFR uses two distinct tiers of databases:

Tier

Name pattern

Purpose

View layer (V)

GDEV1V_GCFR, GDEV1V_OPR, GDEV1V_UTLFW

All GCFR_RV_* operational views — use these

Table layer (T)

GDEV1T_GCFR

Physical base tables — referenced only by the health-check

Never reference GDEV1_GCFR (no T or V suffix) — that database does not exist. All tool queries target the GDEV1V_* view layer. Only gcfr_health_check touches GDEV1T_GCFR to verify the physical tables are reachable.


Required Teradata permissions

The server account needs SELECT privilege on the three view-layer databases:

GRANT SELECT ON GDEV1V_GCFR  TO <your_user>;
GRANT SELECT ON GDEV1V_OPR   TO <your_user>;
GRANT SELECT ON GDEV1V_UTLFW TO <your_user>;
-- For health-check (optional):
GRANT SELECT ON GDEV1T_GCFR  TO <your_user>;

No INSERT, UPDATE, DELETE, or DDL privileges are required — the server is read-only.


Claude Desktop configuration

Add the following to your claude_desktop_config.json (replace credential values):

{
  "mcpServers": {
    "teradata-gcfr": {
      "command": "uvx",
      "args": ["teradata-gcfr-mcp-server"],
      "env": {
        "DATABASE_URI": "teradata://myuser:mypass@gdev1-host:1025/GDEV1V_GCFR",
        "LOGMECH": "TD2",
        "GCFR_VIEW_DB": "GDEV1V_GCFR",
        "GCFR_OPR_DB": "GDEV1V_OPR",
        "GCFR_UTLFW_DB": "GDEV1V_UTLFW",
        "GCFR_TABLE_DB": "GDEV1T_GCFR",
        "MCP_TRANSPORT": "stdio",
        "PROFILE": "all"
      }
    }
  }
}

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json


VS Code / Copilot Chat configuration

Add to your VS Code settings.json or workspace .vscode/mcp.json. The SSE transport is recommended for VS Code:

{
  "mcp": {
    "servers": {
      "teradata-gcfr": {
        "type": "sse",
        "url": "http://127.0.0.1:8001/sse",
        "env": {}
      }
    }
  }
}

Then run the server with:

MCP_TRANSPORT=sse uv run teradata-gcfr-mcp-server

Docker quick start

# Build image
docker build -t gcfr-mcp .

# Run with an .env file
docker run --rm --env-file .env -p 8001:8001 gcfr-mcp

# Or use docker-compose (starts with streamable-http transport)
docker compose up

The docker-compose.yml mounts ./gcfr_custom_tools.yml into the container at /app/gcfr_custom_tools.yml (read-only). Create this file to add site-specific tools; if it does not exist, the container starts without custom tools.


Custom tools (YAML)

Add read-only SQL tools without writing Python by placing a *_tools.yml file in CONFIG_DIR (defaults to ., the current working directory).

Example — gcfr_custom_tools.yml:

tools:
  - name: gcfr_my_site_report
    description: "Latest 20 stream records for this site"
    sql: >
      SELECT TOP 20
        Stream_Key, Stream_Name, Business_Date, Stream_Status
      FROM {gcfr_opr_db}.GCFR_RV_Stream
      ORDER BY Business_Date DESC

Supported SQL placeholders:

Placeholder

Expands to

Purpose

{gcfr_opr_db}

GCFR_OPR_DB setting

Operational reporting views (GCFR_RV_*)

{gcfr_view_db}

GCFR_VIEW_DB setting

Base registration/metadata views

{gcfr_utlfw_db}

GCFR_UTLFW_DB setting

BKEY/BMAP surrogate-key reference data

Custom tools are zero-argument — they execute their SQL directly with a GCFR_MAX_ROWS row limit applied automatically. Tool names must follow the gcfr_ prefix convention so that profile filtering and naming conventions are consistent.


Sample questions

The following questions work out-of-the-box with Claude once the server is connected:

  1. "Show me all failed processes since yesterday."

  2. "What is the current status of stream 42?"

  3. "Which streams have not completed today's business date?"

  4. "Give me the top 10 slowest processes this week."

  5. "Show the SLA report for process LOAD_CUSTOMER_DAILY from 2024-01-01 to 2024-01-31."

  6. "What datasets are registered in GCFR?"

  7. "List the lineage for target table CUSTOMER_DIM."

  8. "Show me transform statistics for the last 7 days."

  9. "Are the GCFR databases reachable? Run a health check."

  10. "What errors occurred in the execution log today?"


Linting and type checking

# Lint
uv run ruff check src/

# Auto-fix lint issues
uv run ruff check --fix src/

# Type checking (strict)
uv run mypy src/

Running tests

Unit tests (no Teradata connection required)

uv run pytest tests/unit/ -v

All database calls are mocked — unit tests run offline.

Integration tests (requires GDEV1 network access)

uv run pytest tests/integration/ -v

Integration tests are not yet implemented. Contributions welcome — see CLAUDE.md for the pending work list.

Skipping slow tests

uv run pytest tests/unit/ -v -m "not slow"

Architecture and design patterns

See CLAUDE.md in the repository for comprehensive developer documentation including:

  • Async/sync split — Why MCP tool wrappers are async but DB logic is sync

  • Dynamic date defaults — How to avoid frozen dates in function signatures

  • Parameterised SQL only — Security model for user input vs schema names

  • Reconnect-once pattern — Transient failure handling in the connection pool

  • TOP clause injection — Why and how row limits are applied transparently

  • Testing patterns — How to mock database calls without hitting Teradata

  • Custom tool loading — YAML-driven tool registration and placeholder substitution

  • Profile filtering — How role-based access control works at startup


Design validation

This server was validated against the upstream Teradata/teradata-mcp-server for architectural best practices and lessons learned. Key differences:

Aspect

This server

Upstream

Connection layer

Direct teradatasql

SQLAlchemy + teradatasqlalchemy

DB abstraction

Hand-rolled connection pool

SQLAlchemy QueuePool

Tool registration

Module-based + YAML

Python (auto-discovery) + YAML + progressive disclosure

Async strategy

asyncio.to_thread in wrappers

Sync blocking in handlers (thread pool implicit)

Type checking

mypy --strict

Gradual mypy (strict disabled)

Testing

3 per handler (normal/empty/error)

Integration tests against live DB

Error handling

Structured error dicts

Some handlers may raise

Database timeout

✓ Enforced at connection

Optional SQLAlchemy pool timeout

HTTP path mounting

✓ Wired to mcp.run()

Configuration-only

Both implementations are production-ready and differ mainly in scope (GCFR-specific vs general Teradata) and deployment strategy (lightweight vs feature-rich).


Troubleshooting

Symptom

Likely cause

Fix

OSError: Teradata connection failed

Wrong host/port in DATABASE_URI

Verify host resolves and port 1025 is reachable; check firewall

[Error 3524] No access or permission denied

Missing SELECT grant

Run the GRANT SELECT ON ... statements in the Required Teradata permissions section

Tool returns {"error": "...", "sql": "..."}

Query execution failed or timeout

Check GCFR_QUERY_TIMEOUT setting; look at the sql field for the failing query; check Teradata error message

Query hangs or times out

GCFR_QUERY_TIMEOUT too low or network latency

Increase GCFR_QUERY_TIMEOUT in .env; default is 120s

Claude Desktop shows no tools

Server not running or wrong transport

Confirm MCP_TRANSPORT=stdio; restart Claude Desktop after server starts

SSE transport shows Connection refused

Server not running or wrong host/port

Verify server is running with MCP_TRANSPORT=sse; check MCP_HOST and MCP_PORT in .env

INTERVAL columns appear as "0:01:23" string

Expected — Teradata INTERVAL serialized to string

The HH:MM:SS format is correct; this is standard JSON serialization of intervals

Custom tools not appearing

Wrong CONFIG_DIR or file not named *_tools.yml

Set CONFIG_DIR to the directory containing your *_tools.yml file; restart server

Profile filter not working

Tool name doesn't match pattern

Tool names must start with gcfr_ to be subject to profile filtering

Server starts but no output

MCP_TRANSPORT=stdio silences logs

Use MCP_TRANSPORT=sse or MCP_TRANSPORT=streamable-http to see startup logs on stderr

Available Tools

21 tools
gcfr_current_process_statusA

Show active processes and their current execution step.

Process_State values: 0=started, 1–98=in progress (restart point), 99=complete. Use this to find stuck or long-running processes. Filter by stream_key and/or process_name to narrow results.

ParametersJSON Schema
NameRequiredDescriptionDefault
stream_keyNo
process_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral disclosure. It explains the Process_State encoding (0, 1–98, 99) and the filtering behavior, which is valuable beyond what annotations would provide. However, it does not explicitly state read-only behavior or any caveats, though 'Show' implies it.

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

Conciseness5/5

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

The description is concise and well-structured: it leads with the core action, then explains state values, and ends with usage and filtering hints. Every sentence earns its place; no fluff.

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

Completeness5/5

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

Given the output schema exists, return values do not need explanation. The description provides the critical process-state semantics, suggests a primary use case, and explains optional filtering. It is complete enough for a status tool with simple parameters.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that stream_key and process_name are filters to narrow results, which clarifies their role. It does not define the values or formats, but the parameter names are self-descriptive and the filtering purpose is enough for an agent to use 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 clearly states the tool 'Show active processes and their current execution step,' which is a specific verb and resource. It distinguishes from siblings like history or summary tools, but does not explicitly name alternatives, so it stops short of the top tier.

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 provides a clear use case: 'Use this to find stuck or long-running processes.' This is explicit guidance on when to use the tool, but it does not mention when not to use it or name alternative tools, so it is a 4 rather than a 5.

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

gcfr_current_stream_statusA

Show streams that are actively running RIGHT NOW.

Use this first when investigating a running or stuck batch. Optionally filter to a specific stream by providing stream_key.

ParametersJSON Schema
NameRequiredDescriptionDefault
stream_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description itself carries the burden of behavioral context. It usefully communicates that only currently running streams are shown, that this is the right first check for stuck batches, and that filtering by stream_key is possible. It does not discuss side effects, but 'Show' plus the status-oriented name makes the read-only nature reasonably clear.

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 short sentences, all informative: the primary purpose, the recommended usage context, and the optional filter. There is no filler, and the key behavior is front-loaded.

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 status tool with one optional parameter and an output schema, the description covers the essential context: what it shows, when to use it, and how to narrow results. The only minor gap is not explicitly contrasting it with gcfr_stream_status, but the 'RIGHT NOW' language already makes that contrast implicit.

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 schema has one optional stream_key parameter with no description and 0% coverage. The description compensates by stating it is an optional filter for a specific stream, which is exactly the meaning an agent needs. It could add where to find stream_key, but for a single simple parameter this is sufficient.

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 ('Show') and a precisely scoped resource ('streams that are actively running RIGHT NOW'), which clearly distinguishes it from sibling tools like gcfr_stream_status or gcfr_current_process_status. The temporal emphasis leaves no ambiguity about what is being queried.

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?

It explicitly tells the agent to use this tool first when investigating a running or stuck batch, providing a clear entry point among many diagnostic siblings. It does not mention explicit alternatives or when not to use it, but the 'Use this first' framing is strong practical guidance.

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

gcfr_data_lineageA

Trace a target table back to its source objects.

Shows the full lineage chain with edge relationships. Returns: Src_Object_Name_FQ, Src_Kind, Edge_Relationship, Tgt_Object_Name_FQ, Tgt_Kind, Crt_Process_Name. Defaults to today when business_date is not supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_tableYes
business_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states what the tool returns (lineage chain with edge relationships and specific columns) and the default behavior for business_date, which is useful and non-obvious.

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 compact and well-structured: a one-line core purpose, a brief behavior statement, a return-field list, and a default-value note. Every sentence adds useful information without redundancy.

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

Completeness4/5

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

Given that an output schema exists, the return fields are already structurally defined, so the description need not over-explain them. It covers the main input and default behavior, though it could add a brief note on how the target_table should be specified.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining the business_date default ('Defaults to today'), but target_table is only described by its name and title, leaving its expected format (e.g., fully qualified or simple name) implicit.

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 and resource: 'Trace a target table back to its source objects.' It clearly distinguishes this tool from the many status/process/load sibling tools by focusing on lineage and edge relationships.

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 the tool is for tracing table lineage, and the default business_date behavior gives some usage context. However, it does not explicitly state when to prefer this over alternative tools or mention any exclusions or prerequisites beyond supplying a target table.

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

gcfr_dataset_registeredA

Show source data sets registered for processing and their file extract status.

Count_Source vs Count_Target reconciliation is here. date_from and date_to default to yesterday and today respectively. Optionally filter by ctl_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
ctl_idNo
date_toNo
date_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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 disclosure burden. It adds useful behavior: date_from/date_to default to yesterday/today and ctl_id is optional. However, it doesn't describe side effects, read-only guarantees, error behavior, or response characteristics beyond what the output schema may show.

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 three tight sentences with the main purpose front-loaded. Every sentence adds useful information, and there is no filler or repetition.

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

Completeness4/5

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

The output schema covers return values, so the description doesn't need to explain them. It covers purpose, reconciliation relevance, date defaults, and optional filtering, which is sufficient for a read-only query tool. The main gaps are parameter format details and explicit sibling differentiation, but they are not critical.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does explain defaults for date_from and date_to and notes ctl_id is optional, adding some meaning. But it doesn't clarify date formats, ctl_id semantics, or how each parameter affects the reconciliation output.

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 'Show' with a clear resource: 'source data sets registered for processing and their file extract status.' It also mentions Count_Source vs Count_Target reconciliation, which helps distinguish it from stream/process/load status siblings. It doesn't explicitly name an alternative tool, so it stops 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 Guidelines4/5

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

'Count_Source vs Count_Target reconciliation is here' gives clear context for when this tool is relevant. Date defaults and optional ctl_id filtering provide practical invocation guidance. It doesn't mention when not to use it or name alternatives, so it lacks explicit exclusions.

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

gcfr_data_trend_loadsA

Show daily load volume trends — total rows loaded per business date.

Use this to spot unusual volume changes. date_from and date_to default to yesterday and today respectively.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the default parameter behavior for date_from and date_to, and the verb 'Show' implies a read-only operation, but it does not specify date format, inclusivity, timezone handling, or how invalid inputs behave.

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 three tight sentences with no fluff: the first defines what it does, the second gives the use case, and the third explains parameter defaults. Every sentence 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?

For a read-only trend tool with two optional parameters and an output schema, the description covers the core behavior and default range. It could be more complete by explicitly distinguishing it from sibling tools like gcfr_data_trend_transforms or gcfr_load_stats, but it is otherwise sufficient.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for parameter meaning. It adds the default values for date_from and date_to, but it does not clarify expected date formats or whether the range is inclusive, leaving some interpretation to the agent.

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

Purpose4/5

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

The description states a specific verb and resource: 'Show daily load volume trends — total rows loaded per business date.' It is clear this tool aggregates load volumes by business date and can be distinguished from the sibling transform trend tool by the word 'loads,' though it does not explicitly name alternatives.

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 gives a clear use case: 'Use this to spot unusual volume changes.' It does not explicitly state when not to use this tool or name an alternative, but the stated purpose is concrete enough to guide selection.

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

gcfr_data_trend_transformsA

Show daily transform volume trends by business date.

date_from and date_to default to yesterday and today respectively.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It discloses that this is a read-style trend query and that omitted dates fall back to yesterday/today. However, it does not explain date format, inclusivity, limits, or whether 'volume' means row counts, transactions, or bytes.

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?

Two sentences with no filler. The purpose is front-loaded, and the second sentence provides necessary default-parameter behavior that the schema does not convey.

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 two optional parameters and an output schema, the description covers the core purpose and default behavior. It is incomplete in clarifying the date string format and the exact meaning of 'transform volume,' and it does not help disambiguate from the closely related transform stats siblings.

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

Parameters3/5

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

Schema coverage is 0%, and the schema only shows nullable string parameters with null defaults. The description adds meaningful semantic information by stating that date_from and date_to default to yesterday and today respectively, but it does not specify the accepted date format or behavior when only one date is supplied.

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

Purpose4/5

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

The description states a specific action ('Show') and resource ('daily transform volume trends') with a clear dimension ('by business date'). It is distinguishable from siblings like gcfr_load_status and gcfr_transform_stats, though it does not explicitly differentiate itself by name.

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 when to use the tool: when daily transform volume trends are needed. It provides useful default-date context, but it does not explicitly say when not to use it or mention an alternative sibling tool.

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

gcfr_error_logA

Show raw error log entries for root cause investigation.

Includes the calling API and step where the error occurred. Sql_Text (CLOB) is excluded from output — ask separately if needed. date_from and date_to default to yesterday and today respectively. Optionally filter by process_name.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo
process_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently discloses that Sql_Text is excluded, what fields are included, and the default date range. It lacks details on pagination, ordering, or potential size of results, but for a read-only log retrieval tool the disclosed behavior 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 four sentences with no filler. The main action is front-loaded, and each subsequent sentence adds a distinct piece of valuable information: included fields, excluded field, defaults, and filter option.

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 three optional parameters and an output schema, the description covers the core purpose, key fields, a notable exclusion, and parameter behavior. It does not mention date formats or output ordering, but these are minor gaps given the output schema exists and the tool is straightforward.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds useful meaning: date_from/date_to default to yesterday/today and process_name is an optional filter. However, it does not specify the expected date format, whether the range is inclusive, or how process_name matching works.

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 function: 'Show raw error log entries for root cause investigation.' This identifies a specific verb and resource. However, it does not explicitly differentiate this tool from siblings like gcfr_execution_log, which could plausibly overlap in purpose.

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 'for root cause investigation' provides a clear usage context. It also explains defaults and the optional filter (process_name). It does not, however, provide explicit exclusions or when to prefer a sibling tool over this one.

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

gcfr_execution_logA

Show step-level execution trace for detailed process debugging.

Only populated when GCFR is running at debug level 2 or higher. Sql_Text (CLOB) is excluded from output — ask separately if needed. date_from and date_to default to yesterday and today respectively. Optionally filter by process_name and/or stream_key.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo
stream_keyNo
process_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It discloses a critical data-population condition (debug level 2+), a field exclusion (Sql_Text CLOB), and default date behavior. This is strong disclosure, though it does not explicitly state read-only behavior or potential output volume.

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 brief and front-loaded, with the main purpose in the first sentence and each subsequent sentence adding a distinct useful constraint or default. There is no filler, repetition, or schema duplication.

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 moderate complexity, the description covers purpose, usage conditions, key behavioral caveats, defaults, and optional filters. An output schema exists, so return values do not need to be described. Missing details like date format and exact filter behavior are minor and can be inferred from parameter names.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains date defaults and that process_name and stream_key are optional filters, adding meaning beyond the bare property names. However, it does not specify date formats or filtering semantics such as exact match versus wildcard, leaving some gaps.

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 and resource: 'Show step-level execution trace for detailed process debugging.' This immediately distinguishes the tool from sibling status/history/report tools by emphasizing granular execution-level detail. No ambiguity remains about what the tool produces.

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 gives clear conditions for when the tool is useful: 'detailed process debugging' and only when GCFR runs at debug level 2 or higher. It does not explicitly name sibling alternatives or say when not to use it, but the stated prerequisites and purpose provide adequate usage guidance.

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

gcfr_failed_processesA

Show failed process instances with full error details.

This is the first tool to use when investigating a batch failure. date_from and date_to default to yesterday and today respectively. Optionally filter by stream_key and/or process_name.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo
stream_keyNo
process_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations present, the description carries the full transparency burden. It conveys a read-only operation ('Show'), discloses default date behavior, and explains optional filtering. It does not cover every edge case such as date format or result limits, but the core behavioral traits are clearly described.

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 four short sentences with no filler. The primary purpose is front-loaded, followed by usage priority, defaults, and filter options—each sentence 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?

For a simple read-only tool with four optional parameters and an output schema, the description covers purpose, invocation priority, defaults, and filtering. The main omissions are minor—exact date format and timezone handling—but they do not meaningfully block an agent from selecting and calling this tool.

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

Parameters4/5

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

Schema description coverage is 0%, and the schema only provides names and types. The description compensates by naming all four parameters, stating the defaults for date_from and date_to, and clarifying that stream_key and process_name are optional filters. It could add date-format details, but the essential semantics are present.

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 and resource: 'Show failed process instances with full error details.' It also frames this tool as 'the first tool to use when investigating a batch failure,' which clearly distinguishes its role from sibling status, history, and stats tools even without naming them.

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 a concrete use case: investigating a batch failure, and positions this tool as the first one to call. It does not enumerate when not to use it or name alternatives, but the priority guidance is strong and actionable.

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

gcfr_health_checkA

Verify the MCP server can reach both GCFR view databases.

Run this first if tools are returning errors. Returns status, database names, stream_count, and response_time_ms.

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 of behavioral disclosure. It explains what action is performed, the scope (both GCFR view databases), and the return fields (status, database names, stream_count, response_time_ms). It does not discuss edge cases such as failure behavior, but for a zero-parameter health check this is largely sufficient.

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

Conciseness5/5

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

The description is compact and front-loaded: the main purpose appears in the first sentence, followed by a practical usage hint and returned fields. Every sentence adds value and there is no repetition of schema or annotation content.

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

Completeness5/5

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

Given zero parameters, a clear one-sentence purpose, a usage trigger, and an output schema, the description covers everything an agent needs to select and invoke this tool. It is complete and appropriately scoped for a health-check utility.

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 the baseline is 4. The description correctly focuses on behavior and return fields rather than parameter documentation, since there are no parameters to explain.

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 and resource: 'Verify the MCP server can reach both GCFR view databases.' It clearly identifies the tool as a health check and distinguishes it from sibling status/process tools by focusing on server-database connectivity rather than stream or process state.

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 gives explicit situational guidance: 'Run this first if tools are returning errors.' This tells the agent when to invoke it, though it does not explicitly name alternative tools or state when not to use it. The context is clear enough for routing.

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

gcfr_load_statsA

Show staging load statistics — row counts, rejections, ET errors, UV violations.

Key columns: Ctl_Id, File_Id, Business_Date, Process_Name, Rows_Input, Rows_Considered, Rows_Not_Considered, Rows_Rejected, Rows_Inserted, Rows_ET, Rows_UV, Start_Ts, End_Ts, Load_Status. date_from and date_to default to yesterday and today respectively. Optionally filter by ctl_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
ctl_idNo
date_toNo
date_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral burden. It does disclose the exact columns returned, the default date range, and the optional ctl_id filter. It does not clarify potential limits, date format expectations, or how ET/UV terms are defined, leaving some behavioral ambiguity.

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 front-loaded with the purpose, followed by a compact list of relevant columns, then parameter default behavior and the optional filter. Every sentence contributes useful information without fluff or redundancy.

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

Completeness4/5

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

Given the presence of an output schema and only three optional parameters, the description is largely complete, covering purpose, metrics, defaults, and filtering. The main gap is the missing date format specification for date_from and date_to, which would matter for correct invocation.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate for the parameter documentation, and it does. It explains that date_from and date_to default to yesterday and today respectively, and that ctl_id is an optional filter, adding meaning beyond the bare schema property names.

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

Purpose4/5

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

The description states a specific verb and resource ('Show staging load statistics') and enumerates the metrics included, so an agent can understand the core purpose. It does not explicitly differentiate itself from similar siblings like gcfr_load_status or gcfr_data_trend_loads, though the stated column set makes the intent reasonably distinct.

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 prefer this tool over the many similar siblings such as gcfr_load_status, gcfr_data_trend_loads, or gcfr_process_history. It mentions optional filters and defaults, but those are operational details rather than usage-selection guidance.

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

gcfr_load_statusA

Show which staging tables loaded successfully for a business date, with row counts.

Use this to verify all expected feeds have arrived. Defaults to today when business_date is not supplied. Optionally filter by ctl_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
ctl_idNo
business_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

There are no annotations, so the description must carry behavioral disclosure. It does so by noting the default business_date behavior, optional ctl_id filter, and the read-only 'Show/verify' nature, though it does not explicitly say 'read-only'.

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 short sentences each earn their place: the first states the core purpose, the second gives the usage scenario, and the third captures defaults and filters. It is front-loaded and free of filler.

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 low-complexity read tool with an output schema and optional parameters, the description is nearly sufficient: it covers purpose, use case, defaulting, and filtering. Only a brief mention of date format or control-ID meaning would make it fully complete.

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?

With 0% schema coverage, the description compensates by explaining business_date's default-to-today behavior and ctl_id's optional filtering role. It does not specify date formats or ctl_id value domains, but both parameters are functionally clear.

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 and resource: 'Show which staging tables loaded successfully for a business date, with row counts.' This clearly differentiates it from sibling status/stat tools about streams or processes.

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?

It explicitly gives a use case: 'Use this to verify all expected feeds have arrived.' It does not list exclusions or name alternative tools, so it stops short of full routing guidance.

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

gcfr_process_historyB

Show process execution history with timing and outcomes for a date range.

Use this to understand how long processes took and whether they succeeded. date_from and date_to default to yesterday and today respectively when not supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo
process_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that it shows history (implying read-only) and includes defaults for date parameters. However, it does not state whether the operation is read-only explicitly, does not describe the response format (though output schema exists), and does not mention any potential side effects or pagination. This is a moderate disclosure given the lack of annotations.

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, front-loaded sentences with no filler. The primary purpose is stated first, followed by a use case and parameter defaults. Every word earns its place, 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?

Given the tool has an output schema (so return format is covered elsewhere) and no annotations, the description provides the core purpose and defaults. However, it omits the process_name parameter entirely, which is a significant gap for a 3-parameter tool. The description also does not mention any prerequisites or limitations, though the simple nature of the query reduces the need. Overall, it's adequate but incomplete.

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 explain all parameters. It explains date_from and date_to defaults, indicating they define the range, but it does not mention process_name at all. The description fails to describe what process_name does or its expected format. Since one of three parameters is completely undocumented and the others are only partially explained, this is insufficient.

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 shows process execution history with timing and outcomes for a date range. It uses a specific verb ('show') and resource ('process execution history'), and mentions the key outputs (timing, outcomes). However, it does not explicitly differentiate from siblings like gcfr_execution_log or gcfr_process_status_summary, so it's not a perfect 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 gives a clear use case: 'Use this to understand how long processes took and whether they succeeded.' This implies when to use it, but it does not mention alternatives or when not to use it. For a tool with many related siblings, explicit guidance on selection would improve it, so it's adequate but not strong.

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

gcfr_process_status_summaryA

Show all processes for a business date — completed vs not completed.

If a process did not complete, the error message is included. Use this for a quick end-of-day sign-off check. Defaults to today when business_date is not supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
business_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool includes error messages for non-completed processes and that it defaults to today when business_date is not supplied. These are useful behavioral details beyond the schema. It does not mention pagination or output format, but the output schema exists and the description covers the key 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 four short sentences, each earning its place: what it shows, what error info is included, when to use it, and the default behavior. It is front-loaded with the core purpose and has no filler.

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 read-only summary tool with one optional parameter and an output schema, the description is nearly complete. It covers the purpose, the error-message inclusion, the default date behavior, and the intended use case. It could mention that it is read-only or that it aggregates all processes, but the output schema and sibling context fill most 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 description coverage is 0%, so the description must compensate. It explains the business_date parameter's default behavior ('Defaults to today when business_date is not supplied'), which adds meaning beyond the schema's bare 'default: null'. It does not detail the date format, but the parameter is optional and the default behavior is the most important semantic.

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 ('Show all processes for a business date') and a clear resource/scope ('completed vs not completed'), and it distinguishes itself from siblings by framing this as a quick end-of-day sign-off check. It is not a tautology and clearly differentiates from tools like gcfr_current_process_status or gcfr_failed_processes.

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 says 'Use this for a quick end-of-day sign-off check,' which gives clear context for when to use it. It does not explicitly name alternatives or exclusions, but the sibling list and the phrase 'quick end-of-day sign-off' imply the intended use case well enough.

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

gcfr_sla_process_reportB

Compare expected vs actual process start time, end time, and duration.

Shows whether SLAs were met. SLA_Run_Duration is returned as a formatted string (INTERVAL DAY TO SECOND). date_from and date_to default to yesterday and today respectively.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/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. It discloses that SLA_Run_Duration is returned as a formatted INTERVAL string and that date parameters have defaults. However, it does not mention whether the operation is read-only, potential errors, or permissions. For a report tool, the output-format note adds value, but the lack of explicit safety or error behavior prevents a higher score.

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 three sentences, each serving a purpose: the primary function, a key output detail, and parameter defaults. It is front-loaded with the main purpose and avoids redundancy. It could be slightly more compact but is well-structured for a small tool.

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 main functionality, a specific output format nuance, and default parameter behavior. It does not explain how to interpret the comparison results or mention any limitations (e.g., process-only scope). With an output schema present, return values are partially covered, but the lack of usage context and edge cases leaves some gaps for an 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 description coverage is 0%, so the description must compensate. It provides useful default behavior for date_from and date_to (yesterday and today), which is not in the schema. However, it does not specify the expected date format or how to pass custom values, leaving the agent to infer from the string type. This partial compensation justifies a middle score.

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 function: comparing expected vs actual process start/end times and duration to show SLA compliance. It identifies a specific resource (process SLA) and a clear outcome, but does not explicitly differentiate from the sibling gcfr_sla_stream_report, which is the stream counterpart.

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 gives no guidance on when to use this tool versus alternatives like gcfr_process_history or gcfr_sla_stream_report. It only mentions the default date range, implying it is a reporting tool, but it does not state explicit conditions for selection or exclusions.

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

gcfr_sla_stream_reportB

Compare expected vs actual stream duration SLAs.

SLA duration fields are returned as formatted strings. date_from and date_to default to yesterday and today respectively.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo

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?

There are no annotations, so the description carries the burden. It usefully discloses that SLA duration fields are formatted strings and that date parameters default to yesterday/today, but it does not state whether the tool is read-only or how null/omitted parameters behave beyond defaults.

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 compact sentences with the main purpose first, followed by two useful behavioral details. There is no filler or redundant restatement of the schema.

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 two-parameter report with an output schema, the description covers the core purpose, default behavior, and return formatting. The main gap is the missing date format specification, but overall it is adequately 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 description coverage is 0%, so the description must compensate. It adds the key fact that date_from and date_to default to yesterday and today, respectively. However, it does not specify the expected date string format or inclusive/exclusive boundaries.

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

Purpose4/5

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

The description states a specific verb and resource: 'Compare expected vs actual stream duration SLAs.' This clearly distinguishes it from the process-level SLA sibling tool, though it does not explicitly name alternatives.

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 gcfr_sla_process_report or the other stream status tools. Only default date behavior is mentioned, with no explicit usage context or exclusions.

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

gcfr_stream_business_dateA

Show the current, previous, and next business date for a stream.

Use this to understand where a stream's processing date is set and whether it is in sync with the expected calendar date.

ParametersJSON Schema
NameRequiredDescriptionDefault
stream_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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; 'Show' indicates a read-only retrieval and the listed outputs are transparent. It does not discuss side effects, error cases, or how business dates are determined, but the output schema covers the return structure.

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 filler, and the core purpose is front-loaded before the usage guidance. Every sentence adds 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?

The tool is simple with one required parameter and an output schema, so the description is mostly adequate. However, the missing explanation of stream_key and the lack of any safety annotation leave a small but real gap for an agent selecting and calling the tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate for the sole 'stream_key' parameter. It only refers to 'a stream' and does not explain what a stream key is, where to find it, or what format/value it expects.

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 ('Show') and a precise resource: the current, previous, and next business date for a stream. This clearly distinguishes it from sibling status/history tools by focusing on business-date values rather than stream health or process status.

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 second sentence explicitly states the intended use: understanding where a stream's processing date is set and whether it is in sync with the expected calendar date. It gives clear when-to-use context, though it does not name alternative tools or exclusions.

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

gcfr_stream_statusA

Show stream execution history and completion state for a date range.

Use this to find out whether a stream ran successfully, is still running, or failed for a given business date. date_from and date_to default to yesterday and today respectively when not supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNo
date_fromNo
stream_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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 of behavioral disclosure. It does reveal that date_from and date_to default to yesterday and today, which is a useful behavioral trait. However, it does not explicitly state that this is a read-only operation, mention any permissions, or describe side effects. For a status query the implication is read-only, but it is not stated, leaving a transparency gap.

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

Conciseness5/5

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

The description is three sentences, with the core purpose in the first sentence and the default behavior in the second. There is no fluff, and the most important information is front-loaded. Every sentence contributes meaningful guidance.

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 an output schema present, the description covers the core purpose and default behavior adequately. However, it does not explain the stream_key parameter, which is a required part of the tool's semantics. It also does not mention any limitations or edge cases, though the output schema may handle return format. The missing parameter explanation makes it not fully complete.

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 description coverage is 0%, so the description must fully explain each parameter. It covers date_from and date_to by stating their defaults, but it completely omits stream_key. An agent using the tool has no guidance on what stream_key refers to or how it filters results. This is a significant omission given zero schema-level 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 opens with 'Show stream execution history and completion state for a date range,' which is a specific verb-resource-scope statement. It clearly differentiates from siblings like gcfr_current_stream_status by emphasizing 'history' and 'date range,' so an agent can immediately tell this tool is for historical queries rather than current state.

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 second sentence explains the intended use case: 'find out whether a stream ran successfully, is still running, or failed for a given business date.' This gives clear context for when to invoke the tool, though it does not explicitly mention alternatives or when not to use it. The existence of a sibling for current status implies the boundary, but the description itself doesn't state exclusions.

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

gcfr_top_slowest_processesA

Show the N slowest processes by elapsed duration for a business date.

Use this to identify performance bottlenecks. top_n must be between 1 and 50 (default 10). Defaults to today when business_date is not supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNo
business_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful details (top_n must be 1–50, defaults to 10; business_date defaults to today), but it does not explicitly state that the operation is read-only or describe any potential side effects, error cases, or result limits beyond the top_n parameter. It adds some context but is 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 three short paragraphs with no filler. The core purpose is front-loaded, followed by usage guidance and then parameter constraints/defaults. Every sentence earns its place, 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.

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 and the presence of an output schema, the description covers the essential aspects: what it does, when to use it, and parameter constraints. The only notable omission is a mention of the expected date format for business_date, which is a minor gap. Overall it is sufficient for an agent to invoke 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?

Schema description coverage is 0%, so the description must compensate. It does: it explains the top_n range and default, and the business_date default. It does not specify the expected date format, but the defaults and constraints add meaningful meaning beyond the schema's bare type 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 states a clear verb ('Show') and a specific resource ('slowest processes by elapsed duration') and qualifies it with a business date. The word 'processes' differentiates it from the sibling gcfr_top_slowest_streams, making 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 Guidelines4/5

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

The description gives a clear usage context: 'Use this to identify performance bottlenecks.' However, it does not explicitly mention when not to use it or point to an alternative tool (like the streams variant). This is a minor gap, so it earns a 4.

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

gcfr_top_slowest_streamsB

Show the N slowest streams by elapsed duration.

top_n must be between 1 and 50 (default 10). Defaults to today when business_date is not supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNo
business_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

Annotations are absent, so the description must disclose behavior. It mentions top_n bounds and business_date default, but does not state read-only nature, side effects, ordering direction beyond 'slowest', or any permission requirements. This is a minimal disclosure for a query tool.

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

Conciseness5/5

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

Two sentences, front-loaded with the core purpose, no redundancy. All sentences add value, including parameter constraints and default behavior. Excellent conciseness.

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?

Both parameters are addressed with bounds and defaults. Output schema exists, so return details are not needed in the description. The only notable gap is the unspecified business_date format/timezone for 'today', which is minor for a simple query tool.

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

Parameters3/5

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

Schema has 0% description coverage, so description must compensate. It adds top_n range (1-50) and default 10, and business_date defaulting to 'today'. However, it omits date format, timezone, and the exact meaning of 'elapsed duration' relative to parameters. Partial coverage only.

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?

Clear verb 'Show' with specific resource 'streams' and qualifier 'slowest by elapsed duration'. Immediately distinguishes from sibling gcfr_top_slowest_processes by targeting streams, not processes.

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 the many sibling tools (e.g., process versions, status tools). No mention of exclusions or scenarios where the stream-specific tool is preferred over others.

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

gcfr_transform_statsA

Show transformation statistics — rows inserted, updated, and deleted per process.

Use this to verify data movement through the warehouse. date_from and date_to default to yesterday and today respectively. Optionally filter by ctl_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
ctl_idNo
date_toNo
date_fromNo

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?

Since no annotations are provided, the description carries the burden of explaining behavior. It discloses default date behavior, optional ctl_id filtering, and the kind of statistics returned. It also implicitly indicates a read-only verification operation, though it does not discuss response shape or pagination.

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 compact and front-loaded: purpose, use case, defaults, and optional filtering each get one clear sentence. There is no filler and no repetition.

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

Completeness5/5

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

Given the tool has only three optional parameters and an output schema, the description is complete enough for correct invocation. It explains what the result contains, the default date range, the optional filter, and the intended verification use case.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains that date_from and date_to default to yesterday and today, and that ctl_id is an optional filter. This gives meaningful semantics for all three parameters, though it does not specify date formats or value constraints.

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

Purpose5/5

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

The description states a specific verb and resource: 'Show transformation statistics' and then details the exact output: 'rows inserted, updated, and deleted per process.' This clearly separates it from sibling tools like gcfr_load_stats, gcfr_stream_status, and gcfr_process_history.

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?

It provides an explicit use case: 'Use this to verify data movement through the warehouse.' It does not mention when not to use it or name alternative tools, but the context given is clear enough for an agent to understand the intended scenario.

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. 21 tool updatesv0.1.0
    • First observedgcfr_current_process_status
    • First observedgcfr_current_stream_status
    • First observedgcfr_data_lineage
    • First observedgcfr_data_trend_loads
    • First observedgcfr_data_trend_transforms
    • First observedgcfr_dataset_registered
    • First observedgcfr_error_log
    • First observedgcfr_execution_log
    • First observedgcfr_failed_processes
    • First observedgcfr_health_check
    • First observedgcfr_load_stats
    • First observedgcfr_load_status
    • First observedgcfr_process_history
    • First observedgcfr_process_status_summary
    • First observedgcfr_sla_process_report
    • First observedgcfr_sla_stream_report
    • First observedgcfr_stream_business_date
    • First observedgcfr_stream_status
    • First observedgcfr_top_slowest_processes
    • First observedgcfr_top_slowest_streams
    • First observedgcfr_transform_stats

TDQS

A3.7/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target a distinct monitoring concern—streams vs processes, current vs historical, load vs transform. A few pairs like load_stats/load_status and process_history/process_status_summary have overlapping row/status information, but descriptions provide enough differentiation.

Naming Consistency4/5

All tools share the gcfr_ prefix and use snake_case with descriptive subject+report type names (e.g., stream_status, process_history, sla_process_report). Minor structural deviations such as dataset_registered and health_check break the pattern slightly but remain predictable.

Tool Count3/5

21 tools is in the heavy range and each one covers a specific report or query, which is justified by the broad monitoring domain. Still, the count is large enough that an agent may need to scan many similar names.

Completeness5/5

The tool surface covers the full operational monitoring lifecycle: stream/process status and history, load and transform statistics, failure/error investigation, SLA reporting, performance trends, data lineage, and connectivity health. No obvious dead ends or missing monitoring scenarios are apparent for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP server that connects Redash to Claude AI, enabling natural language data queries, dashboard management, and SQL execution.
    24
    277 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A database-agnostic MCP server that enables natural language queries to your database through Claude or Copilot, automatically writing and executing SQL.
    8
    8 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language interaction with Teradata databases through Claude, allowing data exploration, profiling, and in-database KMeans clustering via MCP.
    -