Skip to main content
Glama

CockroachDB MCP Server

License: MIT Python Version MCP Compatible Trust Score

Overview

The CockroachDB MCP Server is a natural language interface designed for LLMs and agentic applications to manage, monitor, and query data in CockroachDB. It integrates seamlessly with MCP (Model Content Protocol) clients, such as Claude Desktop or Cursor, enabling AI-driven workflows to interact directly with your database.

Related MCP server: YugabyteDB MCP Server

Table of Contents

Features

  • Natural-Language Queries: AI agents can query and transact via natural language.

  • Cluster Monitoring: Cluster status, node health, replication, slow queries, contention, index recommendations.

  • Database Operations: List, create, drop, and switch databases.

  • Table Management: Create, drop, alter (add/drop/rename column), truncate, rename, describe; bulk-import; indexes, views, schemas.

  • Query Engine: Parameterized SQL with json/csv/table output, multi-statement transactions, explain, history.

  • User & Privilege Management: Provision SQL users and roles, grant/revoke privileges. Lets you run the agent under a scoped non-root user.

  • Vector Search: Similarity search with cosine/L2/inner-product metrics (auto-detected from index opclass), C-SPANN ANN index management (v25.2+).

  • Job Management: Observe and control async jobs (BACKUP, RESTORE, IMPORT, CHANGEFEED, SCHEMA CHANGE).

  • Backup & Restore: Full / database / table backup and restore against s3, gs, azure, nodelocal, userfile.

  • Statistics: Create and show optimizer statistics.

  • Multi-Region: Regions, survival goals, locality (REGIONAL_BY_ROW etc.), zone configuration.

  • Changefeeds: CDC pipelines to Kafka / webhook / cloud-storage with sink-scheme validation.

  • Cluster Admin: Cluster settings, decommission/drain (gated).

  • Diagnostics: Tracing spans, statement-diagnostics bundles.

  • Safety First: Strict identifier validation, parameterized values, --read-only mode, explicit confirm=True for destructive ops, redacted DSN responses.

  • Seamless MCP Integration: Works with any MCP client (Claude Desktop, Cursor, VS Code Copilot, OpenAI Agents SDK, etc.).

  • Multiple Transports: stdio (default) and streamable HTTP.

Tools

The CockroachDB MCP Server exposes CockroachDB as a set of MCP tools. Requests flow from any MCP client through a transport, into the safety layer, then to one of the thirteen tool categories, and finally to CockroachDB via an asyncpg connection pool.

flowchart LR
    subgraph Clients["MCP Clients"]
        direction TB
        C1["Claude Desktop"]
        C2["Cursor"]
        C3["VS Code Copilot"]
        C4["OpenAI Agents SDK"]
        C5["Augment"]
    end

    subgraph Transport["Transport"]
        direction TB
        T1["stdio"]
        T2["streamable HTTP"]
    end

    subgraph Server["CockroachDB MCP Server (FastMCP)"]
        direction TB

        subgraph Safety["Safety Layer"]
            direction TB
            S1["Identifier validation<br/>(strict regex)"]
            S2["Parameterized values<br/>($1, $2, ...)"]
            S3["--read-only gate"]
            S4["--allow-destructive<br/>+ confirm=True"]
            S5["DSN redaction"]
        end

        subgraph Tools["Tool Categories (13)"]
            direction TB

            subgraph Obs["Observe & Diagnose"]
                O1["Cluster Monitoring"]
                O2["Diagnostics"]
                O3["Statistics"]
            end

            subgraph Data["Data & Schema"]
                D1["Database Operations"]
                D2["Table Management"]
                D3["Query Engine"]
                D4["Vector Search (C-SPANN)"]
            end

            subgraph Ops["Data Movement"]
                P1["Job Management"]
                P2["Backup & Restore"]
                P3["Changefeeds (CDC)"]
            end

            subgraph Adm["Admin & Topology"]
                A1["User & Privilege Management"]
                A2["Multi-Region"]
                A3["Cluster Admin"]
            end
        end

        Pool["asyncpg connection pool"]
    end

    DB[("CockroachDB<br/>single- or multi-region cluster")]

    Clients --> Transport
    Transport --> Safety
    Safety --> Tools
    Tools --> Pool
    Pool --> DB

The tools are organized into thirteen categories, grouped above by concern. Every write-shaped tool is gated by --read-only. Every destructive tool also requires --allow-destructive plus a per-call confirm=True parameter; see the Safety Model section.

Cluster Monitoring

Purpose: Provides tools for monitoring and managing CockroachDB clusters.

Summary:

  • Get cluster health and node status.

  • Show currently running queries.

  • Analyze query performance statistics.

  • Retrieve replication and distribution status for tables or the whole database.

  • Get query execution insights with optional keyword filtering.

  • Find slow queries from statement statistics with optional keyword filtering.

  • Get transaction execution insights with optional keyword filtering.

  • View contention events with optional table filtering.

  • Get index recommendations from query insights.

Database Operations

Purpose: Handles database-level operations and connection management.

Summary:

  • Connect to a CockroachDB database.

  • List, create, drop, and switch databases.

  • Get connection status and active sessions.

  • Retrieve database settings.

Table Management

Purpose: Provides tools for managing tables, indexes, views, schemas, and relationships in CockroachDB.

Summary:

  • Create, drop, describe, rename, and truncate tables (destructive ops gated).

  • alter_table_add_column, alter_table_drop_column, alter_table_rename_column.

  • Bulk import data into tables (CSV / Avro from s3/gs/azure/http(s)).

  • Manage indexes (create/drop).

  • Manage views (create/drop, list).

  • Manage schemas (list_schemas, create_schema, drop_schema).

  • List tables and table relationships; analyze schema structure and metadata.

Query Engine

Purpose: Executes and manages SQL queries and transactions.

Summary:

  • Execute SQL queries with formatting options (JSON, CSV, table).

  • Run multi-statement transactions.

  • Explain query plans for optimization.

  • Track and retrieve query history.

User & Privilege Management

Purpose: Manage SQL users, roles, and privileges. Use this from an administrative agent to provision the agent's own scoped (non-root) user.

Summary:

  • list_users, create_user, drop_user, alter_user_password.

  • create_role, drop_role, grant_role, revoke_role.

  • show_grants, grant_privileges, revoke_privileges.

Privileges are validated against an allowlist (SELECT, INSERT, UPDATE, DELETE, ALL, BACKUP, RESTORE, MODIFYCLUSTERSETTING, ...). Identifiers go through the same strict regex as everywhere else.

Purpose: Search VECTOR columns with CockroachDB's similarity operators (v25.2+) and manage C-SPANN ANN indexes.

Summary:

  • vector_similarity_search with metric of cosine (default), l2, ip, or auto (matches the existing index opclass). Returns distance and a derived similarity field.

  • create_cspann_index with metric → opclass mapping (vector_cosine_ops / vector_l2_ops / vector_ip_ops).

  • drop_cspann_index (destructive).

The query vector is always passed as a $1::VECTOR parameter; identifier and optional where clause values are validated. For normalized embeddings (e.g. Takara DS1, OpenAI text-embedding-3) all three metrics rank identically; the default cosine is the safest because it ignores magnitude.

Job Management

Purpose: Observe and control long-running CockroachDB jobs (BACKUP, RESTORE, IMPORT, SCHEMA CHANGE, CHANGEFEED).

Summary:

  • list_jobs (filter by status and type), get_job_status.

  • pause_job, resume_job, cancel_job (destructive).

Backup & Restore

Purpose: Take and restore cluster, database, and table backups.

Summary:

  • create_backup to s3/gs/azure/nodelocal/userfile destinations.

  • list_backups to enumerate backups at a storage URI.

  • restore_backup (destructive) with optional new_db_name.

  • list_scheduled_backups.

URI schemes are validated against an allowlist; identifier targets are identifier-validated.

Statistics

Purpose: Compute and inspect the table statistics the cost-based optimizer relies on.

Summary:

  • create_statistics (CREATE STATISTICS).

  • show_statistics (SHOW STATISTICS FOR TABLE).

Multi-Region

Purpose: Configure multi-region behaviour: regions, survival goals, table localities, zone configurations.

Summary:

  • show_regions, show_database_regions.

  • add_database_region, drop_database_region (destructive).

  • set_survival_goal (ZONE or REGION).

  • set_table_locality (REGIONAL, REGIONAL_BY_ROW, REGIONAL_BY_TABLE, GLOBAL).

  • show_zone_config for DATABASE/TABLE/INDEX.

Changefeeds

Purpose: Set up and operate CDC pipelines to Kafka, webhooks, or cloud storage.

Summary:

  • create_changefeed with sink-scheme validation (kafka, webhook-http(s), s3, gs, azure-blob, external, null), JSON or Avro format, choice of envelope.

  • list_changefeeds, pause_changefeed, resume_changefeed.

  • cancel_changefeed (destructive).

Cluster Admin

Purpose: Cluster-wide administration: cluster settings and node lifecycle.

Summary:

  • show_cluster_setting, set_cluster_setting, reset_cluster_setting (destructive). Setting names are validated against a strict regex.

  • decommission_node, drain_node. Note that SQL-initiated decommission only marks intent; for the full lifecycle use the cockroach node CLI.

Diagnostics

Purpose: Inspect tracing spans and request statement-diagnostics bundles.

