Skip to main content
Glama

MySQL AIops

Disclaimer: Community-maintained open-source project. Not affiliated with, endorsed by, or sponsored by Oracle Corporation or the MariaDB Foundation. "MySQL" is a trademark of Oracle Corporation; "MariaDB" is a trademark of MariaDB plc; all product/trademark names belong to their respective owners. MIT licensed.

Governed AI-ops for MySQL 8.x and MariaDB 10.6+ DBA operations — connecting to a server with PyMySQL and reading information_schema / performance_schema — with a built-in governance harness: unified audit log, token/runaway budget guard, undo-token recording, and descriptive risk-tier labels. The server flavor (mysql vs mariadb) is detected from version() and flavor-dependent statements branch automatically (SHOW REPLICA STATUS vs SHOW SLAVE STATUS).

What it does

Four flagship signature analyses, plus the guarded reads and writes around them:

  • Slow-query RCA — take the worst events_statements_summary_by_digest entry (plus an optional EXPLAIN FORMAT=JSON plan) and map its numbers — no-index share (SUM_NO_INDEX_USED), lock-time share, rows-examined/sent ratio, tmp-disk spill, call count, plan access types — to a cited cause and a concrete action. Every finding carries its measured number, not a black-box verdict.

  • InnoDB lock-wait & deadlock chain RCA — build the wait-for tree from performance_schema.data_lock_waits (MariaDB: information_schema.innodb_lock_waits), name the root blocker (blocks others, waits on none), and parse the last deadlock out of SHOW ENGINE INNODB STATUS.

  • Replication lag RCA — map the replica's IO/SQL thread state, Seconds_Behind_Source and error fields to a cited cause + action (stopped IO thread, failed applier statement, lagging applier, intentional SQL_Delay).

  • Table fragmentation analysis — rank tables by reclaimable data_free from information_schema.tables into cited OPTIMIZE TABLE candidates.

Related MCP server: postgres-aiops

What works

  • CLI (mysql-aiops ...): init, overview, server, activity, query, index, table, repl, analyze, remediate, secret, doctor, mcp.

  • MCP server (mysql-aiops mcp or mysql-aiops-mcp): 35 tools (26 read, 9 write), every one wrapped with the bundled @governed_tool harness.

  • Encrypted credentials: the account password lives in an encrypted store ~/.mysql-aiops/secrets.enc (Fernet + scrypt) — never plaintext on disk. Unlock with a master password from MYSQL_AIOPS_MASTER_PASSWORD (MCP/CI) or an interactive prompt (CLI).

  • Reversibility: mutating writes fetch the real before-state first and record a faithful inverse — create_indexdrop_index; drop_index captures the index definition out of SHOW CREATE TABLE so undo recreates it exactly; set_global_variable captures the prior value from SHOW GLOBAL VARIABLES so undo sets it back. Irreversible ops (kill_session, kill_query, optimize_table, analyze_table, reset_query_stats) record prior state for audit but declare no undo.

  • Safety: every state-changing CLI op supports --dry-run and requires double confirmation; every write MCP tool takes a dry_run preview. All identifiers that cannot be parameterised (schema/table/index/column/variable names) are validated against a strict charset and backtick-quoted; all values are bound query parameters.

What this tool does, and does not, decide

It delivers MySQL / MariaDB DBA operations — reads and writes — accurately and efficiently, and records every one of them. It does not decide whether a write is allowed to happen. That is the agent's judgement, or the permission of the account you connect it with: point it at a MySQL/MariaDB account granted only SELECT / PROCESS / REPLICATION CLIENT and no write privileges (no INSERT/UPDATE/DELETE/DDL), and the writes fail at the server — the place that actually owns the permission.

So there is no read-only switch, no policy file, no approval gate to configure. The one thing the tool guarantees is that nothing is silent: every call, over MCP and over the CLI alike, lands an audit row in ~/.mysql-aiops/audit.db, and destructive writes still capture their before-state and record an inverse where one exists.

Each tool declares a risk_level, carried into the audit row as a descriptive tier (none/confirm/review) — so a reviewer can see at a glance that a row was a high-risk delete. It is a label, not a gate.