Summary:

  • get_recent_traces from crdb_internal.cluster_inflight_traces.

  • list_statement_diagnostics_requests.

  • request_statement_diagnostics for a statement fingerprint.

Installation

The CockroachDB MCP Server supports the stdio transport and the streamable-http transport.

Quick Start with uvx

The easiest way to use the CockroachDB MCP Server is with uvx, which allows you to run it directly from GitHub (from a branch, or use a tagged release). It is recommended to use a tagged release. The main branch is under active development and may contain breaking changes. As an example, you can execute the following command to run the 0.1.0 release:

uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git@0.1.0 cockroachdb-mcp-server --url postgresql://localhost:26257/defaultdb

Check the release notes for the latest version in the Releases section. Additional examples are provided below.

# Run with CockroachDB URI
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server --url postgresql://localhost:26257/defaultdb

# Run with individual parameters
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server --host localhost --port 26257 --database defaultdb --user root --password mypassword

# See all options
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server --help

# Run with streamable HTTP transport
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server \
  --url postgresql://localhost:26257/defaultdb \
  --transport http \
  --http-host 0.0.0.0 \
  --http-port 8000 \
  --http-path /mcp

Development Installation

For development or if you prefer to clone the repository:

# Clone the repository
git clone https://github.com/amineelkouhen/mcp-cockroachdb.git
cd mcp-cockroachdb

# Install dependencies using uv
uv venv
source .venv/bin/activate
uv sync

# Run with CLI interface
uv run cockroachdb-mcp-server --help

# Or run the main file directly (uses environment variables)
uv run src/main.py

Once you cloned the repository, installed the dependencies and verified you can run the server, you can configure Claude Desktop or any other MCP Client to use this MCP Server running the main file directly (it uses environment variables). This is usually preferred for development. The following example is for Claude Desktop, but the same applies to any other MCP Client.

  1. Specify your CockroachDB credentials and TLS configuration

  2. Retrieve your uv command full path (e.g. which uv)

  3. Edit the claude_desktop_config.json configuration file    - on a MacOS, at ~/Library/Application Support/Claude/

{
    "mcpServers": {
        "cockroach": {
            "command": "<full_path_uv_command>",
            "args": [
                "--directory",
                "<your_mcp_server_directory>",
                "run",
                "src/main.py"
            ],
            "env": {
                "CRDB_HOST": "<your_cockroachdb_hostname>",
                "CRDB_PORT": "<your_cockroachdb_port>",
                "CRDB_DATABASE": "<your_cockroach_database>",
                "CRDB_USERNAME": "<your_cockroachdb_user>",
                "CRDB_PWD": "<your_cockroachdb_password>",
                "CRDB_SSL_MODE": "disable|allow|prefer|require|verify-ca|verify-full",
                "CRDB_SSL_CA_PATH": "<your_cockroachdb_ca_path>",
                "CRDB_SSL_KEYFILE": "<your_cockroachdb_keyfile_path>",
                "CRDB_SSL_CERTFILE": "<your_cockroachdb_certificate_path>",
            }
        }
    }
}

You can troubleshoot problems by tailing the log file.

tail -f ~/Library/Logs/Claude/mcp-server-cockroach.log

With Docker Compose (Local Development)

For local development and testing, use the provided docker-compose.yaml to spin up both CockroachDB and the MCP server:

# Start CockroachDB and MCP server
docker compose up -d

# The MCP server is available at http://localhost:8000/mcp/
# CockroachDB UI is available at http://localhost:8080

# View logs
docker compose logs -f mcp-server

# Stop and clean up
docker compose down -v

With Docker

You can use a dockerized deployment of this server. You can either build your image or use the official CockroachDB MCP Docker image.

If you'd like to build your image, the CockroachDB MCP Server provides a Dockerfile. Build this server's image with:

docker build -t mcp-cockroachdb .

Finally, configure the client to create the container at start-up. An example for Claude Desktop is provided below. Edit the claude_desktop_config.json and add:

{
  "mcpServers": {
    "cockroach": {
      "command": "docker",
      "args": ["run",
                "--rm",
                "--name",
                "cockroachdb-mcp-server",
                "-e", "CRDB_HOST=<cockroachdb_host>",
                "-e", "CRDB_PORT=<cockroachdb_port>",
                "-e", "CRDB_DATABASE=<cockroachdb_database>",
                "-e", "CRDB_USERNAME=<cockroachdb_user>",
                "mcp-cockroachdb"]
    }
  }
}

To use the CockroachDB MCP Docker image, just replace your image name (mcp-cockroachdb in the example above) with mcp/cockroachdb.

As an MCPB Bundle (Smithery / Claude Desktop)

The repository ships an MCPB manifest under mcpb/manifest.json. MCPB (.mcpb) is a single-file archive that clients like Claude Desktop and catalogs like Smithery can install as a local stdio server, prompting the user for connection details via a UI instead of hand-editing JSON.

The manifest declares six user_config fields: url (marked sensitive, so the client stores it in the OS keychain rather than plaintext config), read_only (default true), allow_destructive (default false), and optional ssl_ca_cert / ssl_cert / ssl_key file pickers. Values are passed to the server via env vars (CRDB_URL, MCP_READ_ONLY, MCP_ALLOW_DESTRUCTIVE, CRDB_SSL_*).

Build the bundle:

npm install -g @anthropic-ai/mcpb
cp mcpb/manifest.json ./manifest.json
mcpb pack . cockroachdb-mcp-server.mcpb

Install locally in Claude Desktop: double-click the resulting .mcpb file. Claude Desktop will show the config form built from user_config.

Publish to Smithery:

smithery mcp publish ./cockroachdb-mcp-server.mcpb -n amineelkouhen/cockroachdb-mcp-server

Configuration

The CockroachDB MCP Server can be configured in two ways: either via command-line arguments or via environment variables. The precedence is: CLI arguments > environment variables > default values.

Configuration via command line arguments

When using the CLI interface, you can configure the server with command line arguments:

# Basic CockroachDB connection
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server \
  --host localhost \
  --port 26257 \
  --db defaultdb \
  --user root \
  --password mypassword

# Using CockroachDB URI (simpler)
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server \
  --url postgresql://root@localhost:26257/defaultdb

# SSL connection
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server \
  --url postgresql://user:pass@cockroach.example.com:26257/defaultdb?sslmode=verify-full&sslrootcert=path/to/ca.crt&sslcert=path/to/client.username.crt&sslkey=path/to/client.username.key

# See all available options
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server --help

Available CLI Options:

  • --url - CockroachDB connection URI (postgresql://user:pass@host:port/db)

  • --host - CockroachDB hostname

  • --port - CockroachDB port (default: 26257)

  • --db - CockroachDB database name (default: defaultdb)

  • --username - CockroachDB username (default: root)

  • --password - CockroachDB password

  • --ssl-mode - SSL mode - Possible values: disable (default), allow, prefer, require, verify-ca, verify-full

  • --ssl-key - Path to SSL client key file

  • --ssl-cert - Path to SSL client certificate file

  • --ssl-ca-cert - Path to CA (root) certificate file

  • --transport - MCP transport to use (stdio or http)

  • --http-host - HTTP host to bind for streamable HTTP transport

  • --http-port - HTTP port to bind for streamable HTTP transport

  • --http-path - HTTP path for streamable HTTP transport (e.g., /mcp)

  • --stateless-http - Enable stateless HTTP mode for horizontal scaling

  • --use-env - Use environment variables for CockroachDB configuration

  • --read-only - Refuse all DDL and write tools; recommended for assistant-style deployments

  • --allow-destructive - Required for drop_database, drop_table, drop_index, drop_view. Even with this flag, every destructive call must include confirm=True.

  • --version - Show the server version and exit

Safety Model

This server is designed for use with an LLM-driven agent, where a prompt-injection attack on the agent could turn into SQL injection or data destruction. Three layers of defense are built in:

  1. Identifier validation. All database, schema, table, column, index, and view names are validated against ^[A-Za-z_][A-Za-z0-9_]{0,62}$ before being interpolated into SQL.

  2. Values are always parameterized. Filters, limits, and intervals use asyncpg placeholders ($1, $2, ...). No user-controlled value is interpolated into SQL.

  3. Server-level policy.

    • --read-only disables every DDL and write-shaped tool (drop_*, create_*, execute_query of INSERT/UPDATE/etc., bulk_import, ...).

    • --allow-destructive is required for drop_* tools. Even then, the caller must pass confirm=True per call.

    • DSNs are redacted in responses; passwords never appear in connect() results.

Recommended defaults for production assistant-style use: --read-only. For administrative agents that need to manage schema, set --allow-destructive but never disable the confirm=True requirement.

Logging

Logging is configured via environment variables:

  • MCP_LOG_LEVEL (default INFO) — standard Python logging level (DEBUG/INFO/WARNING/ERROR).

  • MCP_LOG_JSON=1 — emit JSON-structured log lines, recommended when running with --transport http.

Connection pool tuning

  • CRDB_POOL_MIN (default 1)

  • CRDB_POOL_MAX (default 10)

  • CRDB_COMMAND_TIMEOUT (default 60 seconds)

Configuration via Environment Variables

If desired, you can use environment variables. Defaults are provided for all variables.

Name

Description

Default Value

CRDB_HOST

The host name or address of a CockroachDB node or load balancer.

127.0.0.1

CRDB_PORT

The port number of the SQL interface of the CockroachDB node or load balancer.

26257

CRDB_DATABASE

A database name to use as the current database.

defaultdb

CRDB_USERNAME

The SQL user that will own the client session.

root

CRDB_PWD

The user's password.

None

CRDB_SSL_MODE

Which type of secure connection to use.

disable

CRDB_SSL_CA_PATH

Path to the CA certificate, when sslmode is not disable.

None

CRDB_SSL_CERTFILE

Path to the client certificate, when sslmode is not disable.

None

CRDB_SSL_KEYFILE

Path to the client private key, when sslmode is not disable.

None

There are several ways to set environment variables:

  1. Using a .env File:   Place a .env file in your project directory with key-value pairs for each environment variable. Tools like python-dotenv, pipenv, and uv can automatically load these variables when running your application. This is a convenient and secure way to manage configuration, as it keeps sensitive data out of your shell history and version control (if .env is in .gitignore). For example, create a .env file with the following content from the .env.example file provided in the repository:

cp .env.example .env

Then edit the .env file to set your CockroachDB configuration:

OR,

  1. Setting Variables in the Shell:   You can export environment variables directly in your shell before running your application. For example:

export CRDB_URL= postgresql://root@127.0.0.1:26257/defaultdb

This method is helpful for temporary overrides or quick testing.

Integrations

Integrating this MCP Server with development frameworks like OpenAI Agents SDK or using tools like Claude Desktop, VS Code, or Augment is described in the following sections.

OpenAI Agents SDK

Integrate this MCP Server with the OpenAI Agents SDK. Read the documents to learn more about the integration of the SDK with MCP.

Install the Python SDK.

pip install openai-agents

Configure the OpenAI token:

export OPENAI_API_KEY="<openai_token>"

And run the application.

python3 examples/cockroachdb_assistant.py

You can troubleshoot your agent workflows using the OpenAI dashboard.

Augment

You can configure the CockroachDB MCP Server in Augment by importing the server via JSON:

{
  "mcpServers": {
    "CockroachDB MCP Server": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/amineelkouhen/mcp-cockroachdb.git",
        "cockroachdb-mcp-server",
        "--url",
        "postgresql://root@localhost:26257/defaultdb",
        "--read-only"
      ]
    }
  }
}

Claude Desktop

The simplest way to configure MCP clients is using uvx. Add the following JSON to your claude_desktop_config.json, remember to provide the full path to uvx.

{
    "mcpServers": {
        "cockroach-mcp-server": {
            "type": "stdio",
            "command": "/opt/homebrew/bin/uvx",
            "args": [
                "--from", "git+https://github.com/amineelkouhen/mcp-cockroachdb.git",
                "cockroachdb-mcp-server",
                "--url", "postgresql://localhost:26257/defaultdb"
            ]
        }
    }
}

Please follow the prompt and give the details to configure the server and connect to CockroachDB (e.g., using a managed CockroachDB instance). The procedure will create the proper configuration in the claude_desktop_config.json configuration file.

VS Code with GitHub Copilot

To use the CockroachDB MCP Server with VS Code, you must enable the agent mode tools. Add the following to your settings.json:

{
  "chat.agent.enabled": true
}

You can start the GitHub desired version of the CockroachDB MCP server using uvx by adding the following JSON to your settings.json:

"mcp": {
    "servers": {
        "CockroachDB MCP Server": {
        "type": "stdio",
        "command": "uvx", 
        "args": [
            "--from", "git+https://github.com/amineelkouhen/mcp-cockroachdb.git",
            "cockroachdb-mcp-server",
            "--url", "postgresql://root@localhost:26257/defaultdb"
        ]
        },
    }
},

Alternatively, you can start the server using uv and configure your mcp.json or settings.json. This is usually desired for development.

{
  "servers": {
    "cockroach": {
      "type": "stdio",
      "command": "<full_path_uv_command>",
      "args": [
        "--directory",
        "<your_mcp_server_directory>",
        "run",
        "src/main.py"
      ],
      "env": {
        "CRDB_HOST": "<your_cockroachdb_hostname>",
        "CRDB_PORT": "<your_cockroachdb_port>",
        "CRDB_DATABASE": "<your_cockroach_database>",
        "CRDB_USERNAME": "<your_cockroachdb_user>",
        "CRDB_PWD": "<your_cockroachdb_password>"
      }
    }
  }
}

For more information, see the VS Code documentation.

Cursor

Read the configuration options here and input your selections with this link:

Install MCP Server

Testing

Unit tests

The repository ships with a pytest suite covering the SQL identifier validators, type serializers, DSN parsing, URL helpers, output formatting, and policy gating (read-only mode, destructive-op gating, injection rejection).

uv sync --extra dev
uv run pytest -v

CI runs the same suite on Python 3.12 and 3.13. See .github/workflows/test.yml.

Linting

uv run ruff check src tests
uv run ruff format --check src tests

MCP Inspector

For interactive debugging of the live server, use the MCP Inspector:

npx @modelcontextprotocol/inspector uv run src/main.py

Contributing

  1. Fork the repository

  2. Create a new branch (feature-branch)

  3. Commit your changes

  4. Push to your branch and submit a pull request.

License

This project is licensed under the MIT License.

Quality Badge

Contact

If you have any questions or need support, please feel free to contact us through GitHub Issues.

Available Tools

29 tools
analyze_performanceC

Analyze query performance statistics for a given query or time range.

Args: query (str): Query string to filter (default: ""). time_range (str): Time range for analysis (default: '1:0', format: 'minutes:seconds').

Returns: Statistics about performance and latency (e.g., P50, P99).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
time_rangeNo1:0

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool returns statistics like P50 and P99, which gives some insight into output format. However, it doesn't disclose critical behavioral traits: whether this is a read-only operation, if it requires specific permissions, potential performance impact on the database, rate limits, or whether it analyzes historical vs real-time data. The description is minimal beyond basic functionality.

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

Conciseness4/5

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

The description is well-structured with clear sections (purpose, args, returns) and front-loaded with the core functionality. Every sentence adds value: the first states purpose, the args section documents parameters, and returns indicates output type. It could be slightly more concise by integrating the default values into the main description rather than separate args section.

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 2 parameters with 0% schema coverage and no output schema, the description provides basic purpose and parameter information but lacks comprehensive context. It doesn't explain the relationship between query and time_range parameters, doesn't specify output format details beyond example metrics, and omits behavioral considerations. For a performance analysis tool with no annotations, this is minimally adequate but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the schema provides no parameter documentation. The description adds meaningful context: 'query' filters analysis, 'time_range' specifies analysis period with format 'minutes:seconds' and default '1:0'. This compensates partially but doesn't explain what '1:0' means (presumably 1 minute 0 seconds), valid time range formats, or whether both parameters can be used together. Baseline 3 reflects adequate but incomplete parameter semantics.

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 analyzes query performance statistics for a given query or time range, providing a specific verb ('analyze') and resource ('query performance statistics'). It distinguishes from siblings like 'execute_query' or 'explain_query' by focusing on performance metrics rather than execution or optimization. However, it doesn't explicitly differentiate from all possible alternatives like 'get_query_history' which might overlap in time-range analysis.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'get_query_history' for historical analysis, 'explain_query' for optimization insights, or 'show_running_queries' for current performance. There's no context about prerequisites, typical use cases, or exclusions.

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

analyze_schemaB

Analyze the schema and provide a summary of tables, views, and relationships.

Args: db_schema (str): Schema name (default: "public").

Returns: Summary and details of tables, views, and relationships.

ParametersJSON Schema
NameRequiredDescriptionDefault
db_schemaNopublic

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool 'analyze' and 'provide a summary', but does not specify whether this is a read-only operation, its performance impact, authentication requirements, or output format. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior and constraints.

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 appropriately sized and front-loaded, with the core purpose stated first, followed by a clear 'Args' and 'Returns' section. Every sentence adds value, and there is no redundant information. However, the formatting with separate sections could be slightly more integrated for optimal readability.

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

Completeness3/5

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

Given the tool's moderate complexity (analyzing schema relationships), no annotations, no output schema, and low schema description coverage, the description is minimally adequate. It covers the basic purpose and parameter semantics but lacks details on behavioral traits, usage guidelines, and output specifics, leaving the agent with incomplete context for effective 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?

The description adds meaningful context for the single parameter 'db_schema' by stating it is the 'Schema name (default: "public")', which clarifies its purpose beyond the schema's title 'Db Schema'. With 0% schema description coverage and only one parameter, this compensation is effective, though it could elaborate on schema naming conventions or restrictions.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Analyze the schema and provide a summary of tables, views, and relationships.' It uses specific verbs ('analyze', 'provide') and resources ('schema', 'tables, views, and relationships'), making the intent unambiguous. However, it does not explicitly differentiate from siblings like 'describe_table' or 'get_table_relationships', which might offer overlapping functionality, so it falls short of a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings such as 'describe_table', 'get_table_relationships', 'list_tables', and 'list_views', there is no indication of context, prerequisites, or exclusions. The agent must infer usage based on the tool name and description alone, which is insufficient for optimal selection.

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

bulk_importA

Bulk import data into a table from a file (CSV or Avro) stored in cloud or web storage. Supports S3, Azure Blob, Google Storage, HTTP/HTTPS URLs.