Running a smaller / local model? See agent-guardrails.md — it lists the guardrails this tool now enforces for you (so you don't spend prompt budget restating them) and gives a ready-made system prompt for what's left.

Capability matrix (35 MCP tools)

Domain

Tools

Count

R/W

Overview

overview

1

read

Server

server_version, show_variables, show_status, list_databases, list_engines, connection_stats

6

read

Activity

list_sessions, long_running_queries, list_transactions, lock_waits

4

read

Queries

top_queries, explain_query

2

read

Indexes

unused_indexes, redundant_indexes, index_stats

3

read

Tables

table_sizes, table_fragmentation, table_status

3

read

Replication

replica_status, binlog_status

2

read

Analysis (flagship)

slow_query_rca, lock_wait_rca, replication_lag_rca, fragmentation_analysis

4

read

Writes

kill_session, kill_query, drop_index

3

write (high)

optimize_table, analyze_table, create_index, set_global_variable, reset_query_stats

5

write (medium)

Undo

undo_list, undo_apply

2

read / write

The flagship analyses accept injected records for pure/offline analysis, or pull live from a configured target. top_queries/slow_query_rca require performance_schema=ON; the read account should have PROCESS, REPLICATION CLIENT and SELECT on performance_schema.

Support scope

Platform

Status

MySQL 8.0 / 8.4

targeted (SHOW REPLICA STATUS, performance_schema.data_lock_waits)

MariaDB 10.6+ / 11.x

targeted (SHOW SLAVE STATUS, information_schema.innodb_lock_waits)

MySQL 5.7 and older

not targeted (EOL; pre-8.0 digest/lock views untested)

Cloud-managed MySQL (RDS/Aurora/Cloud SQL flavors)

wire-compatible reads should work; managed restrictions (KILL, SET GLOBAL) apply — untested

Quick start

As a Claude Code plugin

One install gives an agent both the skill and the MCP server:

/plugin marketplace add AIops-tools/marketplace
/plugin install mysql-aiops@aiops-tools

The MCP server is fetched with uv and pinned to the package version this plugin declares, so an audit row can be traced back to the code that wrote it. Credentials are still configured with mysql-aiops init — see below.

As a CLI or standalone MCP server

uv tool install mysql-aiops             # or: pipx install mysql-aiops
mysql-aiops init                        # wizard: add a target + store the password (encrypted)
mysql-aiops doctor                      # verify config, secrets, connectivity, flavor, perf-schema
mysql-aiops overview                    # one-shot server health snapshot
mysql-aiops analyze slow-query          # RCA the worst statement digest
mysql-aiops analyze fragmentation       # OPTIMIZE TABLE candidates

Run as an MCP server (stdio):

export MYSQL_AIOPS_MASTER_PASSWORD=...  # unlock secrets non-interactively
mysql-aiops-mcp

Claude Desktop / MCP client config:

{
  "mcpServers": {
    "mysql-aiops": {
      "command": "uvx",
      "args": ["--from", "mysql-aiops", "mysql-aiops-mcp"],
      "env": { "MYSQL_AIOPS_MASTER_PASSWORD": "your-master-password" }
    }
  }
}

Env-block caveat: the env block above is the only environment the MCP server sees — GUI-launched clients do not inherit your shell profile. Put MYSQL_AIOPS_MASTER_PASSWORD (and MYSQL_AIOPS_HOME / MYSQL_AUDIT_APPROVED_BY if you use them) there, or the server cannot unlock the secret store.

Governance

Every MCP tool passes through the bundled @governed_tool harness:

  • Audit — every call (params, result, status, duration, risk tier, and any operator-supplied approver/rationale) is logged to ~/.mysql-aiops/audit.db (relocatable via MYSQL_AIOPS_HOME). The CLI writes the same row the MCP path does — there is no unaudited entry point.

  • Runaway guard — a safety backstop, not an authorization gate: the same call hammered in a tight loop trips a circuit breaker. Disable with MYSQL_RUNAWAY_MAX=0; optional hard ceilings via MYSQL_MAX_TOOL_CALLS / MYSQL_MAX_TOOL_SECONDS.

  • Undo recording — reversible writes record an inverse descriptor built from the fetched before-state.

  • Risk tier — a descriptive label on the audit row derived from risk_level; it gates nothing.

Scope

This is the MySQL / MariaDB DBA-ops member of the AIops-tools family (governed AI-ops with audit + budget + undo + risk tiers). Do NOT use it for PostgreSQL — use postgres-aiops. Do NOT use it for OT / industrial edge — see the separate industrial-aiops line — nor for application-schema migrations or ORM management.

Missing a capability?

Coverage is intentionally a curated subset of MySQL's catalogs and maintenance surface. Missing a view, a metric, or a maintenance command? Open an issue or PR — contributions welcome. 缺功能提 issue/PR 欢迎留言。

Verification status

Live-verified against MySQL 8.4.10 and MariaDB 11.8.8 (2026-07-19/20). Connectivity, the reads, analyze slow-query on genuine full scans, and the full governance loop (real create_index → audit row → undo actually dropping it) were exercised against a real server. That run found and fixed a real bug the mock suite could not see: SUM() aggregates come back as Decimal, which is not JSON serializable.

The MariaDB branch is now verified too, including analyze lock-waits against real row contention (it correctly identified the root blocker and the measured wait). Replication against a real replica remains unverified.

docs/VERIFICATION.md records exactly what was checked and what is still open. mysql-aiops doctor is the fastest live check (connectivity, flavor, performance_schema, replica role).

Available Tools

35 tools
analyze_tableA

[WRITE][risk=medium] ANALYZE TABLE to refresh index statistics.

No undo; captures prior stats for audit. Takes a brief read lock while sampling. Pass dry_run=True to preview.

Args: table: Table name (optionally schema-qualified). dry_run: If True, preview without running. target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYes
targetNo
dry_runNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden. It discloses '[WRITE][risk=medium]', 'No undo', 'captures prior stats for audit', and 'Takes a brief read lock while sampling', all beyond what structured data provides.

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 a purpose/risk header, followed by two concise behavioral sentences and a clean Args list. Every sentence earns its place with no repetition of schema defaults.

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

Completeness5/5

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

Given no annotations and no output schema, the description covers the operation's purpose, risks, locking, preview option, and all parameters. It is a complete and self-contained specification for this 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?

Schema description coverage is 0%, but the description includes an Args list that explains all three parameters: table (optionally schema-qualified), dry_run (preview), and target (config default). This fully compensates for the missing schema descriptions.

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

Purpose5/5

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

The description opens with '[WRITE] ANALYZE TABLE to refresh index statistics', providing a specific verb and resource. This clearly distinguishes it from sibling tools like index_stats (read-only) and optimize_table (broader maintenance).

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 implies the use case (refresh index statistics) and notes a brief read lock and no undo, giving clear context. However, it does not explicitly name alternatives or exclusions, so it stops short of a full 5.

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

binlog_statusA

[READ] Binary-log configuration, GTID mode, and connected downstream replicas.

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It explicitly marks the operation as [READ], and lists the data areas (binary-log config, GTID mode, replicas). However, it does not mention permissions, output format, pagination, or error behavior. This is adequate for a simple read-only status tool but leaves 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.

Conciseness5/5

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

The description is extremely concise: one front-loaded sentence for the purpose and one for the parameter. No wasted words, perfect structure.

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

Completeness4/5

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

For a single-parameter read-only tool with no output schema, the description is largely complete. It states what the tool reads and explains the one optional parameter. It does not explain return values in detail, but that is less critical for a status tool. Overall, it is sufficient for basic use.

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 provides no description for the target parameter (0% coverage). The description fully compensates by explaining 'Target name from config; omit for the default.' This adds clear meaning to the parameter beyond the schema's type/default.

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

Purpose5/5

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

The description uses a specific verb and resource: '[READ] Binary-log configuration, GTID mode, and connected downstream replicas'. This clearly identifies what the tool does and distinguishes it from sibling tools like replica_status or show_variables.

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 does not mention prerequisites, related tools, or scenarios where this should be preferred. The only usage hint is the optional target parameter.

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

connection_statsA

[READ] Connection counters vs max_connections (exhaustion early warning).

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It includes a [READ] tag indicating read-only behavior and frames the tool as an early-warning indicator, which is useful context. However, it does not disclose what the return value looks like (e.g., raw numbers, percentages, or a threshold flag) or any pagination/error behavior, leaving a gap in behavioral transparency.

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

Conciseness5/5

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

The description is extremely concise, with a clear [READ] prefix and a substantive one-line purpose statement followed by a focused argument explanation. Every word earns its place, and the structure makes the key points immediately accessible.

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 (one optional parameter, no output schema, no annotations), the description gives the core purpose and argument. However, it omits specifics about the output format or how the 'early warning' is expressed, which could leave an agent uncertain about what to expect in the result. For a monitoring tool, a brief note on the return shape would make it fully complete.

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

Parameters4/5

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

The input schema only shows a parameter 'target' with a null default and no description. The description adds crucial meaning: it is 'Target name from config' and 'omit for the default', which clarifies both the source and optionality. Even though schema coverage is 0%, this single parameter is fully explained, compensating 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 identifies the resource 'Connection counters' and the comparison target 'max_connections', with an explicit 'early warning' purpose. It does not use a verb like 'retrieve' or 'show', but the [READ] tag and context make the action implicit. It is distinct from sibling tools focusing on queries, locks, or replication.

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 phrase 'exhaustion early warning' implies a monitoring use case, suggesting this tool is for watching connection pool exhaustion. However, there is no explicit guidance on when to use this versus other monitoring tools like lock_waits or long_running_queries, nor any exclusions or alternatives mentioned.

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

create_indexA

[WRITE][risk=medium] Create an index. Reversible: undo drops the created index.

The created (table, name) is returned so the harness records an undo that drops exactly this index. Pass dry_run=True to preview. Alternatively pass definition (a captured CREATE INDEX statement — this is how drop_index's undo descriptor replays) INSTEAD of table/columns.

Args: table: Table to index (optionally schema-qualified). Required unless definition is given. columns: Column names to index. Required unless definition is given. name: Index name (auto-generated from table+columns when omitted). unique: Create a UNIQUE index. definition: A full CREATE [UNIQUE] INDEX statement to execute verbatim (shape-validated). Mutually exclusive with table/columns. dry_run: If True, preview without creating. target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
tableNo
targetNo
uniqueNo
columnsNo
dry_runNo
definitionNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden. It discloses the write risk ('[WRITE][risk=medium]'), reversibility (undo drops the created index), the return value used for undo recording, dry-run preview behavior, and shape validation for the definition input. This is substantial behavioral transparency.

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

Conciseness4/5

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

The description is well-structured with a brief overview and sectioned Args list. It is slightly redundant ('Pass dry_run=True to preview' and then 'dry_run: If True, preview without creating') but every line generally earns its place given the parameter count.

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

Completeness4/5

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

Given no output schema, the description explains the return value (created table/name for undo) and the two invocation paths. It could add details about error handling or behavior on existing indexes, but for a creation tool with this many parameters, it is largely complete.

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

Parameters5/5

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

Schema description coverage is 0%, and the description compensates fully by detailing every parameter: table, columns, name, unique, definition, dry_run, target. It explains requirements, defaults, and mutual exclusivity, far exceeding what the bare JSON schema provides.

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

Purpose5/5

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

The description opens with a clear verb+resource statement: 'Create an index.' It distinguishes the tool's capability from siblings by explaining the two construction modes (table/columns or definition) and referencing drop_index's undo replay, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides context on when to use the table/columns path versus the definition path, notes mutual exclusivity, and mentions dry_run for preview. However, it does not explicitly contrast with sibling tools beyond referencing drop_index's undo mechanism, so usage guidance is strong but not fully explicit on alternatives.

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

drop_indexA

[WRITE][risk=high] Drop an index. Reversible: captures its definition first.

Before dropping, the exact index definition is rebuilt from SHOW CREATE TABLE so the harness records an undo that recreates it. Pass dry_run=True to preview.

Args: table: Table the index belongs to (optionally schema-qualified). name: Index name to drop. dry_run: If True, preview without dropping. target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
tableYes
targetNo
dry_runNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the write risk, high-risk label, reversibility via SHOW CREATE TABLE, undo recording, and dry_run preview. It does not discuss permissions or return values, but the core behavioral traits are clearly stated.

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 front-loaded with a risk marker and a concise purpose statement. The explanatory paragraph and Args list are structured and focused, though the wording around capturing the index definition is slightly repetitive. Overall it is efficient with no wasted sentences.

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

Completeness4/5

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

For a 4-parameter write tool with no annotations and no output schema, the description covers the essential semantic points: purpose, parameters, undo behavior, and dry-run. It could be more complete by indicating what the tool returns on success or on dry-run, but it is sufficiently complete for correct invocation.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates by explaining all four parameters: table may be schema-qualified, name is the index to drop, dry_run previews instead of dropping, and target is a config-defined default. This adds practical meaning beyond the bare schema titles.

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

Purpose5/5

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

Description states a specific verb+resource: "Drop an index." It clearly distinguishes itself from sibling tools like create_index and the various analysis/index-health tools, and adds meaningful scope by noting reversibility and dry-run preview.

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 intended use is implied by the verb "Drop an index" and is supported by dry_run guidance, but there is no explicit when-to-use or when-not-to-use versus alternatives such as redundant_indexes or unused_indexes. No exclusions or alternative tool names are given.

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

explain_queryA

[READ] Return the JSON execution plan for sql (EXPLAIN FORMAT=JSON).

The statement is planned, not executed.

Args: sql: A single SQL statement to EXPLAIN. target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes
targetNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the key behavioral trait that the statement is not executed, which is crucial for safety. However, it does not mention potential permission requirements or behavior on invalid SQL, 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.

Conciseness5/5

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

The description is concise, front-loaded with purpose, and includes a clear args section. Every sentence serves a purpose without any fluff.

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

Completeness4/5

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

Given the tool's simplicity (2 params, no output schema), the description covers the main inputs and the crucial non-execution behavior. It lacks details about the exact structure of the returned JSON or any restrictions on SQL statement types, but is reasonably complete for typical 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's documentation of 'sql' and 'target' adds essential meaning beyond the bare schema types. It explains sql as a single SQL statement and target as an optional config target, though the meaning of 'target' could be clearer.

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

Purpose5/5

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

The description clearly states the tool returns the JSON execution plan for a given SQL statement via EXPLAIN FORMAT=JSON. It uses a specific verb ('return') and resource ('JSON execution plan'), and explicitly says the statement is planned, not executed, distinguishing it from other tools that actually run queries or perform mutations.

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 obtain query plans) and implies it is safe because the statement is not executed. It does not explicitly mention alternatives or when not to use it, but the context is clear enough for an AI agent.

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

fragmentation_analysisA

[READ] Rank tables by reclaimable data_free into OPTIMIZE TABLE candidates.

Pass 'tables' (as from table_fragmentation) for pure/offline analysis, or omit to pull the worst-fragmented tables live. Each recommendation cites its numbers.

Args: tables: Injected fragmentation rows; if omitted, pulled live. limit: How many tables to pull when not injected (default 50). target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tablesNo
targetNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It marks itself as `[READ]`, describes ranking/analysis rather than mutation, and states that each recommendation cites its numbers. It also warns that live fetching occurs when `tables` is omitted, which is useful context.

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

Conciseness5/5

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

The description is 4 sentences plus a compact args list. It front-loads the core purpose, then explains modes, then parameters. No redundant or vague text.

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

Completeness4/5

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

For a tool with no output schema, it notes that recommendations cite their numbers, giving a hint about the return. It covers all parameters and usage modes. However, it doesn't detail the exact output structure or criteria for ranking beyond 'reclaimable data_free', so a 4 is warranted.

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

Parameters5/5

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

Schema description coverage is 0%, so the description compensates fully: `tables` (injected rows vs live pull), `limit` (how many tables when not injected, default 50), and `target` (config name, omit for default). Every parameter is explained with behavior and default.

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

Purpose5/5

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

The description opens with '[READ] Rank tables by reclaimable data_free into OPTIMIZE TABLE candidates,' which names a specific verb ('rank'), a resource ('tables'), and a purpose (identify OPTIMIZE TABLE candidates). It distinguishes itself from siblings like `table_fragmentation` by referencing it as a data source and `optimize_table` by stopping at candidate ranking.

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

Usage Guidelines4/5

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

It explicitly describes two invocation modes: pass `tables` (as from `table_fragmentation`) for offline analysis, or omit to pull the worst-fragmented tables live. This tells an agent when each mode is appropriate, though it doesn't explicitly list exclusions or alternatives beyond the reference to `table_fragmentation`.

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

index_statsA

[READ] Per-index column lists and cardinality (selectivity screening).

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure. It explicitly labels the operation as [READ], indicating safety, but does not mention potential performance impact, permissions, or whether it scans all indexes. The minimal disclosure is insufficient for a tool that may be invoked on large databases.

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 well-structured, with the [READ] tag leading, then a clear purpose statement, and a brief parameter explanation. Every sentence adds value without any redundancy.

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

Completeness4/5

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

The tool is simple with one optional parameter and no output schema. The description conveys what the tool returns (column lists and cardinality) and the target parameter. It does not specify return formatting or any caveats, but for a read-only diagnostic tool, this is reasonably 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 input schema has zero description coverage, but the description compensates by explaining the 'target' parameter as a target name from config that can be omitted for the default. This provides meaningful semantics beyond the schema's bare type definition.

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

Purpose5/5

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

The description clearly states the tool returns per-index column lists and cardinality, with the purpose of selectivity screening. Although it lacks an explicit verb, the [READ] prefix and specific resource (indexes) make the purpose unambiguous and distinguish it from sibling tools like unused_indexes or redundant_indexes.

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

Usage Guidelines4/5

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

The phrase 'selectivity screening' provides clear context for when this tool is appropriate, implying it is for examining index cardinality to assess selectivity. It does not explicitly list exclusions or compare to alternatives, so it stops short of a 5.

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

kill_queryA

[WRITE][risk=high] Cancel a session's running statement (KILL QUERY). No inverse.

The session stays connected; only its current statement is aborted. Captures the session's user/host/query for audit. Pass dry_run=True to preview.

Refuses this tool's own session id — the statement it would cancel is this very call. Enforced under dry_run too.

Args: session_id: Session/connection id (from list_sessions). dry_run: If True, preview without cancelling. target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
session_idYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries full burden and does exceptionally well. It discloses it's a high-risk write operation, has no inverse, keeps the session connected, captures audit info, refuses its own session id, and enforces dry_run. This far exceeds typical descriptions.

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

Conciseness5/5

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

The description is front-loaded with the purpose and risk tags, then provides necessary behavioral details and parameter documentation. Each sentence adds value, and the structure (overview, side effects, self-guard, Args) is clean and scannable.

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

Completeness4/5

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

The description is very complete, covering side effects, parameters, and safety. It lacks explicit mention of permission/authorization requirements (e.g., KILL privilege) and does not describe the return value or error conditions. Since there is no output schema, this leaves a small gap.

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?

Despite schema description coverage of 0%, the description's Args section thoroughly explains each parameter: session_id comes from list_sessions, dry_run toggles preview, and target is from config with a default. This adds significant meaning beyond the schema's titles and defaults.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb and resource: 'Cancel a session's running statement (KILL QUERY).' It also distinguishes it from related tools by noting 'The session stays connected; only its current statement is aborted,' which separates it from kill_session. The 'No inverse' note clarifies the irreversible nature.

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: it cancels a running statement without disconnecting the session, and offers a dry_run option for preview. It does not explicitly name alternatives or when-not-to-use scenarios, but the behavioral distinction is strong. Since it doesn't explicitly compare to kill_session, it stops short of a 5.

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

kill_sessionA

[WRITE][risk=high] Terminate a session (KILL CONNECTION). No safe inverse.

Captures the session's user/host/query for the audit trail; a kill cannot be undone, so no undo is offered. Pass dry_run=True to preview.

Refuses this tool's own session id — including under dry_run, which must report a refusal rather than preview a call that will be refused.

Args: session_id: Session/connection id (from list_sessions). dry_run: If True, preview without killing. target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
session_idYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully discloses the destructive nature: write operation, high risk, no safe inverse, no undo, audit trail capture, and refusal behavior even under dry_run. This is exceptionally transparent 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.

Conciseness5/5

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

The description is compact and front-loaded with the critical warning. Each sentence adds necessary information: effect, irreversibility, audit trail, dry-run behavior, refusal condition, and parameter meanings. No filler or redundancy.

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

Completeness5/5

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

For a destructive tool with no output schema and no annotations, the description covers all required aspects: what it does, side effects, safety guardrails, parameter semantics, and an important edge case. It leaves no significant behavioral question unanswered.

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

Parameters5/5

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

Schema coverage is 0%, but the description explains every parameter: session_id comes from list_sessions, dry_run previews without killing, and target is a config-based override with a default. This fully compensates for the lack of schema descriptions.

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

Purpose5/5

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

The description opens with 'Terminate a session (KILL CONNECTION)', which is a specific verb and resource, clearly distinguishing this from sibling tools like kill_query. The scope is unambiguous: it kills a database session, not a query.

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

Usage Guidelines4/5

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

It provides clear usage context: sessions come from list_sessions, dry_run=True can preview, and the tool refuses its own session id. It stops short of explicitly naming alternative tools or stating when not to use it, but the caveats and workflow guidance are strong.

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

list_databasesA

[READ] User schemas with table count and data/index size (largest first).

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.8/5.0
Behavior3/5

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

The description includes '[READ]' to indicate a read-only operation, and specifies the output includes table count and data/index sizes sorted largest first. However, without annotations, it does not disclose permission requirements, whether system schemas are excluded, or potential performance implications, leaving gaps for a tool with no annotation support.

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, front-loading the purpose in the first sentence and allocating a short line for the parameter explanation. Every word earns its place with no redundancy.

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

Completeness4/5

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

For a tool with one optional parameter and no output schema, the description covers the core purpose, output contents, ordering, and parameter semantics. Given its simplicity, it is sufficiently complete, though it could mention what 'user schemas' excludes (e.g., system schemas), but that is a minor gap.

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 provides only the name and type for the 'target' parameter with zero description coverage. The description compensates by explaining that target refers to a configured target name and omitting it uses the default, providing essential meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool lists user schemas with table count and data/index size, ordered largest first. This specific verb-resource combination distinguishes it from sibling tools like table_sizes and list_transactions.

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. The description only states what the tool does, without mentioning exclusions or related tools, leaving the agent to infer usage context.

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

list_enginesA

[READ] Storage engines and which is the default (SHOW ENGINES).

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral disclosure. It marks the operation as [READ] and equates it to SHOW ENGINES, which implies a read-only query. However, it does not address potential permission requirements, error behavior, or exact return format, leaving some gaps for a tool with no annotations.

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

Conciseness5/5

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

The description is extremely concise: two sentences containing the purpose and the argument definition. It is front-loaded with the primary action and contains no unnecessary words.

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

Completeness4/5

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

For a simple read-only tool with one optional parameter and no output schema, the description provides sufficient context: the purpose, the parameter semantics, and the read-only nature. It could mention return values or prerequisites, but for this low complexity, the description is nearly 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?

Schema description coverage is 0%, but the description compensates by explaining the 'target' parameter: it is a target name from config and can be omitted for the default. This adds meaningful semantics beyond the schema's type and default values, making the parameter clear.

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

Purpose5/5

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

Clearly states it lists storage engines and identifies the default, using the known SQL command SHOW ENGINES. The verb 'list' and resource 'storage engines' are specific, distinguishing it from sibling tools like list_transactions or list_sessions.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention any exclusions or when not to use it, and no sibling tools are referenced as alternatives for different scenarios.

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

list_sessionsA

[READ] Current sessions (processlist) with per-command counts.

Flags sleeping sessions (connection-pool leak suspects).

Args: include_sleeping: Include sessions in command=Sleep (default True). target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
include_sleepingNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explicitly marks the operation as [READ], describes per-command aggregation, and adds the behavioral nuance of flagging sleeping sessions. It doesn't disclose permissions or side effects, but for a read-only listing this is adequate.

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

Conciseness5/5

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

The description is compact and front-loaded with the [READ] tag and main purpose, followed by a brief args list. No filler or redundant repetition of schema defaults.

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

Completeness5/5

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

For a two-parameter read-only tool with no output schema, the description covers the core purpose, the key diagnostic behavior (flagging sleeping sessions), and both parameters. It is sufficiently complete for an agent to invoke it correctly without further clarification.

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 'Args' section adds plain-language explanations for both parameters (include_sleeping and target), fully compensating for the schema's lack of property descriptions. This goes beyond the bare 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 states 'Current sessions (processlist) with per-command counts' and specifically calls out flagging sleeping sessions as connection-pool leak suspects, giving a clear verb+resource+scope. This distinguishes it from sibling tools like list_transactions or lock_waits.

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

Usage Guidelines4/5

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

It clearly implies usage for diagnosing connection-pool leaks by flagging sleeping sessions, and the [READ] tag suggests safe inspection. However, it does not explicitly mention when not to use it or name alternatives.

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

list_transactionsA

[READ] Open InnoDB transactions, oldest first (stuck-transaction hunting).

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. The '[READ]' tag clearly indicates a read-only operation, and 'oldest first' discloses ordering behavior. This is meaningful transparency beyond the schema.

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, front-loaded with the read-only tag and purpose, followed by a clear parameter explanation. No wasted words.

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

Completeness4/5

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

For a simple read-only list tool with no output schema, the description covers purpose, ordering, and the parameter. It omits return field details, but this is acceptable given the straightforward nature of the operation.

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 description explains the only parameter 'target' as a config-based name with a default behavior, which adds significant meaning beyond the schema's bare type and null default.

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 reads InnoDB transactions ordered oldest first, with a specific use case (stuck-transaction hunting). This differentiates it from sibling tools like list_sessions or lock_waits.

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

Usage Guidelines4/5

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

The phrase 'stuck-transaction hunting' provides clear context for when to use this tool. It does not explicitly name alternatives or exclusion scenarios, but the intended usage is evident.

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

lock_wait_rcaA

[READ] Build the InnoDB wait-for tree, name the root blocker, and parse the last deadlock out of SHOW ENGINE INNODB STATUS.

Pass 'pairs' (as from lock_waits) for pure/offline analysis, or omit to pull the current lock-wait graph live.

Args: pairs: Injected lock-wait pairs {blockedId, blockingId, ...}; if omitted, pulled live (flavor-branched). include_deadlock: Also parse the LATEST DETECTED DEADLOCK section from SHOW ENGINE INNODB STATUS (default True). target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
pairsNo
targetNo
include_deadlockNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It starts with '[READ]', clearly indicating a read-only operation. It explains the core behavior (build wait-for tree, identify root blocker, parse deadlock) and notes that the live path is 'flavor-branched'. It does not disclose return format or edge cases, but the main behaviors are transparent.

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 concise purpose sentence, usage guidance, and an Args section. It is not overly verbose, but the Args block repeats some default values already in the schema. Overall, it is efficient and front-loaded.

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

Completeness4/5

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

Given the tool's complexity (deadlock analysis) and lack of output schema, the description explains the inputs and high-level output expectations ('name the root blocker, parse the last deadlock'). It does not detail the response structure, but it provides enough for an agent to select and invoke the tool correctly. Sibling context helps establish its role.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. The 'Args' section explains all three parameters: pairs (injected lock-wait pairs, omitted for live), include_deadlock (parse deadlock, default True), and target (target name, omit for default). This goes beyond the schema's bare types and defaults, providing crucial meaning for invocation.

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

Purpose5/5

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

The description clearly states the tool's function: 'Build the InnoDB wait-for tree, name the root blocker, and parse the last deadlock out of SHOW ENGINE INNODB STATUS.' This specifies the verb (build, name, parse) and the resource (InnoDB wait-for tree and deadlock). It is distinct from sibling tools like lock_waits, which only list waits.

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 on when to use it: 'Pass pairs (as from lock_waits) for pure/offline analysis, or omit to pull the current lock-wait graph live.' This explains the two modes and references a sibling tool. However, it does not explicitly state when not to use it or name alternative tools for comparison.

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

lock_waitsA

[READ] InnoDB wait-for edges (blocked session -> blocking session).

Reads performance_schema.data_lock_waits on MySQL 8.x, or information_schema.innodb_lock_waits on MariaDB (flavor-branched).

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden of disclosing safety. It explicitly marks the operation as a read and identifies the underlying system tables for MySQL and MariaDB, adding valuable behavioral context about flavor-branching. It does not cover possible output size or permissions, but the read-only nature is clear.

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

Conciseness5/5

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

At just three lines, every sentence is informative. The [READ] prefix and source-table details are front-loaded, with no filler or repetition.

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

Completeness4/5

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

For a simple read tool with one optional parameter, the description covers purpose, sources, and parameter meaning. It lacks an explicit return-format description, but that may be self-evident from the name and content, and the sibling tools fill in broader 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 provides only a default null, but the description explains 'target' as a target name from config and says to omit for default, giving it practical meaning beyond the schema. With a single parameter, this is sufficient.

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

Purpose5/5

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

The description opens with '[READ]' and states 'InnoDB wait-for edges (blocked session -> blocking session)', clearly identifying the tool as a read-only resource for lock-wait relationships. This distinguishes it from sibling tools like lock_wait_rca, which provides analysis rather than raw data.

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 inspecting lock-wait dependencies but does not explicitly state when to choose this over lock_wait_rca or list_transactions. No exclusion criteria or alternative references are given, leaving usage context mostly inferred.

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

long_running_queriesA

[READ] Active statements running at least min_seconds, oldest first.

Args: min_seconds: Minimum age in seconds (default 60). target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
min_secondsNo

TDQS

A4.1/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 transparency burden. It discloses the read-only nature via '[READ]', the filtering by min_seconds, and the time ordering. However, it does not mention details such as result fields, whether all schemas/users are included, performance impact, or behavior when no queries match—leaving gaps in behavioral disclosure.

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

Conciseness5/5

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

The description is exceptionally concise, with a one-sentence summary followed by a minimal Args list. Every sentence is necessary and informative, with no redundant content. It is well-structured and front-loaded.

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

Completeness4/5

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

For a simple read-only tool with two optional parameters, the description covers the core behavior and parameter semantics adequately. The only notable gap is the lack of any mention of return format or output fields, but given the absence of an output schema and the tool's low complexity, this is a minor omission.

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 input schema has no descriptions (0% coverage), but the description's Args section explicitly defines both parameters: min_seconds as 'Minimum age in seconds' and target as 'Target name from config; omit for the default.' This adds essential semantic value and fully compensates for the schema's lack of explanatory text.

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

Purpose5/5

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

The description states exactly what the tool does: it lists active statements running at least `min_seconds`, ordered oldest first. The specific verb (implied 'list') and resource ('active statements') with clear criteria distinguish it from siblings like top_queries or list_sessions, even without naming alternatives.

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

Usage Guidelines3/5

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

The description implies when to use this tool (when you need to see active long-running statements) but gives no explicit guidance on when to prefer it over similar tools such as top_queries or slow_query_rca. No exclusions or alternatives are mentioned, making the usage context clear but not fully explicit.

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

optimize_tableA

[WRITE][risk=medium] OPTIMIZE TABLE (rebuild, reclaim data_free). Records prior stats.

No undo (a rebuild has no inverse); the prior size/fragmentation stats are captured for the audit trail. InnoDB maps this to ALTER TABLE ... FORCE (online DDL, brief locks) — schedule off-peak for hot tables. Pass dry_run=True to preview.

Args: table: Table name (optionally schema-qualified, e.g. shop.orders). dry_run: If True, preview without running. target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYes
targetNo
dry_runNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses the write nature, no-undo risk, audit trail of prior stats, InnoDB mapping to ALTER TABLE ... FORCE, and brief locks. This is exemplary 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 concise, front-loaded with purpose and risk, and uses a clear Args block. Every sentence adds value without filler or redundancy.

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

Completeness4/5

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

The description covers operation, caveats, and parameters well. It falls just short of being complete by not specifying the return value or success message, but given no output schema this is a minor gap for a write 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?

Schema description coverage is 0%, but the Args section thoroughly explains every parameter: table format with schema qualification, dry_run semantics, and target default. It fully compensates for the missing schema coverage.

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

Purpose5/5

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

Description clearly states 'OPTIMIZE TABLE (rebuild, reclaim data_free)' with specific action and resource, distinguishing it from read-only analysis tools like table_fragmentation. The purpose is unambiguous and not a tautology.

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

Usage Guidelines4/5

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

Provides clear context: schedule off-peak for hot tables, use dry_run to preview, and notes the online DDL lock behavior. It does not explicitly name alternative tools for pure analysis, but the guidance is sufficient for correct usage.

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

overviewA

[READ] One-shot server health snapshot.

Version + flavor (mysql/mariadb) + uptime, connection headroom vs max_connections, sessions by command, the longest-running query, the most fragmented table, and the replica role — each section captured defensively so one failing probe does not sink the rest.

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.5/5.0
Behavior4/5

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

The description starts with '[READ]', disclosing the read-only nature, and states that sections are 'captured defensively so one failing probe does not sink the rest,' which reveals error-isolation behavior. Since no annotations are provided, this is valuable, though it doesn't cover permissions or performance impact.

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

Conciseness5/5

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

The description is compact and well-structured: a one-line summary, a list of included sections, a note on error handling, and a parameter explanation. Every sentence provides useful information without redundancy.

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

Completeness4/5

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

Given the tool's multi-metric scope and the absence of an output schema, the description adequately lists the expected sections and hints at partial data via the defensive-capture note. It could be more explicit about the overall output structure, but the key information is present.

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 only defines 'target' as a string/null with default null and no description (coverage 0%). The description's Args section explains 'Target name from config; omit for the default,' fully clarifying the parameter's meaning and default behavior, thereby compensating for the schema gap.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'One-shot server health snapshot' and lists the specific metrics it captures (version, flavor, uptime, connection headroom, sessions, longest query, fragmented table, replica role). This distinguishes it from sibling tools that focus on individual metrics.

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 establishes a clear context: use it for a quick, broad health check ('One-shot server health snapshot'). However, it does not explicitly mention when to prefer this over sibling tools or any exclusions, so it lacks explicit alternatives.

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

redundant_indexesA

[READ] Indexes whose columns are a leading prefix of another index (dupes).

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

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 includes a '[READ]' prefix indicating a non-destructive operation and states what the tool identifies. However, it does not disclose potential side effects, performance costs, or output format, though for a read-only diagnostic this is partially mitigated.

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

Conciseness5/5

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

The description is concise and front-loaded with the [READ] tag. It gives a one-sentence definition of the output and a minimal parameter explanation with no unnecessary words.

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

Completeness4/5

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

The tool is simple with one optional parameter and no output schema. The description explains what it returns (redundant indexes) and how to use the parameter, which is adequate for an agent to invoke it correctly. It could mention whether results include table names or DDL statements, but that is not critical.

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 for 'target' gives no description beyond type and default. The tool description compensates by explaining that target is a config name and is optional, adding meaningful context. With only one parameter and 0% schema coverage, this is sufficient.

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 defines the tool's purpose: it identifies indexes whose columns are a leading prefix of another index (duplicates). This distinguishes it from siblings like unused_indexes or index_stats. However, it lacks an explicit verb such as 'list' or 'find', so it is clear but not perfectly formatted.

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 unused_indexes or index_stats. It only explains the target parameter, with no mention of exclusions, prerequisites, or recommended use cases.

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

replica_statusA

[READ] Replica thread state and lag (SHOW REPLICA/SLAVE STATUS, flavor-branched).

Empty on a primary/standalone server. MySQL 8.x uses SHOW REPLICA STATUS; MariaDB uses SHOW SLAVE STATUS — the result is normalised either way.

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it prefixes with [READ], explains the flavor branching between MySQL 8.x and MariaDB, and notes normalization. It lacks details on permissions or rate limits, but for a status read these are less critical.

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

Conciseness5/5

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

The description is concise: front-loaded with the [READ] tag and purpose, followed by a short caveat, flavor explanation, and parameter docs. Every sentence contributes, with no fluff.

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

Completeness4/5

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

The description covers purpose, behavior, and parameters, including the primary/standalone caveat. It does not describe the return structure or field details, but given the absence of an output schema and the tool's simplicity, the coverage is reasonably 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 only parameter 'target' is explained as 'Target name from config; omit for the default.' This fully compensates for the schema's 0% description coverage, though it is terse and assumes familiarity with config.

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 reads replica thread state and lag, referencing SHOW REPLICA/SLAVE STATUS. It distinguishes itself from siblings by focusing specifically on replica status and noting flavor-branched behavior.

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

Usage Guidelines3/5

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

The description provides context that the result is empty on a primary/standalone server, implying it is for replicas. However, it does not explicitly mention when to use this tool over alternatives like replication_lag_rca, making usage guidance somewhat implicit.

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

replication_lag_rcaA

[READ] Map replica thread state / lag / error fields to cause + action.

Pass 'status' (as from replica_status) for pure/offline analysis, or omit to pull the live replica status (flavor-branched).

Args: status: Injected replica status record; if omitted, pulled live. target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
targetNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden. It begins with '[READ]' signaling a non-mutating operation and explains the offline vs. live pull behavior, including 'flavor-branched' logic. This adds meaningful context beyond the schema, though it does not detail return format or error scenarios.

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

Conciseness5/5

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

The description is concise and well-structured: a one-line summary, a brief usage note, then a clear argument list. No wasted words; every sentence earns its place. The slight redundancy of describing 'status' twice is minor and does not detract.

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

Completeness4/5

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

Given the tool's complexity and absence of an output schema, the description covers the input modes and parameter semantics thoroughly. However, it does not describe the format of the 'cause + action' output, which would be helpful for an RCA tool. Otherwise, it is quite complete.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by explaining both parameters: 'status' is an injected replica status record (optional), and 'target' is a config-based target name (optional with default). This gives clear semantic meaning beyond the raw schema types.

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

Purpose5/5

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

The description uses a specific verb 'Map' with a clear resource: replica thread state/lag/error fields to cause+action. This distinguishes it from sibling tools like replica_status (which retrieves status) and other RCA tools (slow_query_rca, lock_wait_rca) focused on different domains.

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

Usage Guidelines4/5

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

The description explicitly explains two usage modes: passing a status from replica_status for offline analysis, or omitting it to fetch live replica status. This gives clear contextual guidance, though it does not explicitly exclude alternatives or state when to prefer this tool over sibling RCA tools.

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

reset_query_statsA

[WRITE][risk=medium] Reset statement-digest accumulators (irreversible).

Truncates performance_schema.events_statements_summary_by_digest; the counters cannot be restored, so no undo is recorded. Pass dry_run=True to preview.

Args: dry_run: If True, preview without resetting. target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses that the operation is a WRITE with medium risk, irreversible, truncates a specific internal table, and that no undo is recorded. It also mentions the dry_run preview option. This is exemplary behavioral disclosure.

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

Conciseness5/5

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

The description is compact and front-loaded with the [WRITE] and risk/irreversibility warnings. It uses a short paragraph plus Args list; no wasted words. Every sentence adds value.

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

Completeness5/5

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

Given no annotations and no output schema, the description explains the operation's effect, irreversibility, the dry-run option, and both parameters. It is complete enough for an agent to invoke the tool safely and correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must explain parameters. It does so for both: dry_run ('If True, preview without resetting') and target ('Target name from config; omit for the default'). This fully compensates for the schema gap.

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

Purpose5/5

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

The description states a specific verb ('Reset') and a specific resource ('statement-digest accumulators'), with an immediate note that it truncates performance_schema.events_statements_summary_by_digest. This clearly distinguishes it from sibling tools like kill_session or set_global_variable.

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

Usage Guidelines4/5

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

The description clearly communicates irreversible side effects and recommends dry_run=True for preview, which is valuable usage guidance. However, it does not explicitly state when to use this tool versus alternatives (e.g., when you need to clear aggregated query statistics), though the context makes it evident.

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

server_versionA

[READ] Server version, flavor (mysql/mariadb), uptime and read-only state.

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.7/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. The [READ] prefix indicates a safe, non-mutating operation, which is valuable. However, it does not disclose potential failure modes, output format, or security/permission requirements, leaving gaps in behavioral transparency.

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

Conciseness5/5

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

The description is extremely concise, with a clear first line stating purpose and a compact parameter note. Every sentence adds value, and the [READ] prefix is an efficient behavioral cue. No redundancy or fluff.

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

Completeness3/5

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

The tool is simple with one optional parameter and no output schema. The description lists the returned data fields, which is helpful, but it does not explain the return format (e.g., object keys) or provide context about the target instance. For a basic info tool, this is adequate but has room to add more 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?

Schema description coverage is 0%, so the description must compensate. It does so by explaining that 'target' is a name from config and can be omitted for the default, adding meaning beyond the schema's raw type. Though brief, it clarifies the only parameter's role.

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 a specific resource ('server') and the exact data it returns: version, flavor (mysql/mariadb), uptime, and read-only state. The [READ] prefix reinforces it as a read operation. This distinguishes it from sibling diagnostic tools by listing its specific output.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus siblings such as 'show_variables' or 'overview'. The parameter explanation ('target: Target name from config; omit for the default') is useful for invoking the tool but not for choosing it. No exclusions or alternative recommendations are provided.

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

set_global_variableA

[WRITE][risk=medium] SET GLOBAL a server variable. Reversible: captures prior value.

Runtime-only: the change does not survive a restart (persist it in my.cnf — or SET PERSIST on MySQL 8 — yourself); reported but NOT performed automatically. The prior value (from SHOW GLOBAL VARIABLES) is captured so the harness records an undo that sets it back. Pass dry_run=True to preview.

Refuses the globals that would lock this tool out of the server (init_connect, max_connections, max_user_connections, read_only, super_read_only, skip_networking, require_secure_transport, and wait_timeout/interactive_timeout below 30s). SET GLOBAL is immediate, so those strand the undo. Enforced under dry_run too.

Args: name: The global variable name (e.g. max_connections). value: The new value (as a string). dry_run: If True, preview without changing. target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes
targetNo
dry_runNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries full disclosure responsibility. It covers the write nature, risk level, reversibility, immediate SET GLOBAL effect, runtime-only persistence, refusal of dangerous variables, and undo behavior. It also explains that dry_run enforces the same safety checks. This is exemplary transparency.

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

Conciseness4/5

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

The description is well-structured with a tag, one-liner, behavior details, refusal list, and Args. It is longer than necessary but every sentence adds value, and the key information is front-loaded. Slight verbosity keeps it from a 5.

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

Completeness5/5

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

Given no annotations and no output schema, the description is remarkably complete. It covers safety, reversibility, persistence, parameter semantics, and edge cases. For a write tool, this is thorough enough for an agent to invoke correctly and understand the consequences.

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

Parameters5/5

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

Schema description coverage is 0%, so the description's Args section compensates fully. It explains each parameter: name gives an example, value specifies the type, dry_run explains the preview behavior, and target clarifies config usage. This meets the parameter semantics need completely.

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

Purpose5/5

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

The description states the precise action: "[WRITE][risk=medium] SET GLOBAL a server variable." This is a specific verb and resource, clearly distinguishing it from read-only sibling tools like show_variables or list_sessions. The purpose is unambiguous and immediately understandable.

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 usage context: it warns about runtime-only persistence, recommends dry_run for preview, and explicitly lists refused globals to prevent lockout. It does not name alternative tools for comparison, but it gives enough context to know when to use this tool and its limitations.

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

show_statusA

[READ] Global status counters (SHOW GLOBAL STATUS).

Args: pattern: Optional substring to filter counter names (e.g. 'Threads', 'Innodb_buffer_pool'). target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
patternNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It explicitly begins with [READ], indicating a read-only operation, and references the SQL command SHOW GLOBAL STATUS. However, it does not disclose return format, potential performance impact, or privilege requirements.

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

Conciseness5/5

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

The description is brief and front-loaded with [READ] and the core purpose. The Args section is cleanly structured, and every sentence adds value without redundant information.

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

Completeness3/5

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

While the tool is simple, the description does not specify the return format (e.g., list of name-value pairs) or any limitations (e.g., pattern matching behavior). It gives enough to start but lacks details that would help a complete 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 coverage is 0%, so the description compensates by explaining both parameters. It clarifies pattern as an optional substring filter with examples, and target as a config name with a 'default' fallback. This adds meaningful detail beyond the schema.

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

Purpose5/5

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

The description clearly states the tool shows global status counters (SHOW GLOBAL STATUS), using a specific verb and resource. It is distinctly different from siblings like show_variables or connection_stats.

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 explains how to use arguments (pattern, target) but gives no guidance on when to choose this tool over alternatives. No exclusions or comparison with sibling tools are provided.

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

show_variablesA

[READ] Global variables (SHOW GLOBAL VARIABLES).

Args: pattern: Optional substring to filter variable names (e.g. 'innodb_buffer', 'max_connections'). target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
patternNo

TDQS

A3.7/5.0
Behavior3/5

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

The description explicitly labels the operation as '[READ]', which is a critical behavioral disclosure. Since no annotations are provided, this serves as the primary safety signal. However, it does not disclose other behaviors that might be relevant, such as whether the read is from a live connection, whether the returned variables are system-wide (not session), or any potential performance implications. It adds context beyond the bare tool name but leaves gaps.

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 remarkably concise: a one-line purpose, then a compact Args list. Every line earns its place. The '[READ]' prefix front-loads the most critical behavioral fact. No filler or redundant text.

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

Completeness4/5

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

For a simple read-only listing tool with no output schema and no annotations, the description covers purpose, read-only nature, and parameter details sufficiently. It is missing a note on the return format (e.g., a list of key-value pairs), which an agent might need to interpret results, but this gap is not critical for a straightforward SHOW GLOBAL VARIABLES. The lack of guidance on when to use vs 'show_status' slightly reduces completeness.

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 input schema only provides types and titles for 'pattern' and 'target'. The description adds substantial meaning: it explains 'pattern' as an optional substring filter with concrete examples ('innodb_buffer', 'max_connections'), and explains 'target' as a config-based target name with a note to omit for the default. This fully compensates for the low schema description 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 states a clear action and resource: '[READ] Global variables (SHOW GLOBAL VARIABLES)'. This is specific and aligns with the tool name. However, it does not explicitly contrast itself with the sibling tool 'show_status', which could be confused by an AI agent. The purpose is clear on its own, but lacks sibling differentiation.

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 parameter-level usage instructions (how to use 'pattern' and 'target') but gives no guidance on when to choose this tool over alternatives like 'show_status' or 'set_global_variable'. There is no explicit context or exclusions, leaving the agent to infer appropriate usage from the tool name and purpose.

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

slow_query_rcaA

[READ] RCA for the worst statement digest, with cause + action.

Picks the digest with the greatest total time and maps its numbers (no-index share, lock-time share, examined/sent ratio, tmp-disk spill, calls) — plus an optional EXPLAIN plan — to cited causes and concrete actions. Pass 'statements' for pure/offline analysis, or omit to pull the top digests live from performance_schema.

Args: statements: Injected digest rows (as from top_queries); if omitted, the worst statements are pulled live. explain_sql: Optional SQL to EXPLAIN so plan access types feed the RCA. limit: How many statements to pull when not injected (default 20). target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo
statementsNo
explain_sqlNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It starts with '[READ]' indicating a read-only operation, and explains the live vs offline data source behavior ('pulled live from performance_schema'). It also discloses the selection algorithm (picks greatest total time) and how EXPLAIN feeds the RCA, providing substantial behavioral insight.

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 a concise summary ('[READ] RCA for the worst statement digest, with cause + action'), followed by a brief explanatory paragraph and a structured Args list. Every sentence adds value, and the length is appropriate for the parameter complexity.

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

Completeness5/5

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

The tool has 4 optional parameters, no annotations, and no output schema, but the description explains the input modes, selection criteria, and output type ('cited causes and concrete actions'). It provides enough context for an agent to invoke the tool correctly, including how to do offline analysis and how to use EXPLAIN.

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 has zero property descriptions, but the description includes a dedicated 'Args' section that explains all four parameters. For example, 'statements: Injected digest rows (as from top_queries); if omitted, the worst statements are pulled live' adds meaning beyond the bare schema. This fully compensates for the schema coverage gap.

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

Purpose5/5

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

The description explicitly states 'RCA for the worst statement digest, with cause + action' and elaborates that it picks the digest with greatest total time and maps metrics to cited causes and actions. This clearly distinguishes it from sibling RCA tools like lock_wait_rca and replication_lag_rca, which focus on different resources (lock waits, replication lag).

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: for root cause analysis of the slowest statement digest. It also gives specific mode guidance: 'Pass statements for pure/offline analysis, or omit to pull the top digests live from performance_schema.' However, it does not explicitly list alternative tools or exclusion criteria beyond this.

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

table_fragmentationA

[READ] data_free per table (space OPTIMIZE TABLE could reclaim), worst first.

Args: limit: Number of tables to inspect (default 50). target: Target name from config; omit for the default.

Returns an envelope: {"tables": [...], "returned": N, "limit": L, "truncated": bool}. When "truncated" is true there is more beyond what was returned — re-run with a higher limit rather than treating this as the complete picture.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It provides the return envelope structure, explains the 'truncated' flag, and notes that data_free represents reclaimable space for OPTIMIZE TABLE. The [READ] prefix signals read-only intent, but permissions are not addressed.

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

Conciseness4/5

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

The description is well-structured with a summary line, Args section, and Returns section. It front-loads the core purpose and includes important behavioral notes about the envelope and truncation behavior. It is longer than two sentences, but each part contributes necessary information.

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

Completeness4/5

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

Given the absence of an output schema, the description thoroughly explains the return envelope and the meaning of 'truncated'. It covers parameters and the operation's goal. A minor gap is the exact structure of entries within 'tables', but overall it is sufficient for a diagnostic tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It defines 'limit' as 'Number of tables to inspect (default 50)' and 'target' as 'Target name from config; omit for the default,' adding meaningful semantics beyond the bare schema types. The description of 'target' could be slightly more detailed, but it is functional.

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?

[READ] data_free per table (space OPTIMIZE TABLE could reclaim), worst first.' clearly identifies the tool's resource and metric. It is specific and informative, but it doesn't explicitly distinguish from sibling 'fragmentation_analysis', which might serve a similar diagnostic purpose.

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 lacks explicit guidance on when to choose this tool over alternatives. While it includes a useful note about the 'truncated' field and re-running with a higher limit, that is about result interpretation rather than tool selection.

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

table_sizesA

[READ] Largest tables by data + index size.

Args: limit: Number of tables to return, largest first (default 20). target: Target name from config; omit for the default.

Returns an envelope: {"tables": [...], "returned": N, "limit": L, "truncated": bool}. When "truncated" is true there is more beyond what was returned — re-run with a higher limit rather than treating this as the complete picture.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it effectively discloses the read-only nature via '[READ]' and the truncation behavior with specific instructions to re-run with a higher limit. This is valuable context beyond the schema. It doesn't mention permissions or exact source of sizes, but the transparency is strong.

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

Conciseness5/5

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

The description is concise and well-structured: a clear one-line summary, followed by labeled Args and Returns sections. Every sentence provides useful information, and there is no unnecessary verbosity.

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

Completeness5/5

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

Given the low complexity (two optional parameters), lack of annotations, and absence of an output schema, the description is complete. It explains the return envelope, the 'truncated' flag, and how to handle pagination, which is sufficient for an agent to use the tool correctly.

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 input schema has zero parameter descriptions (0% coverage), but the description fully explains both parameters: 'limit' specifies count and ordering, and 'target' is clarified as a config name with a default. This compensates completely for the absence of schema descriptions.

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

Purpose4/5

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

The description clearly states the tool returns the largest tables by data and index size, which is a specific resource and scope. However, it lacks an explicit verb like 'list' or 'get', and does not distinguish itself from sibling tools like table_fragmentation or index_stats, so it doesn't fully meet the top criteria.

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 intended usage is implied by the purpose: use this tool to see the largest tables by size. However, there is no explicit guidance on when to use this versus alternatives, no exclusions, and no mention of alternative tools, so it only meets the 'implied usage' level.

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

table_statusA

[READ] Per-table engine, row format, row estimate and last update time.

Flags non-InnoDB tables (no row-level locking / crash recovery).

Args: limit: Number of tables to inspect (default 50). target: Target name from config; omit for the default.

Returns an envelope: {"tables": [...], "returned": N, "limit": L, "truncated": bool}. When "truncated" is true there is more beyond what was returned — re-run with a higher limit rather than treating this as the complete picture.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It does an excellent job by explicitly marking the operation as '[READ]', explaining the non-InnoDB flag's significance, and detailing the return envelope including the 'truncated' boolean and the instruction to re-run with a higher limit. This goes well beyond basic parameter listings.

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

Conciseness5/5

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

The description is well-structured with separate sections for the operation, additional context, arguments, and return format. It is concise, each sentence adds value, and the essential information is front-loaded with the [READ] marker and the core purpose.

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

Completeness5/5

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

Despite lacking an output schema, the description fully documents the return envelope and truncation behavior, making the tool's behavior predictable. All parameters are explained, and the read-only nature is disclosed. This is complete for a status inspection tool with two optional parameters.

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

Parameters4/5

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

The input schema provides only types and defaults for limit and target with zero description coverage. The description compensates by explaining that limit is the number of tables to inspect (default 50) and target is the config target name (default null), giving the agent the necessary semantic context to invoke the tool correctly.

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 begins with '[READ]' and clearly states the tool returns per-table engine, row format, row estimate, and last update time. This specific resource and attribute set distinguishes it from sibling tools like table_sizes or fragmentation_analysis, which cover different table properties.

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

Usage Guidelines4/5

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

It provides clear context for when to use the tool (to inspect table engine/row format and identify non-InnoDB tables), and it explains the limit/truncation behavior so users know to increase limit when truncated. However, it does not explicitly compare itself to sibling tools or state when not to use it.

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

top_queriesA

[READ] Top statement digests from performance_schema by a whitelisted metric.

Args: order_by: One of total_time, mean_time, calls, rows_examined, lock_time, no_index. limit: Number of statements to return (1..200, default 20). target: Target name from config; omit for the default.

Returns an envelope: {"statements": [...], "returned": N, "limit": L, "truncated": bool}. When "truncated" is true there is more beyond what was returned — re-run with a higher limit rather than treating this as the complete picture.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo
order_byNototal_time

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It labels itself '[READ]', documents the return envelope including the 'truncated' flag and advises re-running with a higher limit when truncated, providing behavioral expectations beyond what the schema offers. It does not mention side effects or permissions, but for a read-only query tool, the disclosed behavior is sufficient.

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

Conciseness5/5

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

The description is efficiently structured: an initial summary, followed by parameter documentation, then return format. Every sentence adds value; there is no redundancy.

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

Completeness5/5

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

The description is complete for the tool's complexity: it covers all three parameters, the return envelope, and the truncation behavior. Since there is no output schema, the description adequately explains the response structure.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by explaining each parameter: order_by lists the allowed values, limit gives the range and default, target explains the omit behavior. This adds substantial meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Top statement digests from performance_schema by a whitelisted metric', with a concrete resource (performance_schema) and specific metric list. This distinguishes it from sibling tools like long_running_queries or slow_query_rca, which focus on different aspects.

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 clear context for what the tool does but does not explicitly state when to use it versus alternatives. It implies usage for ranking queries by a metric, but there is no exclusions or alternative tool references, so guidance is only implied.

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

undo_applyA

[WRITE][risk=medium] Apply a recorded undo by dispatching its inverse tool.

The inverse runs through its own governed tool, so its own risk tier and audit row are recorded there. Pass dry_run=True to preview the inverse call without executing it. A token can only be applied once.

Args: undo_id: The undoId from undo_list (or an _undo_id in a write result). dry_run: If True, preview the inverse tool + params without running it. target: Passed through to the inverse tool when it accepts a target.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
undo_idYes

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it does well. It discloses the write operation and risk level, explains the inverse tool runs with its own risk/audit, emphasizes that a token can only be applied once, and mentions the dry_run preview. This provides thorough behavioral context.

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

Conciseness5/5

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

The description is front-loaded with the action and risk, followed by concise explanatory notes and an Args list. Every sentence contributes value; no fluff or redundancy.

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

Completeness4/5

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

The description covers the key behavior, args, and constraints, making it effective for a 3-parameter tool with no output schema. Minor omissions include the return format or what happens after a successful apply, but overall it is complete enough for safe use.

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

Parameters5/5

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

Schema coverage is 0%, so the description must explain parameters, and it does. It explains undo_id, dry_run, and target in plain language, including sources and behavior. 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.

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: 'Apply a recorded undo by dispatching its inverse tool.' It uses a specific verb ('apply') and resource ('recorded undo'), and it distinguishes itself from sibling tools like undo_list (which lists undos) by focusing on the application step.

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 ('Apply a recorded undo') but does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or conditions. It mentions dry_run as a preview, but no explicit 'use this when...' guidance.

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

undo_listA

[READ] List recorded, not-yet-applied undo tokens (most recent first).

Each entry names the original tool, the inverse tool that undo_apply would run, and a human note. Use the undoId with undo_apply.

Returns {"undos": [...], "returned": N, "limit": L, "truncated": bool}. truncated is measured (one extra row is fetched), not guessed from a length coincidence: when it is true there are MORE tokens than shown, so re-run with a higher limit rather than reporting the list as complete.

Each entry carries effectVerified. False means the original write lost its response, so the change it reverses is PROBABLE, not confirmed — check the live state before applying, and do not report the result as a restore of a state that may never have been reached.

Args: limit: Max rows to return (default 50, capped at 500). target: Unused (undo state is host-local); accepted for CLI uniformity.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and discloses read-only intent, ordering, measured truncation via an extra row fetch, and the meaning of effectVerified. This goes well beyond a simple 'list' statement and warns about probable vs confirmed changes.

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

Conciseness5/5

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

The description is well-structured with a concise lead definition, an output contract, critical caveats, and an args section. Every sentence adds actionable information without redundancy.

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

Completeness5/5

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

Given no output schema and no annotations, the description provides everything needed: return shape, truncation semantics, re-run guidance, per-entry verification meaning, and parameter behavior. This is unusually complete for a list 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?

Despite zero schema-level property descriptions, the description fully documents both parameters: limit has a default and cap, and target is explicitly marked as unused. This compensates completely for the schema gap.

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

Purpose5/5

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

The description opens with '[READ] List recorded, not-yet-applied undo tokens (most recent first)', giving a specific verb and resource. It clearly distinguishes from the sibling undo_apply, which is the corresponding action tool.

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

Usage Guidelines4/5

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

It explicitly says to use the returned undoId with undo_apply, providing direct integration guidance. It also notes that target is unused, preventing wasted parameter use, though it does not enumerate alternative read tools.

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

unused_indexesA

[READ] Secondary indexes with zero I/O events since restart (drop candidates).

From performance_schema.table_io_waits_summary_by_index_usage — counters reset on server restart, so confirm over a full business cycle.

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well by revealing the data source, the restart-reset behavior, and the fact that only zero-I/O secondary indexes are returned. This goes beyond the tool name and adds important context. It does not detail the output format, but the 'drop candidates' hint implies a list of index identifiers.

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

Conciseness5/5

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

The description is very concise, front-loaded with the key purpose, and uses a short second line for the important caveat. The parameter documentation is compact and clear. Every sentence adds value; no fluff.

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

Completeness4/5

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

For a simple read-only tool with one optional parameter, the description covers purpose, data source caveat, and parameter meaning. It lacks an explicit statement of the return value (e.g., list of index names), but the tool is simple and the purpose is clear. Overall it is complete enough for reliable invocation.

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

Parameters4/5

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

Schema coverage is 0%, so the description must explain the parameter. It does: 'target: Target name from config; omit for the default.' This is sufficient for an optional config-like parameter, adding meaning beyond the bare JSON schema type.

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 identifies the tool as listing secondary indexes with zero I/O events since restart, and explicitly frames them as drop candidates. This distinguishes it from sibling tools like redundant_indexes or index_stats by the 'unused' criterion and drop-candidate purpose. The verb is implied by '[READ]' and the noun phrase, but not strictly stated as 'list'.

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

Usage Guidelines4/5

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

The description gives clear context that the data comes from performance_schema counters that reset on restart, and advises confirming over a full business cycle. This helps the agent decide when results are meaningful. It does not explicitly name alternative tools to use instead, but the caveat forms practical usage guidance.

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

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct aspect of MySQL operations, from raw diagnostics (list_transactions, lock_waits) to interpreted RCA (lock_wait_rca, slow_query_rca). Even closely related tools like table_sizes vs table_fragmentation are clearly separated by their data focus, so an agent can select unambiguously.

Naming Consistency3/5

Naming mixes verb-first commands (kill_session, create_index), list_* nouns (list_transactions), and bare noun phrases (table_sizes, replica_status). While each category follows an internal pattern, the lack of a single convention across the whole surface makes the set feel less predictable.

Tool Count2/5

With 35 tools, the surface is well beyond the 25+ threshold for typical MCP servers. Several read tools (table_sizes, table_fragmentation, table_status) could be consolidated, so the count feels inflated even for a broad AIOps domain.

Completeness5/5

The set provides end-to-end coverage of MySQL AIOps: observability, RCA, maintenance actions, and safe undo. Both raw data and interpreted analyses are present, and write operations are paired with reversibility, leaving no obvious dead ends in common workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Universal database copilot for diagnostics, operations, and performance analysis via MCP and CLI.
  • A
    license
    A
    quality
    A
    maintenance
    Governed PostgreSQL DBA operations — slow-query, bloat, and blocking-lock RCA, index management, vacuum/analyze, and replication lag, with unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    35
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Governed Prometheus + Grafana operations — firing-alert and scrape-target RCA, alert noise/flapping analysis, silences, and dashboards, with unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    39
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Governed OPNsense + pfSense firewall operations — gateway-health, rule-shadow, and blocked-traffic RCA, with guarded rule/alias writes, unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    35
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AIops-tools/MySQL-AIops'

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