Args: table_name (str): Name of the table to import data into. file_url (str): URL to the data file (s3://, azure://, gs://, http://, https://, etc.). format (str): File format ('csv' or 'avro'). delimiter (str): CSV delimiter (default: ','). skip_header (bool): Whether to skip the first row as header (default: True).

Returns: A success message or an error message.

Example: bulk_import(ctx, table_name="users", file_url="s3://bucket/data.csv", format="csv", delimiter=";", skip_header=True)

ParametersJSON Schema
NameRequiredDescriptionDefault
delimiterNo,
file_urlYes
formatYes
skip_headerNo
table_nameYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions that the tool 'bulk import data' and returns a 'success message or an error message', but does not disclose critical behavioral traits such as whether it overwrites existing data, requires specific permissions, handles errors gracefully, or has rate limits. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its 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 well-structured and appropriately sized, with a concise opening sentence stating the purpose, followed by organized sections for Args, Returns, and Example. Every sentence adds value without redundancy, and the example illustrates usage clearly, making it easy to understand at a glance.

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

Completeness3/5

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

Given the tool's complexity (data import with multiple parameters) and lack of annotations or output schema, the description is moderately complete. It covers parameters well and includes an example, but lacks details on behavioral aspects (e.g., data overwrite policy, error handling) and does not explain the return value beyond 'success or error message'. For a mutation tool, this leaves room for improvement in contextual understanding.

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 provides clear semantics for all 5 parameters in the 'Args' section, explaining each parameter's purpose (e.g., 'URL to the data file', 'CSV delimiter') and default values. This adds substantial meaning beyond the bare schema, though it could include more details like URL format examples or delimiter 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 clearly states the tool's purpose with specific verbs ('bulk import data into a table') and resources ('from a file'), distinguishing it from sibling tools like create_table or execute_query by focusing on data ingestion rather than schema manipulation or query execution. It specifies supported file formats (CSV/Avro) and storage sources (S3, Azure Blob, etc.), making the scope explicit.

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

Usage Guidelines3/5

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

The description implies usage for importing data from external files into tables, but does not explicitly state when to use this tool versus alternatives (e.g., manual inserts or other import methods). It mentions supported formats and storage types, providing some context, but lacks guidance on prerequisites, limitations, or comparisons with sibling tools like execute_query for data manipulation.

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

connectB

Connect to the default CockroachDB database and create a connection pool.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the action ('create a connection pool') and return values ('success message or error message'), but lacks critical details: whether this is a one-time setup, if it requires authentication, potential side effects (e.g., resource allocation), or error conditions. For a connection tool with zero annotation coverage, this is insufficient.

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 concise and well-structured: the first sentence states the purpose, and the second clarifies the return values. Both sentences earn their place by providing essential information without redundancy. It could be slightly more front-loaded by integrating the return info, but it's efficient overall.

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

Completeness2/5

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

Given the tool's complexity (establishing a database connection) and lack of annotations and output schema, the description is incomplete. It doesn't explain what 'default CockroachDB database' means, how the connection pool behaves, or what the success/error messages contain. For a foundational tool in a database management context, more detail is needed to ensure safe and effective use.

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 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing on the tool's action. A baseline of 4 is applied for zero-parameter tools, as there's nothing to compensate for.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Connect to the default CockroachDB database and create a connection pool.' It specifies the verb ('connect'), resource ('default CockroachDB database'), and action ('create a connection pool'). However, it doesn't explicitly differentiate from sibling 'connect_database', which appears to be a similar connection tool, leaving some ambiguity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether a connection must be established before other operations), compare it to 'connect_database', or specify when not to use it (e.g., for non-default databases). This lack of context makes it unclear how this tool fits into the workflow.

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

connect_databaseA

Connect to a CockroachDB database and create a connection pool.

Args: host (str): CockroachDB host. port (int): CockroachDB port (default: 26257). database (str): Database name (default: "defaultdb"). username (str): Username (default: "root"). password (str): Password. sslmode (str): SSL mode (default: disable - Possible values: allow, prefer, require, verify-ca, verify-full). sslcert (str): Path to user certificate file. sslkey (str): Path to user key file. sslrootcert (str): Path to CA certificate file.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYes
hostYes
passwordYes
portYes
sslcertYes
sslkeyYes
sslmodeYes
sslrootcertYes
usernameYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions creating a connection pool (implying a persistent resource), it doesn't describe authentication requirements, error handling, connection limits, whether the pool is shared or per-invocation, or what happens on subsequent calls. For a tool with 9 required parameters and no annotation coverage, this is insufficient.

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

Conciseness4/5

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

The description is well-structured with a clear purpose statement followed by organized parameter documentation. While comprehensive, every sentence serves a purpose - the first establishes the tool's function, and the parameter documentation is essential given the poor schema coverage. Some behavioral context could be added without sacrificing conciseness.

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 complexity (9 required parameters, no annotations, no output schema), the description does an excellent job with parameter semantics but lacks behavioral context about connection pooling, authentication, error handling, and relationship to sibling tools. The absence of output schema means the description should ideally explain return values more thoroughly than just 'A success message or an error message.'

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by providing detailed parameter documentation including data types, defaults, and explanations for all 9 parameters. It adds crucial context like default values, SSL mode options, and file path requirements that aren't in the schema.

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

Purpose5/5

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

The description clearly states the specific action ('Connect to a CockroachDB database and create a connection pool'), identifies the resource (CockroachDB database), and distinguishes it from sibling tools like 'connect' (which appears to be a different connection tool) and 'switch_database' (which changes an existing connection rather than creating one).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'connect' or 'switch_database', nor does it mention prerequisites or appropriate contexts for establishing a database connection. It simply states what the tool does without usage context.

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

create_databaseB

Enable the creation of new databases.

Args: database_name (str): Name of the database to create.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
database_nameYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'creates' new databases, implying a write/mutation operation, but doesn't disclose critical behavioral traits such as required permissions, whether the operation is idempotent, what happens if the database already exists, or any rate limits. The mention of returning 'A success message or an error message' adds minimal value beyond the obvious.

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 appropriately sized and well-structured. It starts with a clear purpose statement, followed by dedicated sections for 'Args' and 'Returns' that are easy to parse. There's no unnecessary verbosity, and every sentence adds value (e.g., the returns section clarifies output expectations).

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

Completeness3/5

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

Given the tool's complexity (a write operation with no annotations and no output schema), the description is minimally adequate. It covers the purpose and parameter semantics but lacks behavioral details (e.g., permissions, idempotency) and doesn't fully explain the return values beyond generic 'success/error message.' For a mutation tool, this leaves significant gaps for the agent to navigate.

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 description adds meaningful semantics for the single parameter: 'database_name (str): Name of the database to create.' This clarifies the parameter's purpose beyond what the schema provides (which has 0% description coverage and only shows the parameter name and type). With only one parameter, the description adequately compensates for the schema's lack of detail.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Enable the creation of new databases.' It specifies the verb ('creation') and resource ('databases'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from siblings like 'connect_database' or 'list_databases' beyond the obvious creation vs. connection/listing distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing admin permissions), when not to use it (e.g., if a database already exists), or refer to sibling tools like 'connect_database' for existing databases. The agent must infer usage from the tool name alone.

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

create_indexA

Create a new index on a specified table to improve query performance. This tool allows users to define indexes on one or more columns, enabling faster data retrieval and optimized execution plans for read-heavy workloads.

Args: table_name (str): Name of the table. index_name (str): Name of the index. columns (List[str]): List of column names to include in the index.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsYes
index_nameYes
table_nameYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the tool's purpose and benefits, it doesn't disclose critical behavioral traits like whether this operation requires specific permissions, if it locks the table during creation, potential performance impact during index building, or whether indexes are automatically used by queries. For a mutation tool with zero annotation coverage, this leaves significant gaps.

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 appropriately sized with a clear purpose statement followed by parameter documentation. The first sentence efficiently conveys the core functionality, and the Args/Returns sections are well-structured. While slightly longer than minimal, every section adds value given the lack of schema descriptions.

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 3 parameters with 0% schema coverage and no annotations or output schema, the description provides adequate but incomplete coverage. It documents all parameters and the general purpose, but lacks details about behavioral implications, error conditions, performance characteristics, and relationship to sibling tools. For a database mutation tool, more context about side effects and constraints would be beneficial.

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 description coverage, the description compensates well by providing a parameter section that explains all three parameters: 'table_name', 'index_name', and 'columns'. It adds meaning beyond the bare schema by specifying that columns is a 'List of column names to include in the index' and clarifying the purpose of each parameter. However, it doesn't provide format examples or 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 clearly states the specific action ('Create a new index'), target resource ('on a specified table'), and primary benefit ('to improve query performance'). It distinguishes this tool from siblings like 'create_table' or 'drop_index' by focusing on index creation for performance optimization rather than table/view operations or index removal.

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

Usage Guidelines3/5

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

The description implies usage context ('for read-heavy workloads') and mentions the purpose ('faster data retrieval and optimized execution plans'), but doesn't explicitly state when to use this tool versus alternatives like 'analyze_performance' or 'explain_query' for performance tuning. No explicit exclusions or prerequisites are provided.

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

create_tableA

Enable the creation of new tables in the current database. You can instruct the AI to define table names, columns, and their types, streamlining database setup and schema evolution directly through natural language.

Args: table_name (str): Name of the table. columns (List[Dict[str, str]]): List of dicts with keys: - 'name' (str): column name (required) - 'datatype' (str): column datatype (required) - 'constraint' (str): column constraint (optional)

Returns: A success message or an error message.

Example: columns = [ {"name": "id", "datatype": "SERIAL", "constraint": "PRIMARY KEY"}, {"name": "username", "datatype": "TEXT", "constraint": "NOT NULL"}, {"name": "created_at", "datatype": "TIMESTAMP"} ]

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsYes
table_nameYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the tool creates tables, implying a write operation, but doesn't disclose behavioral traits like permissions needed, whether it's idempotent, if it affects existing data, or error handling specifics. The mention of 'success message or an error message' adds minimal context, but key details are missing for a mutation tool.

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 appropriately sized and front-loaded, starting with the purpose, followed by structured sections for Args, Returns, and Example. Each sentence adds value, such as clarifying natural language use. Minor verbosity in the first paragraph slightly reduces efficiency, but overall it's well-organized.

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 complexity (a mutation tool with 2 parameters, no annotations, and no output schema), the description is partially complete. It covers purpose and parameters well but lacks behavioral context like side effects or error details. The absence of output schema means the description should ideally explain return values more thoroughly, which it does minimally with 'success message or an error message.'

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

Parameters5/5

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

The schema description coverage is 0%, so the description must compensate. It provides detailed parameter semantics: 'table_name' is explained as the table name, and 'columns' is described with a list of dicts including required keys ('name', 'datatype') and optional ones ('constraint'), along with an example. This adds significant meaning beyond the bare schema.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Enable the creation of new tables in the current database.' It specifies the verb ('create') and resource ('tables'), and distinguishes it from siblings like 'create_database' or 'create_view' by focusing on tables. However, it doesn't explicitly differentiate from 'create_index' or 'create_view' in the same sentence, which prevents a perfect score.

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

Usage Guidelines3/5

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

The description implies usage for 'database setup and schema evolution' and mentions 'streamlining... through natural language,' which suggests when to use it. However, it lacks explicit guidance on when to choose this over alternatives like 'create_database' or 'create_view,' and doesn't mention prerequisites or exclusions, such as requiring an active database connection.

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

create_viewB

Create a view from a specific query.

Args: view_name (str): Name of the view. query (str): SQL query for the view definition.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
view_nameYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool creates a view and returns a success/error message, but lacks critical behavioral details such as permissions required, whether it's idempotent, if it overwrites existing views, or any rate limits. This is inadequate for a mutation tool with zero annotation coverage.

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

Conciseness4/5

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

The description is well-structured with a brief purpose statement followed by clear sections for Args and Returns. It's front-loaded and avoids unnecessary details, though the Returns section could be more specific (e.g., mentioning what the success message contains).

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

Completeness2/5

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

Given no annotations, no output schema, and a mutation tool with behavioral gaps, the description is incomplete. It covers parameters well but fails to address critical context like error conditions, side effects, or integration with sibling tools (e.g., connect_database prerequisite), making it insufficient for safe and effective use.

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 clearly explains both parameters: view_name as the name of the view and query as the SQL query for the view definition, adding meaningful semantics beyond the bare schema. With 0% coverage and 2 parameters, this is strong compensation.

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 creates a view from a SQL query, specifying both the verb ('create') and resource ('view'). It distinguishes from siblings like create_table or create_database by focusing on views, though it doesn't explicitly differentiate from drop_view or list_views beyond the action type.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites like needing an existing database connection, nor does it clarify when to use create_view versus execute_query for similar operations, leaving usage context implied but unspecified.

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

describe_tableA

Provide detailed schema information, column definitions, data types, and other metadata for a specified table. This allows the AI to accurately interpret table structures and formulate precise queries or data manipulation commands.

Args: table_name (str): Name of the table. db_schema (str): Schema name (default: "public").

Returns: Table details including columns, constraints, indexes, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
db_schemaNopublic
table_nameYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It describes the tool's function but lacks behavioral details such as whether it's read-only, potential error conditions (e.g., if table doesn't exist), authentication needs, or rate limits. The description doesn't contradict annotations, but it's insufficient for a mutation-free tool with zero annotation coverage.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, starting with the core purpose. The Args and Returns sections are structured but slightly verbose; every sentence earns its place by adding value, though it could be more concise by integrating the explanatory sentence into the main description.

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 2 parameters with 0% schema coverage and no output schema, the description provides basic parameter semantics and return value overview but lacks details on output structure, error handling, or behavioral traits. It's minimally adequate for a read-only metadata tool but has clear gaps in completeness.

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 table_name ('Name of the table') and db_schema ('Schema name (default: "public")'), which clarifies parameter roles beyond the schema's basic titles. However, it doesn't detail format constraints or examples for these parameters.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('provide detailed schema information') and resources ('for a specified table'), distinguishing it from siblings like list_tables (which lists tables) or get_table_relationships (which focuses on relationships). It explicitly mentions what metadata is provided (column definitions, data types, constraints, indexes).

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

Usage Guidelines3/5

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

The description implies usage context ('allows the AI to accurately interpret table structures and formulate precise queries'), suggesting when this tool is useful, but doesn't explicitly state when to use it versus alternatives like analyze_schema or get_table_relationships. No explicit exclusions or prerequisites are provided.

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

drop_databaseB

Drop an existing database.

Args: database_name (str): Name of the database to drop.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
database_nameYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Drop') which implies a destructive mutation, but fails to mention critical behaviors: irreversible data loss, permission requirements, or impact on dependent objects. This is inadequate for a high-risk operation.

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

Conciseness5/5

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

The description is front-loaded with the core purpose in the first sentence, followed by structured Args and Returns sections. Every sentence earns its place with no redundant information, making it highly efficient and easy to parse.

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

Completeness2/5

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

For a destructive tool with no annotations and no output schema, the description is insufficient. It doesn't explain the irreversible consequences, error conditions, or return format beyond 'success or error message'. Given the high risk and lack of structured safety hints, more context is needed.

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 description adds meaningful context for the single parameter by specifying it's the 'Name of the database to drop', which clarifies the semantics beyond the schema's generic 'Database Name' title. With 0% schema description coverage and only one parameter, this compensates adequately, though it doesn't detail format constraints.

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 verb ('Drop') and resource ('an existing database'), making the purpose unambiguous. It distinguishes from siblings like 'drop_table' or 'drop_view' by specifying database-level deletion. However, it doesn't explicitly differentiate from 'create_database' in terms of destructive nature, which would require 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 Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'drop_table' or 'list_databases'. The description lacks context about prerequisites (e.g., database must exist, no active connections) or exclusions, leaving the agent to infer usage from the name alone.

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

drop_indexC

Drop an existing index.

Args: index_name (str): Name of the index to drop.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
index_nameYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool drops an index (implying a destructive mutation), but doesn't cover critical aspects like permissions required, whether the operation is reversible, potential side effects on database performance, or error conditions beyond generic 'error message'. This is inadequate for a destructive operation.

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 appropriately concise with a clear main statement followed by structured Args and Returns sections. The formatting helps readability, though the Returns section is vague ('A success message or an error message'). Every sentence serves a purpose with minimal waste.

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

Completeness2/5

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

For a destructive mutation tool with no annotations, no output schema, and minimal parameter documentation, the description is incomplete. It doesn't explain what 'dropping' entails (e.g., immediate removal vs. background process), what happens to dependent objects, or what format the return messages take. The agent lacks sufficient context to use this tool safely and effectively.

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

Parameters3/5

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

The description adds minimal parameter semantics beyond the schema. It specifies that 'index_name' is the 'Name of the index to drop', which slightly clarifies the parameter's purpose but doesn't provide format requirements, naming conventions, or validation rules. With 0% schema description coverage and only one parameter, this meets the baseline but doesn't compensate for the coverage gap.

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

Purpose4/5

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

The description clearly states the action ('Drop') and the resource ('an existing index'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'drop_database', 'drop_table', or 'drop_view', which all perform similar deletion operations on different resources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., the index must exist), consequences (e.g., performance impact on queries), or when to choose other drop operations like 'drop_table' instead. This leaves the agent without context for proper tool selection.

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

drop_tableA

Facilitate the deletion of existing tables from the database. This tool is useful for cleaning up test environments or managing schema changes, always with the necessary confirmations for security.

Args: table_name (str): Name of the table to drop.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool 'always with the necessary confirmations for security,' indicating a safety mechanism, and mentions it's for deletion, implying destructive behavior. However, it lacks details on permissions required, whether deletions are reversible, rate limits, or error handling specifics, leaving gaps for a mutation tool.

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 appropriately sized with three sentences: purpose, usage context, and parameter/return info. It is front-loaded with the core action. The Args and Returns sections are structured but slightly verbose; every sentence adds value, though 'always with the necessary confirmations' could be more concise.

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

Completeness3/5

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

Given the tool's complexity (destructive mutation), no annotations, no output schema, and low schema coverage, the description is moderately complete. It covers purpose, usage context, and parameter semantics but lacks details on behavioral aspects like error messages, confirmation processes, or integration with other tools. For a high-risk operation, more context would be beneficial.

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 input schema has 1 parameter with 0% description coverage, so the description must compensate. It adds meaning by specifying 'table_name (str): Name of the table to drop,' which clarifies the parameter's purpose beyond the schema's basic type. Since there are no other parameters, this is sufficient, but it doesn't detail constraints like table existence or naming rules.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'deletion of existing tables from the database' with a specific verb (deletion/facilitate deletion) and resource (tables). It distinguishes from siblings like drop_database, drop_index, and drop_view by specifying tables. However, it doesn't explicitly contrast with other table-related tools like create_table or describe_table, keeping it from a perfect score.

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

Usage Guidelines3/5

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

The description provides implied usage guidance by mentioning 'useful for cleaning up test environments or managing schema changes,' which suggests contexts for use. However, it does not explicitly state when to use this tool versus alternatives (e.g., drop_database for databases, drop_view for views) or list prerequisites like needing table existence. No explicit exclusions are provided.

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

drop_viewB

Drop an existing view.

Args: view_name (str): Name of the view to drop.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
view_nameYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action is 'Drop' (implying destructive mutation) but doesn't describe critical behaviors: whether this is irreversible, what permissions are required, if it affects dependent objects, or what happens on success/failure beyond generic 'message' returns. This leaves significant gaps for a destructive operation.

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 appropriately brief and front-loaded with the core purpose in the first sentence. The Args/Returns sections are structured but somewhat redundant with the schema (though helpful given 0% schema coverage). No unnecessary verbiage, though the Returns section could be more specific.

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

Completeness2/5

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

For a destructive mutation tool with no annotations, 0% schema description coverage, and no output schema, the description is insufficient. It doesn't explain the irreversible nature, permission requirements, error conditions, or what 'success message' contains. Given the complexity and risk of dropping database objects, more behavioral context is needed.

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 description adds meaningful context for the single parameter 'view_name' by specifying it's 'Name of the view to drop', which clarifies the parameter's role beyond the schema's basic 'View Name' title. With 0% schema description coverage and only one parameter, this adequately compensates, though it doesn't explain format constraints (e.g., case sensitivity, naming conventions).

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

Purpose4/5

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

The description clearly states the action ('Drop') and target resource ('an existing view'), providing specific verb+resource pairing. It distinguishes from siblings like 'drop_table' and 'drop_database' by specifying the view resource type. However, it doesn't explicitly differentiate from all siblings (e.g., doesn't mention when to use vs 'drop_table').

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 about when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., view must exist), when-not scenarios (e.g., irreversible destruction), or explicit alternatives among siblings like 'drop_table' or 'drop_database'. The agent receives no contextual usage instructions.

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

execute_queryB

Execute a SQL query with optional parameters and formatting.

Args: query (str): SQL query to execute. params (List, optional): Query parameters. format (str): Output format ('json', 'csv', 'table'). limit (int, optional): Limit number of rows returned.

Returns: The query resultset in json or csv format.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNojson
limitNo
paramsNo
queryYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but provides minimal behavioral information. It mentions 'execute a SQL query' which implies a write operation could occur, but doesn't clarify if this tool can perform DML/DDL operations, what permissions are required, whether transactions are managed, or if there are rate limits. The return format is mentioned but not the structure or error handling.

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

Conciseness3/5

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

The description is reasonably concise with clear sections for Args and Returns, but includes redundant information ('Execute a SQL query' then repeats in Args). The formatting could be more front-loaded with critical information about what types of queries can be executed and safety considerations.

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 4-parameter tool with no annotations and no output schema, the description provides basic parameter semantics and return format information. However, it lacks critical context about what happens when queries fail, whether DDL/DML operations are supported, transaction behavior, and how results are structured beyond format type.

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 description adds significant value beyond the 0% schema description coverage by explaining all 4 parameters: query (SQL to execute), params (optional query parameters), format (output format with enum values), and limit (optional row limit). This compensates well for the schema's lack of descriptions, though it doesn't provide examples or format details for the params array.

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 executes SQL queries with optional parameters and formatting, providing a specific verb ('execute') and resource ('SQL query'). However, it doesn't explicitly differentiate from sibling tools like 'execute_transaction' or 'explain_query' which suggests similar query-related functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'execute_transaction' for transactional operations or 'explain_query' for query analysis. It mentions optional parameters but doesn't explain when they should be used or what alternatives exist among the many sibling database tools.

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

execute_transactionB

Execute a list of SQL queries as a single transaction.

Args: queries (List[str]): List of SQL queries to execute.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions transactional execution but fails to disclose critical behavioral traits: whether it requires specific permissions, if it's read-only or mutative, how errors are handled (rollback on failure?), rate limits, or what 'success message' entails. This is inadequate for a tool with potential data modification.

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 appropriately sized and front-loaded, with the core purpose stated first. The Args and Returns sections are structured but could be more integrated; overall, it avoids unnecessary verbosity while covering key aspects efficiently.

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

Completeness2/5

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

Given the complexity (transactional SQL execution), lack of annotations, and no output schema, the description is incomplete. It misses essential context: behavioral details (e.g., rollback, permissions), parameter constraints, and output specifics beyond 'success or error message.' This leaves significant gaps for safe and effective tool use.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by specifying 'queries' as a 'List of SQL queries to execute,' clarifying the parameter's purpose beyond the schema's basic type definition. However, it does not detail query syntax, validation rules, or constraints (e.g., supported SQL dialects), leaving gaps in parameter understanding.

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 'Execute a list of SQL queries as a single transaction,' specifying the verb (execute) and resource (SQL queries). It distinguishes from sibling 'execute_query' by emphasizing transactionality, but does not explicitly contrast with other siblings like 'bulk_import' or 'connect_database.'

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

Usage Guidelines3/5

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

The description implies usage for executing multiple queries atomically, suggesting when to use it over single-query tools. However, it lacks explicit guidance on alternatives (e.g., vs. 'execute_query' for single queries or 'bulk_import' for data loads) and does not mention prerequisites like database connection or transaction contexts.

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

explain_queryA

Return CockroachDB's statement plan for a preparable statement. You can use this information to optimize the query. If you run it with Analyze, it executes the SQL query and generates a statement plan with execution statistics.

Args: query (str): SQL query to explain. analyze (bool): If True, run EXPLAIN ANALYZE.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
analyzeNo
queryYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the tool returns a statement plan and can execute the query with 'analyze' for statistics, covering key behavioral aspects. However, it lacks details on potential side effects (e.g., if 'analyze' affects database state), error handling, or performance implications, leaving some gaps.

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

Conciseness4/5

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

The description is well-structured with a purpose statement, usage guidance, and parameter explanations in separate sections. It is appropriately sized and front-loaded, but the 'Returns' section is somewhat vague ('A success message or an error message'), slightly reducing efficiency.

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 complexity of a database explanation tool with 2 parameters, no annotations, and no output schema, the description is moderately complete. It covers purpose, usage, and parameters but lacks details on output format, error cases, or integration with sibling tools, which would enhance completeness for this context.

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 description coverage is 0%, so the description must compensate. It explicitly documents both parameters ('query' and 'analyze') with clear semantics: 'SQL query to explain' and 'If True, run EXPLAIN ANALYZE'. This adds significant value beyond the bare schema, though it could provide more detail on query format or analyze effects for a higher score.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Return CockroachDB's statement plan for a preparable statement' and 'use this information to optimize the query'. It specifies the verb ('return'), resource ('statement plan'), and target system ('CockroachDB'), distinguishing it from siblings like execute_query or analyze_performance by focusing on query explanation rather than execution or performance analysis.

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 clear context for when to use the tool ('to optimize the query') and mentions the 'analyze' parameter for execution statistics. However, it does not explicitly state when not to use it or name specific alternatives among the sibling tools (e.g., execute_query for actual query execution), which prevents a perfect score.

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

get_active_connectionsB

List active connections/sessions to the current database.

Returns: Active sessions on the cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('List') and return value ('Active sessions on the cluster'), but lacks details on permissions required, rate limits, whether it's read-only or has side effects, or how the data is formatted. For a tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded, with the main purpose stated clearly in the first sentence and a brief return value note. There is no wasted text, and every sentence earns its place by providing essential information without redundancy.

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

Completeness3/5

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

Given the tool's low complexity (0 parameters, no output schema) and lack of annotations, the description is minimally adequate. It explains what the tool does and what it returns, but for a monitoring tool with potential behavioral nuances (e.g., permissions, side effects), it should provide more context. Without annotations or output schema, the description does the bare minimum to be functional.

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 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description does not need to add parameter semantics, and it appropriately avoids unnecessary details. Baseline is 4 for zero parameters, as it efficiently handles the lack of inputs.

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

Purpose4/5

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

The description clearly states the tool's purpose with 'List active connections/sessions to the current database,' which includes a specific verb ('List') and resource ('active connections/sessions'). It distinguishes from siblings like 'get_connection_status' (which might check a single connection) and 'show_running_queries' (which focuses on queries rather than sessions). However, it doesn't explicitly differentiate from all siblings, such as 'get_cluster_status' which might overlap in scope.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It lacks explicit instructions on prerequisites, timing, or comparisons to siblings like 'get_connection_status' or 'show_running_queries.' The context is implied (monitoring active sessions), but no exclusions or specific use cases are mentioned.

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

get_cluster_statusB

Get cluster health and node distribution.

Args: detailed (bool): If True, returns all node details. If False, returns summary info.

Returns: Details about the cluster's status and how nodes/ranges are distributed or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailedNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool returns 'Details about the cluster's status and how nodes/ranges are distributed or an error message,' which adds some context about output and error handling. However, it lacks details on permissions, rate limits, or side effects, leaving gaps for a mutation-free but potentially complex operation.

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

Conciseness5/5

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

The description is well-structured and front-loaded, with the core purpose stated first, followed by clear sections for 'Args' and 'Returns.' Every sentence adds value without redundancy, making it efficient and easy to parse.

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

Completeness3/5

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

Given the tool's moderate complexity (1 parameter, no output schema, no annotations), the description is adequate but has gaps. It covers the purpose and parameter semantics well, but lacks usage guidelines and full behavioral context (e.g., error conditions, output format details). This makes it minimally viable but not fully comprehensive.

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 description adds significant meaning beyond the input schema, which has 0% description coverage. It explains the 'detailed' parameter's effect: 'If True, returns all node details. If False, returns summary info.' This clarifies the parameter's purpose and impact on output, compensating well for the schema's lack of descriptions.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get cluster health and node distribution.' It uses specific verbs ('get') and identifies the resource ('cluster health and node distribution'), making the function unambiguous. However, it doesn't explicitly differentiate from siblings like 'get_replication_status' or 'get_active_connections,' which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for use, or compare it to sibling tools like 'get_replication_status' or 'get_active_connections.' Without such guidance, users must infer usage from the purpose alone.

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

get_connection_statusB

Get the current connection status and details.

Returns: The connection status or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool returns 'the connection status or an error message', which hints at read-only behavior but doesn't explicitly state it. It fails to address critical aspects like whether this requires authentication, potential rate limits, or what specific details are included in the status, making it insufficient for a mutation-free tool.

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 brief and front-loaded, with the core purpose stated in the first sentence and additional return information in the second. There's no wasted text, though the structure could be slightly improved by integrating the return details more seamlessly.

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

Completeness3/5

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

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does and what it returns, but lacks depth on behavioral context (e.g., error conditions, format of status details) that would be helpful for an agent, especially with no annotations to fill 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?

The tool has 0 parameters, and the schema description coverage is 100%, so there's no need for parameter details in the description. The description appropriately avoids redundant information, earning a high baseline score for this dimension.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('current connection status and details'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_active_connections' or 'get_cluster_status', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_active_connections' or 'get_cluster_status'. It lacks any context about prerequisites, timing, or exclusions, leaving the agent to infer usage based on the tool name alone.

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

get_database_settingsB

Retrieve current database or cluster settings.

Returns: All cluster settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves settings and returns 'All cluster settings', but lacks details on permissions required, rate limits, error conditions, or whether the operation is read-only (implied but not explicit). For a tool with zero annotation coverage, this is insufficient.

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 concise and front-loaded, with the core purpose stated in the first sentence and additional return information in the second. There's no wasted text, though the structure could be slightly improved by integrating the return details more seamlessly.

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

Completeness3/5

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

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is minimally adequate. It explains what the tool does and what it returns, but for a tool that might involve system-level access, more context on behavioral aspects would be beneficial to compensate for the lack of annotations.

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 0 parameters, and the schema description coverage is 100% (though empty). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for having no parameters to document, avoiding any gaps in this area.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Retrieve') and resource ('current database or cluster settings'), making it easy to understand what it does. However, it doesn't explicitly distinguish itself from potential sibling tools like 'get_cluster_status' or 'get_active_connections', which might also retrieve related settings or status information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_cluster_status' and 'get_active_connections' present, there's no indication of how this tool differs or when it should be preferred over those options, leaving the agent without context for selection.

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

get_query_historyB

Get the history of executed queries.

Args: limit (int): Number of recent queries to return (default: 10).

Returns: A list of the last executed queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Get' implies a read operation, the description doesn't mention important behavioral aspects like whether this requires specific permissions, what format the history is returned in, whether results are paginated, or if there are any rate limits. The return statement is minimal and lacks detail.

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

Conciseness4/5

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

The description is efficiently structured with a clear purpose statement followed by Args and Returns sections. Each sentence serves a purpose, though the return statement could be more informative. The formatting helps with readability without unnecessary verbosity.

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 single-parameter read tool with no annotations and no output schema, the description provides basic but incomplete coverage. It explains the parameter adequately and states the return type, but lacks details about the query history format, permissions needed, or how results are ordered. Given the simplicity of the tool, it's minimally adequate but leaves important questions unanswered.

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 description coverage (the schema only shows 'limit' with type integer and default), the description adds meaningful context by explaining that 'limit' represents 'Number of recent queries to return' and specifying the default value. This compensates well for the schema's lack of description, though it doesn't elaborate on constraints like minimum/maximum values.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get the history of executed queries.' This specifies the verb ('Get') and resource ('history of executed queries'), making it immediately understandable. However, it doesn't differentiate from potential sibling tools like 'show_running_queries' or 'execute_query' beyond the obvious historical vs current distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of when this tool is appropriate versus 'show_running_queries' (for current queries) or 'execute_query' (for running new queries), nor any prerequisites or context for usage.

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

get_replication_statusB

Get replication and distribution status for a table or the whole database.

Args: table_name (str): Table name to filter (default: "", for all tables).

Returns: Details about range replication for a specific table or the current database.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool returns 'Details about range replication' but doesn't specify what those details include (e.g., replication lag, distribution metrics), whether it's a read-only operation, potential performance impacts, or error conditions. This leaves significant gaps for a tool with no annotation coverage.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by structured Args and Returns sections. There's minimal waste, though the Returns section could be slightly more informative. The structure aids readability without unnecessary verbosity.

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

Completeness3/5

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

Given the tool's moderate complexity (1 parameter, no output schema, no annotations), the description is partially complete. It covers the purpose and parameter usage adequately but lacks details on return values (beyond vague 'Details'), behavioral traits, and error handling. For a status-checking tool with no structured output, more context on what to expect would improve completeness.

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 description coverage is 0%, so the description must compensate. It adds meaningful semantics: it explains that table_name is a filter (default: '' for all tables) and clarifies its role in scoping the query to a specific table or the entire database. This goes beyond the bare schema, providing essential context for the single parameter.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get replication and distribution status for a table or the whole database.' It uses specific verbs ('Get', 'filter') and identifies the resource ('table', 'database'), distinguishing it from siblings like get_cluster_status or get_connection_status. However, it doesn't explicitly differentiate from all siblings, such as get_table_relationships, which might also involve table metadata.

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

Usage Guidelines3/5

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

The description implies usage through the Args section, stating that table_name filters results (default: '' for all tables). It provides some context for when to use the tool (to check replication status) but lacks explicit guidance on when to choose this over alternatives like get_cluster_status or get_active_connections, and doesn't mention prerequisites or exclusions.

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

get_table_relationshipsC

Get foreign key relationships for a table or all tables.

Args: table_name (str, optional): Table name to filter relationships (default: None).

Returns: List all relationships for a specific table or in a schema.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the tool is for 'getting' information, implying a read-only operation, but doesn't disclose behavioral traits such as whether it requires specific permissions, how it handles large schemas, potential rate limits, or the format of the returned data. This leaves significant gaps in understanding the tool's behavior beyond its basic purpose.

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

Conciseness4/5

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

The description is well-structured and appropriately sized: it starts with a clear purpose statement, followed by separate 'Args' and 'Returns' sections. Each sentence adds value without redundancy. However, the 'Returns' section is somewhat vague ('List all relationships...'), and there's minor room for tightening, but overall it's efficient and front-loaded.

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

Completeness3/5

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

Given the tool's moderate complexity (1 parameter, no output schema, no annotations), the description is minimally adequate. It covers the purpose, parameter usage, and output scope, but lacks details on behavioral aspects like permissions or data format. Without annotations or output schema, more context on what the return data looks like would improve completeness, but it meets basic requirements for a read operation.

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

Parameters3/5

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

The description includes an 'Args' section that documents the single parameter 'table_name' as optional, with a default of None, and a 'Returns' section that clarifies the output scope. However, schema description coverage is 0%, so the description compensates by providing this parameter info. It adds meaning by explaining the optional nature and effect on output, but doesn't detail data types or constraints beyond what's implied, earning a baseline 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 purpose: 'Get foreign key relationships for a table or all tables.' It specifies the verb ('Get') and resource ('foreign key relationships'), and distinguishes the scope (specific table vs. all tables). However, it doesn't explicitly differentiate from sibling tools like 'describe_table' or 'analyze_schema', which might also provide relationship information, 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 Guidelines2/5

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

The description provides minimal guidance: it mentions that the tool can be used for a specific table or all tables, but offers no explicit advice on when to use it versus alternatives like 'describe_table' or 'analyze_schema'. There's no mention of prerequisites, performance implications, or typical use cases, leaving the agent with little contextual direction.

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

list_databasesA

List all databases in the CockroachDB cluster.

Returns: A list of databases with row count or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the return format ('A list of databases with row count or an error message'), which is helpful behavioral context. However, it doesn't mention potential side effects, permissions required, rate limits, or pagination behavior, leaving gaps for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is extremely concise and front-loaded: the first sentence states the core purpose, and the second clarifies the return value. Every sentence adds value without any wasted words, making it easy for an AI agent to parse quickly.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but minimal. It covers the basic purpose and return format, but for a tool with no structured behavioral hints, it could benefit from more context like error conditions or usage examples to be 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?

The tool has 0 parameters, and the schema description coverage is 100%, so there's no need for parameter details in the description. The description appropriately focuses on the tool's purpose and output without redundant parameter information, earning a baseline score of 4 for zero-parameter tools.

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

Purpose5/5

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

The description clearly states the specific action ('List all databases') and resource ('in the CockroachDB cluster'), making the purpose immediately understandable. It distinguishes this tool from siblings like 'list_tables' or 'list_views' by specifying it returns databases rather than tables or views.

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

Usage Guidelines3/5

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

The description implies usage context through 'List all databases in the CockroachDB cluster,' suggesting it's for inventory purposes. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_database_settings' or 'connect_database,' nor does it mention prerequisites or exclusions.

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

list_tablesA

List all tables present in the connected Cockroach database instance. This is invaluable for AI to understand the database’s landscape and identify relevant data sources for a given query.

Args: db_schema (str): Schema name (default: "public").

Returns: The list of all tables present in the connected Cockroach database.

ParametersJSON Schema
NameRequiredDescriptionDefault
db_schemaNopublic

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 states the tool lists tables, implying a read-only operation, but does not mention potential side effects, permissions needed, rate limits, or error handling. It adds some context about being 'invaluable for AI' but lacks operational details.

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 appropriately sized and front-loaded with the core purpose in the first sentence. The 'Args' and 'Returns' sections are structured but slightly verbose; the second sentence ('This is invaluable...') adds value but could be more concise. Overall, it earns its place with minimal waste.

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

Completeness4/5

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

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is fairly complete. It explains the purpose, parameter, and return value adequately. However, it lacks details on output format (e.g., structure of the list) and error cases, which would enhance completeness for a database tool.

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

Parameters5/5

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

The schema description coverage is 0%, so the description must compensate. It fully documents the single parameter (db_schema), including its type (str), default value ('public'), and purpose ('Schema name'), adding essential meaning beyond the bare input schema. This effectively covers the parameter semantics.

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

Purpose5/5

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

The description clearly states the specific action ('List all tables') and resource ('connected Cockroach database instance'), distinguishing it from sibling tools like list_databases, list_views, describe_table, and get_table_relationships. It explicitly mentions the database type and scope, providing precise differentiation.

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 clear context for when to use this tool ('to understand the database's landscape and identify relevant data sources'), but it does not explicitly state when not to use it or name specific alternatives. It implies usage for exploration without detailing exclusions or comparisons to similar tools like list_views.

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

list_viewsC

List all views in a schema.

Args: db_schema (str): Schema name (default: "public").

Returns: All views in a schema

ParametersJSON Schema
NameRequiredDescriptionDefault
db_schemaNopublic

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a 'List' operation which implies read-only behavior, but doesn't disclose important behavioral traits like whether this requires specific permissions, what happens if the schema doesn't exist, whether results are paginated, or what format the output takes. For a database tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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 appropriately sized and well-structured with clear sections for the main description, arguments, and returns. The first sentence states the core purpose clearly. However, the 'Args' and 'Returns' sections could be more efficiently integrated, and the returns statement is somewhat redundant with the main description.

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

Completeness2/5

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

Given this is a database metadata tool with no annotations, no output schema, and incomplete parameter documentation, the description is insufficient. It doesn't explain what information is returned about each view, how results are formatted, whether there are permission requirements, or what happens with non-existent schemas. For a tool that interacts with database system catalogs, more context is needed.

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

Parameters3/5

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

The description adds minimal value beyond what the input schema provides. The schema shows db_schema is a string with default 'public', and the description merely restates this with 'Schema name (default: "public")'. With 0% schema description coverage, the description doesn't compensate by explaining what a schema is, what valid values are, or providing examples. However, with only one parameter, the baseline is higher than for multi-parameter tools.

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 verb ('List') and resource ('all views in a schema'), making the purpose immediately understandable. It distinguishes itself from siblings like list_tables or list_databases by specifying 'views' rather than other database objects. However, it doesn't explicitly differentiate from other view-related tools like create_view or drop_view, which keeps it from a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when you'd want to list views versus tables, or how this differs from other metadata tools like analyze_schema or describe_table. There's no context about prerequisites or when this operation is appropriate.

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

show_running_queriesB

Show currently running queries on the cluster.

Args: node_id (int): Node ID to filter (default: 1). user (str): Username to filter (default: 'root'). min_duration (str): Minimum query duration (default: '1:0', format: 'minutes:seconds').

Returns: The queries running on the cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_durationNo1:0
node_idNo
userNoroot

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool shows running queries but lacks details on permissions needed, rate limits, whether it's read-only or has side effects, or how results are formatted. This is inadequate for a tool that interacts with cluster data.

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

Conciseness5/5

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

The description is well-structured and appropriately sized, with a clear purpose statement followed by parameter details and return information. Every sentence adds value, and it's front-loaded with the main functionality, making it efficient and easy to parse.

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

Completeness3/5

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

Given the tool's moderate complexity (3 parameters, no annotations, no output schema), the description is partially complete. It covers parameters well but lacks behavioral context and output details. It's adequate as a minimum viable description but has clear gaps in usage and transparency.

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 description adds significant value beyond the input schema, which has 0% description coverage. It explains each parameter's purpose, default values, and format for 'min_duration,' compensating well for the schema's lack of documentation. However, it doesn't clarify edge cases or parameter interactions.

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

Purpose4/5

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

The description clearly states the tool's purpose with 'Show currently running queries on the cluster,' which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_query_history' or 'analyze_performance,' which might also involve query monitoring, so it doesn't fully distinguish from 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_query_history' for past queries or 'analyze_performance' for deeper analysis, leaving the agent to infer usage context without explicit direction.

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

switch_databaseC

Switch the connection to a different database.

Args: database (str): Name of the database to switch to.

Returns: A success message or an error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions switching connections but doesn't disclose critical behavioral traits: whether this requires specific permissions, if it affects ongoing transactions/queries, what happens to the previous connection, rate limits, or error conditions beyond generic 'error message'. For a mutation tool with zero annotation coverage, this is inadequate.

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 appropriately sized and front-loaded with the core purpose in the first sentence. The Args/Returns sections are structured but slightly verbose for a single parameter; the 'Returns' line could be more concise. Overall, it's efficient with minimal waste.

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

Completeness2/5

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

Given the tool's complexity (mutating connection state), lack of annotations, no output schema, and low schema coverage, the description is incomplete. It misses essential context: side effects, permissions, error details, and relationship to sibling tools. The return value description is vague ('success message or an error message'), failing to compensate for the missing output schema.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds the parameter name 'database' and clarifies it's the 'Name of the database to switch to', providing basic semantics. However, it doesn't explain format constraints (e.g., case sensitivity, allowed characters), whether the database must exist, or provide examples—leaving gaps despite the low schema coverage.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('switch') and resource ('connection to a different database'). It distinguishes from siblings like 'connect' or 'connect_database' by focusing on changing an existing connection rather than establishing a new one. However, it doesn't explicitly differentiate from all possible alternatives like 'get_connection_status'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., must have an active connection first), when-not-to-use scenarios, or comparisons with siblings like 'connect_database' or 'list_databases'. The agent must infer usage from context alone.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 29 tool updatesv1.0.0
    • First observedanalyze_performance
    • First observedanalyze_schema
    • First observedbulk_import
    • First observedconnect
    • First observedconnect_database
    • First observedcreate_database
    • First observedcreate_index
    • First observedcreate_table
    • First observedcreate_view
    • First observeddescribe_table
    • First observeddrop_database
    • First observeddrop_index
    • First observeddrop_table
    • First observeddrop_view
    • First observedexecute_query
    • First observedexecute_transaction
    • First observedexplain_query
    • First observedget_active_connections
    • First observedget_cluster_status
    • First observedget_connection_status
    • First observedget_database_settings
    • First observedget_query_history
    • First observedget_replication_status
    • First observedget_table_relationships
    • First observedlist_databases
    • First observedlist_tables
    • First observedlist_views
    • First observedshow_running_queries
    • First observedswitch_database

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific database operations like schema management, query execution, or monitoring. However, some overlap exists between 'analyze_performance' and 'show_running_queries' (both related to query performance), and 'connect' vs 'connect_database' (both for establishing connections) could cause confusion, though descriptions help differentiate them.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as 'create_table', 'drop_index', 'list_databases', and 'get_cluster_status'. All tools use snake_case with clear action-object naming, making them predictable and easy to understand.

Tool Count3/5

With 29 tools, the count is borderline high for a database server, potentially overwhelming for agents. While it covers many aspects of CockroachDB, it might benefit from consolidation or categorization, as some tools like 'connect' and 'connect_database' could be merged to reduce redundancy.

Completeness5/5

The tool set provides comprehensive coverage for database operations, including CRUD for tables, views, indexes, and databases, along with query execution, performance analysis, monitoring, and administrative tasks. No obvious gaps are present; agents can perform full lifecycle management and troubleshooting.

Maintenance

ActivitySlowing
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/amineelkouhen/mcp-cockroachdb'

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