Skip to main content
Glama
isdaniel

MySQL-Performance-Tuner-Mcp

by isdaniel

MySQL Performance Tuning MCP

PyPI - Version PyPI - Downloads Python 3.10+ Pepy Total Downloads Docker Pulls

A Model Context Protocol (MCP) server for MySQL performance tuning and analysis.

Overview

mysqltuner_mcp provides AI-powered MySQL database performance analysis through the Model Context Protocol. It offers tools for query optimization, index recommendations, health monitoring

Related MCP server: MySQL MCP Server

Features

Performance Analysis

  • Slow Query Detection: Identify slow queries from performance_schema

  • Query Analysis: Get detailed EXPLAIN plans with recommendations

  • Table Statistics: Analyze table sizes, row counts, and fragmentation

  • Statement Analysis: Analyze SQL statements for temp tables, sorting, and full scans

Index Optimization

  • Index Recommendations: AI-powered suggestions based on query patterns

  • Unused Index Finder: Identify indexes that are never read

  • Duplicate Detection: Find redundant and overlapping indexes

  • Index Statistics: Cardinality, selectivity, and usage metrics

Health Monitoring

  • Health Check: Comprehensive database health assessment with scoring

  • Active Queries: Real-time query monitoring

  • Wait Event Analysis: Identify I/O and lock bottlenecks

  • Configuration Review: Settings analysis with recommendations

Storage Engine Analysis

  • Engine Statistics: Analyze storage engine usage and distribution

  • Fragmentation Detection: Find fragmented tables with OPTIMIZE recommendations

  • Auto-Increment Analysis: Detect columns approaching overflow limits

InnoDB Analysis

  • InnoDB Status: Parse and analyze SHOW ENGINE INNODB STATUS

  • Buffer Pool Analysis: Detailed buffer pool usage by schema and table

  • Transaction Analysis: Monitor transactions, lock waits, and deadlocks

Memory Analysis

  • Memory Calculations: Calculate per-thread and global buffer usage

  • Memory by Host/User: Breakdown memory usage by connection source

  • Table Cache Analysis: Analyze table open cache efficiency

Replication Monitoring

  • Master/Slave Status: Monitor replication health and lag

  • Galera Cluster: Full Galera cluster status for MariaDB/Percona

  • Group Replication: MySQL Group Replication monitoring

Security Analysis

  • Security Audit: Check for anonymous users, weak passwords, dangerous privileges

  • User Privileges: Analyze user privileges at all levels

  • Audit Log: Check audit logging configuration

Resources & Prompts

  • Built-in best practices documentation

  • Pre-configured prompts for common tuning tasks

  • Index optimization guidelines

  • Configuration optimization guide

Installation

From Source

git clone https://github.com/yourusername/mysqltuner_mcp.git
cd mysqltuner_mcp
pip install -e .

Using pip (when published)

pip install mysqltuner_mcp

Configuration

Environment Variables

Variable

Description

Default

MYSQL_URI

MySQL connection URI (required)

-

MYSQL_POOL_SIZE

Connection pool size

5

MYSQL_SSL

Enable SSL/TLS connection

false

MYSQL_SSL_CA

Path to CA certificate file

-

MYSQL_SSL_CERT

Path to client certificate file

-

MYSQL_SSL_KEY

Path to client private key file

-

MYSQL_SSL_VERIFY_CERT

Verify server certificate

true

MYSQL_SSL_VERIFY_IDENTITY

Verify server hostname matches certificate

false

Connection URI Format

Environment Variables

export MYSQL_URI="mysql://user:password@host:3306/database"
export MYSQL_SSL=true
export MYSQL_SSL_CA="/path/to/ca.pem"  # Optional: CA certificate for verification

Connection URI Query Parameters

export MYSQL_URI="mysql://user:password@host:3306/database?ssl=true&ssl_ca=/path/to/ca.pem"

Usage

Running the Server

The server supports three transport modes: stdio (default), SSE, and streamable-http.

# As a module
python -m mysqltuner_mcp

# Using the entry point
mysqltuner-mcp

# Explicitly specifying stdio mode
python -m mysqltuner_mcp --mode stdio

SSE Mode (Server-Sent Events)

HTTP transport using Server-Sent Events, suitable for web-based MCP clients:

# Start SSE server on default port 8080
python -m mysqltuner_mcp --mode sse

# Specify custom host and port
python -m mysqltuner_mcp --mode sse --host 127.0.0.1 --port 3000

# Enable debug mode
python -m mysqltuner_mcp --mode sse --debug

SSE Endpoints:

  • http://<host>:<port>/sse - SSE connection endpoint

  • http://<host>:<port>/messages/ - Message posting endpoint

Streamable HTTP Mode

Modern HTTP transport with session management:

# Start streamable HTTP server (stateful, with session tracking)
python -m mysqltuner_mcp --mode streamable-http

# Start in stateless mode (fresh transport per request)
python -m mysqltuner_mcp --mode streamable-http --stateless

# Specify custom host and port
python -m mysqltuner_mcp --mode streamable-http --host 127.0.0.1 --port 3000

Streamable HTTP Endpoint:

  • http://<host>:<port>/mcp - Single endpoint for all MCP communication

Command-Line Options

Option

Description

Default

--mode

Server mode: stdio, sse, or streamable-http

stdio

--host

Host to bind to (HTTP modes only)

0.0.0.0

--port

Port to listen on (HTTP modes only)

8080 or PORT env var

--stateless

Run in stateless mode (streamable-http only)

false

--debug

Enable debug logging

false

MCP Client Configuration

Add to your MCP client configuration (e.g., Claude Desktop):

{
  "mcpServers": {
    "mysqltuner_mcp": {
      "command": "python",
      "args": ["-m", "mysqltuner_mcp"],
      "env": {
        "MYSQL_URI": "mysql://root:your_password@localhost:3306/your_database"
      }
    }
  }
}

With SSL/TLS Enabled

{
  "mcpServers": {
    "mysqltuner_mcp": {
      "command": "python",
      "args": ["-m", "mysqltuner_mcp"],
      "env": {
        "MYSQL_URI": "mysql://root:your_password@localhost:3306/your_database",
        "MYSQL_SSL": "true",
        "MYSQL_SSL_CA": "/path/to/ca.pem"
      }
    }
  }
}

Available Tools

Performance Tools

Tool

Description

get_slow_queries

Retrieve slow queries from performance_schema with detailed statistics

analyze_query

Get EXPLAIN plan and analysis for a query with optimization recommendations

get_table_stats

Get table statistics including size, row counts, fragmentation, and indexes

compare_explain_plans

Diff EXPLAIN plans for two query variants; returns verdict + rationale

get_table_io_hotspots

Rank tables by I/O latency from performance_schema.file_summary_by_instance

Index Tools

Tool

Description

get_index_recommendations

AI-powered index suggestions based on query patterns from performance_schema

find_unused_indexes

Find unused, duplicate, and redundant indexes with DROP statements

get_index_stats

Detailed index statistics including cardinality, selectivity, and usage metrics

Health Tools

Tool

Description

check_database_health

Comprehensive health check with scoring (connections, buffer pool, queries, etc.)

get_active_queries

Monitor currently running queries and identify long-running/blocked queries

review_settings

Analyze MySQL configuration settings with best practice recommendations

analyze_wait_events

Identify wait event bottlenecks (I/O, locks, buffer, log waits)

Storage Engine Tools

Tool

Description

analyze_storage_engines

Analyze storage engine usage, statistics, and recommendations

get_fragmented_tables

Find tables with significant fragmentation and wasted space

analyze_auto_increment

Check auto-increment columns for potential overflow issues

InnoDB Tools

Tool

Description

get_innodb_status

Parse and analyze SHOW ENGINE INNODB STATUS output

analyze_buffer_pool

Detailed InnoDB buffer pool analysis by schema and table

analyze_innodb_transactions

Analyze InnoDB transactions, lock waits, and deadlocks

analyze_innodb_redo_log_pressure

Measure redo log fill rate and recommend innodb_redo_log_capacity

Memory Tools

Tool

Description

calculate_memory_usage

Calculate MySQL memory usage (per-thread and global buffers)

get_memory_by_host

Get memory usage breakdown by host, user, or event

get_table_memory_usage

Analyze table cache and InnoDB buffer pool by table

Replication Tools

Tool

Description

get_replication_status

Get master/slave replication status and health

get_galera_status

Get Galera cluster status (MariaDB/Percona XtraDB Cluster)

get_group_replication_status

Get MySQL Group Replication status

Security Tools

Tool

Description

analyze_security

Comprehensive security analysis (users, passwords, SSL, privileges)

analyze_user_privileges

Analyze privileges for specific users or all users

check_audit_log

Check audit log configuration and status

Statement Analysis Tools

Tool

Description

analyze_statements

Comprehensive SQL statement analysis from performance_schema

get_statements_with_temp_tables

Find statements creating temporary tables (memory and disk)

get_statements_with_sorting

Find statements with sorting operations and file sorts

get_statements_with_full_scans

Find statements performing full table scans

get_statements_with_errors

Find statements producing errors or warnings

find_temporary_table_spills_in_progress

List queries spilling to disk RIGHT NOW (live, not historical)

Diagnostic Tools

Tool

Description

analyze_connections

Connection state analysis (Sleep / Query / Locked breakdown, per-user, per-host)

analyze_table_locks

Table lock contention analysis (metadata locks, lock waits)

analyze_temp_tables

Temporary table and disk-spill historical analysis

check_perf_schema_config

Verify performance_schema is enabled and configured

review_optimizer_config

Review optimizer switches and cost model

analyze_lock_wait_graph

Build the InnoDB lock-wait dependency graph; find root blocker(s) and detect cycles (MySQL 8.0+)

Available Prompts

Prompt

Description

optimize_slow_query

Analyze and optimize a slow query

health_check

Perform comprehensive health assessment

index_review

Review indexes for a database

performance_audit

Full performance audit

Requirements

  • Python 3.10+

  • MySQL 5.7+ or MySQL 8.0+

  • performance_schema enabled (for full functionality)

MySQL Permissions

The MySQL user needs the following privileges:

GRANT SELECT ON performance_schema.* TO 'your_user'@'%';
GRANT SELECT ON information_schema.* TO 'your_user'@'%';
GRANT PROCESS ON *.* TO 'your_user'@'%';
-- For EXPLAIN on user databases:
GRANT SELECT ON your_database.* TO 'your_user'@'%';

Development

Setup Development Environment

git clone https://github.com/yourusername/mysqltuner_mcp.git
cd mysqltuner_mcp
python -m venv .venv
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
pip install -e .

Available Tools

30 tools
analyze_auto_incrementA
Read-onlyIdempotent

Analyze auto-increment columns for potential overflow.

Checks:

  • Current value vs maximum value for column type

  • Usage percentage

  • Tables approaching overflow

Note: This tool only analyzes user/custom tables and excludes MySQL system tables (mysql, information_schema, performance_schema, sys) by default.

Based on MySQLTuner's auto-increment analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
warning_threshold_pctNoWarning threshold percentage
schema_nameNoFilter by specific schema

TDQS

A4.2/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations. While annotations indicate read-only, non-destructive, and idempotent operations, the description specifies that it analyzes only user/custom tables and excludes MySQL system tables by default, and mentions it's based on MySQLTuner's analysis. This provides practical implementation details that annotations don't cover.

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

Conciseness5/5

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

The description is well-structured and efficiently written. It starts with the core purpose, lists specific checks in bullet points, adds important notes about scope limitations, and credits the methodology source. Every sentence adds value without redundancy, making it easy to scan and understand.

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

Completeness4/5

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

Given the tool's moderate complexity (analyzing database columns for overflow), the description provides good context about what it analyzes and its limitations. With comprehensive annotations covering safety and behavior, and no output schema needed for this diagnostic tool, the description is mostly complete. It could slightly improve by mentioning the format of results or typical use cases.

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

Parameters3/5

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

With 100% schema description coverage, the input schema already fully documents both parameters (warning_threshold_pct and schema_name). The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline expectation without providing extra semantic context.

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: analyzing auto-increment columns for potential overflow. It specifies what checks are performed (current vs maximum value, usage percentage, tables approaching overflow) and distinguishes itself from siblings by focusing on auto-increment analysis rather than other database aspects like security, queries, 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 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 this tool: for analyzing auto-increment overflow risks in user/custom tables. It explicitly excludes MySQL system tables by default, which helps define its scope. However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools for related tasks.

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

analyze_buffer_poolA
Read-onlyIdempotent

Detailed analysis of InnoDB buffer pool usage.

Analyzes:

  • Buffer pool allocation by schema and table

  • Page types and distribution

  • Hit ratios and efficiency metrics

  • Memory allocation patterns

  • Recommendations for buffer pool sizing

Note: When analyzing by schema/table, this tool only shows user/custom tables and excludes MySQL system tables (mysql, information_schema, performance_schema, sys).

Uses sys schema views for detailed breakdown when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
by_schemaNoInclude breakdown by schema
by_tableNoInclude breakdown by table (top N)
top_nNoNumber of top tables to show

TDQS

A4.2/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations: it specifies that system tables are excluded during schema/table analysis and mentions reliance on sys schema views when available. While annotations already indicate read-only, non-destructive, and idempotent behavior, the description provides implementation details that help the agent understand scope and data sources.

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

Conciseness5/5

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

The description is well-structured and efficiently organized: it starts with the core purpose, lists specific analysis areas in bullet points, then adds important notes about exclusions and implementation. Every sentence earns its place with no redundant 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?

For a read-only analysis tool with comprehensive annotations and full parameter documentation, the description provides good contextual completeness. It covers what the tool analyzes, important exclusions, and implementation details. The main gap is the lack of output schema, but the description compensates somewhat by listing analysis areas that hint at return values.

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

Parameters3/5

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

With 100% schema description coverage, the input schema already fully documents all three parameters. The description doesn't add any additional parameter semantics beyond what's in the schema, so it meets the baseline expectation but doesn't provide extra value regarding parameter usage or implications.

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 performs 'Detailed analysis of InnoDB buffer pool usage' with specific analysis areas listed (allocation by schema/table, page types, hit ratios, memory patterns, sizing recommendations). It distinguishes from siblings by focusing specifically on buffer pool analysis rather than other database components like transactions, queries, or security.

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 about when to use this tool (for analyzing buffer pool usage) and includes an important exclusion note about system tables. However, it doesn't explicitly mention when NOT to use it or name specific alternative tools for related but different analyses.

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

analyze_innodb_transactionsA
Read-onlyIdempotent

Analyze InnoDB transactions and locking.

Identifies:

  • Long-running transactions

  • Lock waits and blocking transactions

  • Deadlock history

  • History list length (purge lag)

  • Transaction isolation levels

Helps identify transaction-related performance issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_queriesNoInclude transaction queries
min_duration_secNoMinimum transaction duration to include

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable context beyond annotations by specifying what gets analyzed (long-running transactions, lock waits, deadlock history, etc.), which helps the agent understand the scope and nature of the analysis operation. No contradiction with annotations exists.

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 with a clear opening statement, a bulleted list of analysis categories for quick scanning, and a closing sentence about purpose. Every sentence earns its place without redundancy, and the information is front-loaded for immediate understanding.

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 (analyzing multiple transaction aspects), rich annotations (covering safety and idempotency), and 100% schema coverage, the description provides good contextual completeness. It clearly explains what the tool analyzes and why. The main gap is the lack of an output schema, but the description compensates somewhat by listing analysis categories that hint at return values.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters ('include_queries' and 'min_duration_sec') well-documented in the schema. The description doesn't add any parameter-specific information beyond what the schema provides, so it meets the baseline of 3 where the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the specific action ('analyze') and resource ('InnoDB transactions and locking'), then lists five concrete analysis categories. It explicitly distinguishes this tool from siblings like 'analyze_query' or 'get_innodb_status' by focusing specifically on transaction and locking analysis rather than general queries or status.

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

Usage Guidelines4/5

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

The description provides clear context about when to use this tool ('Helps identify transaction-related performance issues'), which differentiates it from siblings focused on other aspects like security, storage engines, or user privileges. However, it doesn't explicitly state when NOT to use it or name specific alternative tools for overlapping concerns.

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

analyze_queryA
Read-onlyIdempotent

Analyze a MySQL query's execution plan using EXPLAIN.

Provides detailed analysis of:

  • Query execution plan with access types

  • Index usage and potential missing indexes

  • Join types and optimization opportunities

  • Rows examined estimates

  • Key usage and key length

Supports EXPLAIN FORMAT=JSON for MySQL 5.6+ for detailed cost analysis. Use EXPLAIN ANALYZE (MySQL 8.0.18+) for actual execution statistics.

WARNING: With analyze=true, the query is actually executed!

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe SQL query to analyze
analyzeNoUse EXPLAIN ANALYZE to get actual execution stats (MySQL 8.0.18+)
formatNoOutput format for the execution planjson

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description adds critical behavioral context with the WARNING about query execution when analyze=true, which is not covered by annotations. It also mentions version-specific features (MySQL 5.6+, 8.0.18+), enhancing transparency beyond the structured data.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by bullet points detailing analysis aspects and version-specific usage notes, ending with a critical warning. Every sentence adds value without redundancy, making it efficient and easy to parse.

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

Completeness4/5

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

Given the complexity of query analysis and the lack of an output schema, the description does a good job covering what the tool analyzes (execution plan, index usage, etc.) and behavioral nuances (version support, warning). However, it could be more complete by briefly mentioning the return format or typical output structure, though annotations help mitigate this gap.

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

Parameters3/5

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

With 100% schema description coverage, the input schema already documents all parameters thoroughly. The description adds minimal value by implicitly linking 'analyze' to EXPLAIN ANALYZE and 'format' to output options, but does not provide significant additional semantics beyond what the schema descriptions already state.

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

Purpose5/5

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

The description clearly states the specific action ('analyze a MySQL query's execution plan using EXPLAIN') and resource ('MySQL query'), distinguishing it from sibling tools like analyze_statements or get_slow_queries by focusing on execution plan analysis rather than performance monitoring or error detection.

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 specific features (e.g., 'Supports EXPLAIN FORMAT=JSON for MySQL 5.6+', 'Use EXPLAIN ANALYZE (MySQL 8.0.18+)'), but does not explicitly state when to use this tool versus alternatives like get_index_recommendations or find_unused_indexes for similar optimization tasks.

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

analyze_securityA
Read-onlyIdempotent

Perform comprehensive MySQL security analysis.

Checks:

  • Anonymous user accounts

  • Users without passwords

  • Users with weak password policies

  • Root account security

  • Password validation plugin status

  • SSL/TLS configuration

  • Host-based access patterns

  • Dangerous privileges (SUPER, FILE, GRANT)

Based on MySQLTuner's security_recommendations() function.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_user_listNoInclude full user list in output

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating a safe, non-destructive operation. The description adds valuable context by specifying the 8 security checks performed and noting it's based on MySQLTuner's function, which clarifies scope and methodology beyond the annotations' safety profile.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by a bulleted list of checks for clarity, and ends with implementation context. Every sentence earns its place by adding specific value without redundancy, making it efficiently structured and appropriately sized.

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 (security analysis with 8 checks), rich annotations (covering safety and idempotency), and no output schema, the description is mostly complete. It details the checks performed and implementation basis, though it could benefit from mentioning output format or interpretation guidance to fully compensate for the lack of output schema.

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

Parameters3/5

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

Schema description coverage is 100%, with the single parameter 'include_user_list' fully documented in the schema. The description does not add any parameter-specific information beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.

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

Purpose5/5

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

The description clearly states the specific action ('Perform comprehensive MySQL security analysis') and lists 8 distinct security checks, making the purpose highly specific. It distinguishes itself from sibling tools like 'analyze_user_privileges' or 'check_database_health' by focusing exclusively on security aspects rather than performance, privileges, or general health.

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 in security assessment contexts but does not explicitly state when to use this tool versus alternatives. While it lists specific checks, it lacks guidance on prerequisites, timing, or comparisons to sibling tools like 'analyze_user_privileges' or 'check_database_health' for overlapping concerns.

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

analyze_statementsA
Read-onlyIdempotent

Analyze SQL statements from performance_schema/sys schema.

Provides comprehensive analysis of:

  • Statement digest summaries

  • Total and average execution times

  • Rows examined vs rows sent ratios

  • Statement error rates

  • Most expensive queries

Based on MySQLTuner's performance schema analysis. Requires performance_schema enabled.

Note: This tool excludes queries against MySQL system schemas (mysql, information_schema, performance_schema, sys) to focus on user/application query analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
schema_nameNoFilter by specific schema (optional)
order_byNoOrder by metrictotal_latency
limitNoMaximum number of statements to return
min_exec_countNoMinimum execution count filter

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds valuable context beyond annotations: requires performance_schema enabled, excludes system schema queries, and is based on MySQLTuner's analysis. No contradiction with annotations exists.

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

Conciseness5/5

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

The description is well-structured and appropriately sized: it starts with the core purpose, lists analysis areas in bullet points, provides implementation context (MySQLTuner-based), states prerequisites, and adds an important exclusion note. Every sentence adds value with zero waste.

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

Completeness4/5

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

Given the tool's complexity (analyzing SQL statements with multiple metrics), the description is quite complete: it explains what's analyzed, prerequisites, exclusions, and context. However, without an output schema, it doesn't describe the return format (e.g., structure of analysis results), leaving a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all 4 parameters. The description doesn't add parameter-specific details beyond what the schema provides, maintaining the baseline score of 3 for high 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?

The description clearly states the tool analyzes SQL statements from performance_schema/sys schema, listing specific analysis areas (statement digest summaries, execution times, row ratios, error rates, expensive queries). It distinguishes from siblings like 'get_slow_queries' or 'get_statements_with_errors' by providing comprehensive analysis rather than focused subsets.

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: requires performance_schema enabled, excludes queries against MySQL system schemas to focus on user/application queries. However, it doesn't explicitly state when to use this vs. alternatives like 'get_slow_queries' or 'analyze_query', though the comprehensive nature is implied.

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

analyze_storage_enginesA
Read-onlyIdempotent

Analyze storage engine usage and statistics for user tables.

Provides:

  • List of available engines and their status

  • Table count and size by engine

  • Engine-specific metrics (InnoDB, MyISAM, MEMORY, etc.)

  • Recommendations for engine optimization

Note: This tool only analyzes user/custom tables and excludes MySQL system tables (mysql, information_schema, performance_schema, sys) by default.

Based on MySQLTuner's engine analysis patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_table_detailsNoInclude per-table engine details
schema_nameNoFilter by specific schema (optional)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds valuable context beyond this: it specifies that analysis excludes MySQL system tables by default, mentions it's based on MySQLTuner's patterns, and lists the types of information provided (e.g., engine status, table counts, metrics, recommendations). This enhances understanding without contradicting 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 well-structured and front-loaded: it starts with the core purpose, lists key outputs in bullet points, adds important notes, and cites the source pattern. Every sentence adds value without redundancy, making it efficient and easy to parse.

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

Completeness4/5

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

Given the tool's moderate complexity (analysis with optional filtering), rich annotations (read-only, idempotent), and no output schema, the description is largely complete. It covers purpose, outputs, exclusions, and context. A slight gap is the lack of explicit output format details, but the bullet points provide enough semantic understanding for an agent to use it effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents the two parameters (include_table_details and schema_name). The description doesn't add specific parameter details beyond what's in the schema, but it implies the scope of analysis (user tables, optional schema filtering), aligning with the schema. Baseline 3 is appropriate as the schema handles parameter documentation.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Analyze storage engine usage and statistics for user tables.' It specifies the verb ('analyze') and resource ('storage engine usage and statistics for user tables'), and distinguishes it from siblings by focusing on storage engines rather than other MySQL components like indexes, queries, 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 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: for analyzing storage engines in MySQL, with a note that it excludes system tables by default. It doesn't explicitly state when not to use it or name alternatives among siblings, but the focus on storage engines implies it's not for other analysis types like 'analyze_query' or 'get_slow_queries'.

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

analyze_user_privilegesA
Read-onlyIdempotent

Analyze privileges for a specific user or all users.

Shows:

  • Global privileges

  • Database-level privileges

  • Table-level privileges

  • Column-level privileges

  • Routine privileges

Helps identify excessive or missing privileges.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNoUsername to analyze (omit for all users)
hostnameNoHost pattern for the user%

TDQS

A4/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true, destructiveHint=false, openWorldHint=false, and idempotentHint=true, covering safety and idempotency. The description adds value by specifying what the tool 'shows' (privilege levels) and its purpose (identifying issues), which complements annotations without contradiction. However, it doesn't detail rate limits, auth needs, or output format.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded, starting with the core purpose, followed by a bulleted list of outputs, and ending with the utility. Every sentence adds value without redundancy, making it efficient and well-structured for quick understanding.

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

Completeness4/5

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

Given the tool's moderate complexity (2 parameters, no output schema), annotations cover safety and idempotency, and the description details outputs and purpose. It's mostly complete but could improve by specifying return format or examples. Without an output schema, some ambiguity remains, but it's sufficient for basic use.

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

Parameters3/5

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

Schema description coverage is 100%, with clear parameter descriptions in the schema. The description doesn't add meaning beyond the schema, as it omits parameter details. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't need to given the schema's completeness.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('analyze privileges') and resources ('user or all users'), and distinguishes it from siblings by focusing on privilege analysis rather than performance, health, or other database aspects. It lists the specific privilege levels examined, making the scope explicit.

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

Usage Guidelines3/5

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

The description implies usage for identifying 'excessive or missing privileges,' suggesting it's for security auditing, but lacks explicit guidance on when to use this tool versus alternatives like 'analyze_security' or 'check_database_health.' No exclusions or prerequisites are mentioned, leaving usage context somewhat vague.

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

analyze_wait_eventsA
Read-onlyIdempotent

Analyze MySQL wait events to identify bottlenecks.

Wait events indicate what processes are waiting for:

  • Lock waits (row locks, table locks)

  • I/O waits (disk operations)

  • Buffer pool waits

  • Log waits

  • Mutex and semaphore waits

This helps identify:

  • I/O bottlenecks

  • Lock contention patterns

  • Resource saturation

ParametersJSON Schema
NameRequiredDescriptionDefault
event_categoryNoCategory of events to analyzeall
top_nNoNumber of top events to return

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide key behavioral hints (readOnlyHint: true, destructiveHint: false, idempotentHint: true), so the bar is lower. The description adds valuable context by explaining what wait events are and what they help identify (e.g., lock contention patterns, resource saturation), which goes beyond the annotations and aids in understanding the tool's scope and output implications.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by bullet points that efficiently detail wait event types and analysis benefits. Every sentence earns its place by adding clarity without redundancy, making it easy to scan and understand.

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 (analyzing wait events for bottlenecks), annotations cover safety (read-only, non-destructive), and schema fully documents parameters, the description provides good context on what the tool analyzes and why. However, there is no output schema, and the description does not specify return format or data structure, leaving a minor gap in completeness.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for both parameters (event_category with enum values, top_n with default). The description does not add specific parameter semantics beyond the schema, but it lists event categories (e.g., lock waits, I/O waits) that align with the enum, providing some contextual reinforcement. Baseline 3 is appropriate given high 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?

The description clearly states the tool's purpose: 'Analyze MySQL wait events to identify bottlenecks.' It specifies the verb ('analyze'), resource ('MySQL wait events'), and goal ('identify bottlenecks'), which distinguishes it from sibling tools that focus on other MySQL aspects like queries, indexes, 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 description implies usage by listing what wait events indicate and what they help identify (e.g., I/O bottlenecks, lock contention), but it does not explicitly state when to use this tool versus alternatives like 'analyze_query' or 'get_slow_queries'. No exclusions or direct comparisons to 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.

calculate_memory_usageA
Read-onlyIdempotent

Calculate MySQL memory usage and provide recommendations.

Analyzes:

  • Per-thread memory buffers (read_buffer, sort_buffer, join_buffer, etc.)

  • Global server buffers (key_buffer, innodb_buffer_pool, etc.)

  • Maximum potential memory usage

  • Current memory utilization

Based on MySQLTuner's memory calculation methodology. Helps identify memory-related configuration issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
physical_memory_gbNoPhysical memory in GB (for comparison). If not provided, uses system detection if available.
detailedNoInclude detailed breakdown

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior, which the description does not contradict. The description adds valuable context beyond annotations by specifying what gets analyzed (e.g., buffers, utilization) and the methodology (MySQLTuner), though it could mention rate limits or authentication needs more explicitly.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the main purpose, followed by bullet points for analysis details and a concluding sentence. It avoids unnecessary fluff, though it could be slightly more concise by integrating the bullet points into flowing 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?

Given the tool's complexity and lack of output schema, the description provides good coverage of what the tool does and its methodology. It could improve by hinting at output format or recommendations structure, but it adequately complements the rich annotations and schema for a non-mutative analysis tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents the two parameters. The description does not add specific parameter details beyond what the schema provides, such as explaining when to use 'physical_memory_gb' versus system detection. Baseline 3 is appropriate as the schema handles the heavy lifting.

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 calculates MySQL memory usage and provides recommendations, specifying it analyzes per-thread buffers, global server buffers, maximum potential usage, and current utilization. It distinguishes itself from siblings like 'get_memory_by_host' or 'get_table_memory_usage' by focusing on configuration analysis and recommendations rather than raw data retrieval.

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 identifying memory-related configuration issues, but does not explicitly state when to use this tool versus alternatives like 'analyze_buffer_pool' or 'get_memory_by_host'. It provides some context (e.g., based on MySQLTuner's methodology) but lacks clear exclusions or named alternatives.

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

check_audit_logA
Read-onlyIdempotent

Check MySQL audit log configuration and status.

Analyzes:

  • Audit plugin status

  • Audit log configuration

  • Recent audit events (if accessible)

  • Compliance recommendations

Supports MySQL Enterprise Audit, MariaDB Audit Plugin, and Percona Audit Log Plugin.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable context beyond annotations by specifying what gets analyzed (plugin status, configuration, events, compliance) and listing supported audit systems (MySQL Enterprise, MariaDB, Percona), which helps the agent understand scope and compatibility.

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

Conciseness5/5

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

The description is well-structured and front-loaded, starting with the core purpose followed by bullet points for analysis areas and a final sentence on supported systems. Every sentence adds value without redundancy, making it efficient and easy to parse.

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

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 (analyzing multiple audit systems) and rich annotations (readOnly, idempotent, etc.), the description is mostly complete. It covers what the tool does and its scope, though it lacks details on output format or error handling, which could be useful since there's no output schema.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately focuses on functionality rather than parameters, earning a baseline score of 4 for not adding unnecessary information.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('check', 'analyzes') and resources ('MySQL audit log configuration and status'), listing four distinct analysis areas. It distinguishes from sibling tools by focusing specifically on audit logs rather than general health, queries, or other database components.

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

Usage Guidelines3/5

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

The description implies usage context through the analysis areas listed (audit plugin status, configuration, events, compliance), suggesting this tool is for audit-related diagnostics. However, it doesn't explicitly state when to use this versus alternatives like 'analyze_security' or 'check_database_health', nor does it provide exclusions or prerequisites.

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

check_database_healthA
Read-onlyIdempotent

Perform a comprehensive MySQL database health check.

Analyzes multiple aspects of MySQL health:

  • Connection statistics and pool usage

  • Buffer pool hit ratio

  • Query cache efficiency (if enabled)

  • InnoDB metrics (buffer pool, log, transactions)

  • Replication status (if configured)

  • Thread and connection usage

  • Uptime and general status

Returns a health score with detailed breakdown and recommendations. Based on MySQLTuner analysis concepts.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_recommendationsNoInclude actionable recommendations
verboseNoInclude detailed statistics

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety aspects. The description adds valuable context about what gets analyzed (specific MySQL components) and mentions it's 'based on MySQLTuner analysis concepts', which provides implementation context. However, it doesn't mention rate limits, authentication needs, 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.

Conciseness4/5

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

The description is appropriately sized with clear bullet points listing analyzed aspects. It's front-loaded with the main purpose and efficiently structured, though the final sentence about MySQLTuner could be integrated more seamlessly.

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

Completeness4/5

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

For a read-only diagnostic tool with good annotations and no output schema, the description provides comprehensive context about what gets analyzed and the return format (health score with breakdown). It could benefit from mentioning the format of recommendations or score range, but covers most essential aspects given the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are fully documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema (include_recommendations and verbose). This meets the baseline expectation when schema coverage is complete.

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 performs a 'comprehensive MySQL database health check' with specific aspects analyzed (connection statistics, buffer pool, InnoDB metrics, etc.). It distinguishes from sibling tools by covering multiple areas rather than focusing on specific components like 'analyze_buffer_pool' or 'get_replication_status'.

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

Usage Guidelines4/5

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

The description implies this tool should be used for broad health assessment rather than specific analyses, but doesn't explicitly state when to choose it over alternatives like 'review_settings' or 'calculate_memory_usage'. It provides clear context about what it analyzes but lacks explicit exclusion criteria or named alternatives.

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

find_unused_indexesA
Read-onlyIdempotent

Find unused and duplicate indexes in MySQL user tables.

Identifies:

  • Indexes with zero or very few reads since server start

  • Duplicate indexes (same columns in same order)

  • Redundant indexes (one index is a prefix of another)

Removing unused indexes can:

  • Reduce storage space

  • Speed up INSERT/UPDATE/DELETE operations

  • Reduce memory usage for index buffers

Note: This tool only analyzes user/custom tables and excludes MySQL system tables (mysql, information_schema, performance_schema, sys).

Based on information_schema and performance_schema statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
schema_nameNoSchema/database to analyze
include_duplicatesNoInclude analysis of duplicate/redundant indexes
min_size_mbNoMinimum index size in MB to include
exclude_primaryNoExclude primary keys from analysis

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds valuable context beyond annotations: it specifies that analysis is based on information_schema and performance_schema statistics, excludes MySQL system tables, and details what 'unused' means (zero/few reads since server start). No contradiction with annotations exists.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by bullet points for identification and benefits, and a note with exclusions. Every sentence adds value without redundancy, making it efficient and easy to scan.

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

Completeness4/5

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

Given the tool's moderate complexity, rich annotations (covering safety and idempotency), and full schema coverage, the description is largely complete. It explains the analysis scope, benefits, and data sources. However, without an output schema, it could briefly hint at return format (e.g., list of indexes with metrics) for better completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters. The description does not add specific parameter semantics beyond what the schema provides (e.g., it mentions analyzing user tables but doesn't elaborate on schema_name usage). Baseline 3 is appropriate as the schema carries the parameter documentation burden.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('find', 'identifies') and resources ('unused and duplicate indexes in MySQL user tables'). It distinguishes from siblings by focusing on index analysis rather than queries, replication, or other database aspects, and explicitly excludes system tables.

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: for analyzing user/custom tables to identify unused/duplicate indexes, with benefits like reducing storage and improving performance. However, it does not explicitly state when not to use it or name specific alternatives among siblings (e.g., get_index_stats for general index statistics).

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

get_active_queriesA
Read-onlyIdempotent

Get currently active queries in MySQL.

Shows:

  • Running queries with execution time

  • Long-running queries

  • Blocked queries waiting on locks

  • Idle transactions that may be holding locks

Useful for:

  • Identifying queries causing performance issues

  • Finding blocking transactions

  • Monitoring query execution in real-time

ParametersJSON Schema
NameRequiredDescriptionDefault
min_duration_secNoMinimum query duration in seconds
show_full_queryNoShow full query text (may be truncated otherwise)

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide comprehensive behavioral hints (read-only, non-destructive, idempotent, closed-world). The description adds useful context about what types of queries are shown (running, long-running, blocked, idle transactions) and the real-time monitoring aspect, but doesn't disclose additional behavioral traits like rate limits, authentication needs, or what 'active' specifically means operationally.

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 perfectly structured with a clear purpose statement, bulleted list of what it shows, and a 'Useful for' section - all in 7 concise sentences that each earn their place. No wasted words 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?

For a read-only monitoring tool with good annotations and full parameter coverage, the description provides adequate context about what information is returned and use cases. However, without an output schema, it could benefit from more detail about the return format (e.g., structured data vs plain text, typical fields included).

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

Parameters3/5

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

With 100% schema description coverage, the schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting for parameter documentation.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('currently active queries in MySQL'), and distinguishes it from siblings by focusing on real-time monitoring rather than historical analysis (unlike get_slow_queries) or specific analysis types (unlike analyze_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?

The 'Useful for' section provides clear context about when to use this tool (identifying performance issues, finding blocking transactions, real-time monitoring), but doesn't explicitly state when NOT to use it or name specific alternatives among the many sibling tools.

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

get_fragmented_tablesA
Read-onlyIdempotent

Find user tables with significant fragmentation.

Fragmentation occurs when:

  • Data is deleted from tables

  • Tables are frequently updated

  • VARCHAR/TEXT columns are modified

Note: This tool only analyzes user/custom tables and excludes MySQL system tables (mysql, information_schema, performance_schema, sys) by default.

High fragmentation wastes disk space and can slow queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_fragmentation_pctNoMinimum fragmentation percentage threshold
min_data_free_mbNoMinimum wasted space in MB
schema_nameNoFilter by specific schema
limitNoMaximum tables to return

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds valuable context beyond this: it specifies that the tool excludes MySQL system tables by default and analyzes only user/custom tables, which is not covered by annotations. No contradiction with annotations exists.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose in the first sentence. Each subsequent sentence adds necessary context (causes of fragmentation, scope exclusions, impact) without redundancy. It is appropriately sized and wastes no 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?

Given the tool's moderate complexity (analyzing fragmentation with filtering parameters), the description is mostly complete. It covers purpose, usage context, and behavioral details like table exclusions. However, without an output schema, it does not describe the return format (e.g., what data is included in results), leaving a minor gap.

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

Parameters3/5

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

The input schema has 100% description coverage, providing clear details for all four parameters (e.g., thresholds, filters, limits). The description does not add any parameter-specific information beyond what the schema already documents, so it meets the baseline score of 3 for high 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?

The description clearly states the tool's purpose: 'Find user tables with significant fragmentation.' It specifies the resource (user tables) and the action (find), and distinguishes itself from siblings by focusing on fragmentation analysis rather than other MySQL diagnostics like indexes, queries, 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 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 by explaining what causes fragmentation (deletions, updates, VARCHAR/TEXT modifications) and the impact (wasted disk space, slow queries). However, it does not explicitly state when not to use it or name alternatives among the sibling tools, such as 'get_table_stats' for general table analysis.

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

get_galera_statusA
Read-onlyIdempotent

Get Galera cluster status for MariaDB/Percona XtraDB Cluster.

Analyzes:

  • Cluster membership and state

  • Node status (Primary, Donor, Joiner)

  • Flow control status

  • Replication health metrics

  • Certification and write-set conflicts

Only applicable to Galera-enabled MySQL variants.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations cover read-only, non-destructive, and idempotent properties, but the description adds valuable context by detailing what the tool analyzes (e.g., cluster membership, node status, flow control, replication health, certification conflicts), which helps the agent understand the scope and output without contradicting 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 front-loaded with the core purpose, followed by a bulleted list of analyses and a clear applicability statement. Every sentence earns its place by providing essential information without redundancy, making it efficient and well-structured.

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

Completeness4/5

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

Given the tool's complexity (analyzing multiple cluster aspects), no output schema, and rich annotations, the description is largely complete by detailing analysis areas. However, it could slightly improve by hinting at the output format (e.g., structured data or metrics), but it's adequate for agent 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?

With 0 parameters and 100% schema description coverage, the baseline is 4. The description compensates by implicitly confirming no inputs are needed, as it focuses on what the tool analyzes rather than requiring parameters, adding clarity beyond the empty schema.

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

Purpose5/5

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

The description clearly states the specific action ('Get Galera cluster status') and resource ('for MariaDB/Percona XtraDB Cluster'), with explicit differentiation from sibling tools like 'get_group_replication_status' and 'get_replication_status' by specifying it's 'Only applicable to Galera-enabled MySQL variants.'

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

Usage Guidelines5/5

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

It provides explicit when-to-use guidance by stating 'Only applicable to Galera-enabled MySQL variants,' which distinguishes it from non-Galera MySQL tools and sibling tools like 'get_group_replication_status' or 'get_replication_status' that might target different replication systems.

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

get_group_replication_statusA
Read-onlyIdempotent

Get MySQL Group Replication status.

Analyzes:

  • Group membership and state

  • Member roles (PRIMARY/SECONDARY)

  • Replication channels

  • Transaction certification

  • Flow control

Only applicable to MySQL with Group Replication enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

The description adds valuable context beyond annotations by specifying the analysis scope (membership, roles, channels, etc.) and the MySQL Group Replication requirement. Annotations already cover safety (readOnlyHint=true, destructiveHint=false), so the bar is lower, but the description provides useful operational context without contradicting 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 efficiently structured: the first sentence states the core purpose, followed by a bulleted list of analysis areas, and ends with a critical usage constraint. Every sentence earns its place with no wasted words, making it easy to scan and understand.

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 parameterless tool with rich annotations (readOnlyHint, idempotentHint) but no output schema, the description provides good context on what it analyzes and when to use it. It could slightly improve by hinting at the return format (e.g., structured data vs. raw text), but it's largely complete given the tool's complexity.

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

Parameters4/5

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

With 0 parameters and 100% schema description coverage, the baseline is 4. The description doesn't need to explain parameters, but it implicitly confirms no inputs are required by focusing on the analysis output, which is appropriate for this parameterless tool.

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

Purpose5/5

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

The description clearly states the specific action ('Get MySQL Group Replication status') and resource ('MySQL Group Replication'), distinguishing it from siblings like 'get_replication_status' (which likely covers standard replication) and 'get_galera_status' (a different clustering technology). The detailed analysis scope further clarifies its unique focus.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('Only applicable to MySQL with Group Replication enabled'), providing clear context for its application. This distinguishes it from alternatives like general replication or Galera tools, though it doesn't name specific siblings as alternatives.

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

get_index_recommendationsA
Read-onlyIdempotent

Get AI-powered index recommendations for MySQL user tables.

Analyzes query patterns from performance_schema to recommend indexes:

  • Identifies queries with full table scans

  • Finds queries not using indexes efficiently

  • Suggests composite indexes for multi-column filters

  • Prioritizes recommendations by potential impact

Note: This tool only analyzes user/custom tables and excludes MySQL system tables (mysql, information_schema, performance_schema, sys).

Based on MySQL performance_schema statistics and query patterns. Similar to MySQLTuner's index analysis but with more detailed recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
schema_nameNoSchema/database to analyze
max_recommendationsNoMaximum number of recommendations (default: 10)
min_improvement_percentNoMinimum expected improvement percentage (default: 10)
include_query_analysisNoInclude analysis of specific queries

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide important behavioral hints (readOnlyHint: true, idempotentHint: true, destructiveHint: false), indicating a safe, non-modifying operation. The description adds valuable context beyond this: it explains what the tool analyzes (full table scans, inefficient index use), what it recommends (composite indexes), how it prioritizes (by potential impact), and its data sources (performance_schema statistics). This enriches understanding without contradicting annotations.

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

Conciseness4/5

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

The description is well-structured and appropriately sized. It front-loads the core purpose, then details the analysis approach in bullet points, and adds important notes and comparisons. Every sentence adds value, though the final comparison to MySQLTuner could be slightly trimmed without losing essential information.

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

Completeness4/5

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

Given the tool's complexity (AI-powered index analysis with 4 parameters) and rich annotations, the description provides good contextual completeness. It explains the analysis methodology, scope limitations, and data sources. However, without an output schema, it doesn't detail the return format (e.g., structure of recommendations), leaving a minor gap in full understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description doesn't add specific parameter semantics beyond what's in the schema (e.g., it doesn't explain how 'min_improvement_percent' relates to the analysis). However, it implies the scope of analysis (user tables, query patterns) which contextualizes parameter usage. Baseline 3 is appropriate given high 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?

The description clearly states the tool's purpose with specific verbs ('Get AI-powered index recommendations', 'Analyzes query patterns') and resources ('MySQL user tables', 'performance_schema'). It distinguishes from siblings by focusing specifically on index recommendations rather than general analysis, health checks, or other MySQL diagnostics like 'get_index_stats' or 'find_unused_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 description provides clear context about when to use this tool ('analyzes query patterns from performance_schema to recommend indexes') and what it excludes ('only analyzes user/custom tables and excludes MySQL system tables'). However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools, such as 'find_unused_indexes' for different index analysis.

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

get_index_statsA
Read-onlyIdempotent

Get detailed index statistics for MySQL user tables.

Returns:

  • Index cardinality and selectivity

  • Index size and memory usage

  • Read/write operation counts

  • Index efficiency metrics

Helps identify:

  • Low cardinality indexes

  • Oversized indexes

  • Infrequently used indexes

Note: This tool only analyzes user/custom tables and excludes MySQL system tables (mysql, information_schema, performance_schema, sys).

ParametersJSON Schema
NameRequiredDescriptionDefault
schema_nameNoSchema/database to analyze
table_nameNoSpecific table to analyze (optional)
order_byNoOrder results bysize

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior, but the description adds valuable context by specifying the exclusion of system tables and detailing the types of metrics returned (e.g., cardinality, size, efficiency). This enhances transparency beyond what annotations provide, though it doesn't cover aspects like rate limits or authentication needs.

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

Conciseness5/5

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

The description is well-structured and front-loaded, starting with the core purpose, followed by bullet points of returns and helps, and ending with a critical note. Every sentence adds value without redundancy, making it efficient and easy to parse.

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

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 the absence of an output schema, the description does a good job of outlining what metrics are returned and what issues it helps identify. However, it could be more complete by briefly mentioning the format of the output or any limitations, though the annotations and schema coverage mitigate this gap.

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

Parameters3/5

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

With 100% schema description coverage, the input schema fully documents all three parameters, including their types, descriptions, and enums for 'order_by.' The description does not add any parameter-specific details beyond what the schema provides, so it meets the baseline score of 3.

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

Purpose5/5

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

The description explicitly states the action ('Get detailed index statistics') and the target ('for MySQL user tables'), clearly distinguishing it from sibling tools like 'get_table_stats' or 'find_unused_indexes' by focusing specifically on index-level metrics rather than table-level statistics or unused index detection.

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 by specifying that it 'only analyzes user/custom tables and excludes MySQL system tables,' which helps guide when to use it. However, it does not explicitly mention when to choose this tool over alternatives like 'find_unused_indexes' or 'get_index_recommendations,' which are related sibling tools.

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

get_innodb_statusA
Read-onlyIdempotent

Analyze InnoDB engine status from SHOW ENGINE INNODB STATUS.

Parses and analyzes:

  • Buffer pool statistics and hit ratios

  • InnoDB log information and checkpoints

  • Row operations (reads, inserts, updates, deletes)

  • Transaction information and history list

  • Semaphore waits and mutex contention

  • Deadlock information (if any)

  • I/O statistics and pending operations

  • Redo log performance

Based on MySQLTuner's InnoDB analysis patterns. Provides actionable recommendations for InnoDB optimization.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_raw_outputNoInclude raw INNODB STATUS output
detailed_analysisNoInclude detailed analysis with all metrics

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable context beyond this by detailing what gets analyzed (e.g., actionable recommendations for optimization, specific metrics like hit ratios and contention), though it doesn't mention rate limits or auth needs, which are not critical here.

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

Conciseness5/5

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

The description is well-structured and front-loaded, starting with the core purpose, followed by a bulleted list of parsed elements, and ending with context and recommendations. Every sentence earns its place by providing specific details without redundancy, making it efficient and easy to scan.

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 (analyzing multiple InnoDB metrics), annotations cover safety aspects, and schema fully describes parameters. The description adds comprehensive analysis details and optimization context, compensating for the lack of output schema. However, it could slightly improve by hinting at output format or linking to sibling tools for deeper analysis.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for both parameters (include_raw_output and detailed_analysis). The description doesn't add meaning beyond the schema, as it focuses on analysis content rather than parameter usage. With high schema coverage, the baseline score of 3 is appropriate, as the schema adequately documents parameters without extra description input.

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

Purpose5/5

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

The description explicitly states the tool 'Analyze InnoDB engine status from SHOW ENGINE INNODB STATUS' with a specific verb ('analyze') and resource ('InnoDB engine status'), clearly distinguishing it from sibling tools like analyze_buffer_pool or analyze_innodb_transactions by covering comprehensive InnoDB metrics including buffer pool, logs, transactions, deadlocks, and I/O.

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 usage context by listing what it parses (e.g., buffer pool statistics, deadlock information) and mentions it's 'Based on MySQLTuner's InnoDB analysis patterns,' suggesting it's for optimization scenarios. However, it lacks explicit guidance on when to use this tool versus alternatives like analyze_innodb_transactions or get_table_stats, which could overlap in some areas.

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

get_memory_by_hostA
Read-onlyIdempotent

Get memory usage breakdown by host or user.

Uses sys schema or performance_schema to show:

  • Memory allocated per host

  • Memory allocated per user

  • Memory by event/operation type

Requires performance_schema memory instrumentation enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_byNoGroup memory byhost
limitNoMaximum results to return

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it specifies the data sources ('Uses sys schema or performance_schema'), reveals a system dependency ('Requires performance_schema memory instrumentation enabled'), and clarifies the breakdown dimensions (host, user, event type). No contradiction with annotations exists.

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 perfectly structured and concise: four brief sentences with zero waste. The first sentence states the core purpose, the next three bullet points clarify what data it shows, and the final sentence provides a critical prerequisite. Every sentence earns its place by adding distinct value.

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

Completeness4/5

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

Given the tool's moderate complexity (memory analysis with system dependencies), rich annotations (covering safety and behavior), and 100% schema coverage, the description is largely complete. It explains the tool's purpose, data sources, breakdown dimensions, and prerequisites. The main gap is the lack of an output schema, but the description compensates somewhat by detailing what data will be returned. For a read-only analysis tool, this is sufficient though not exhaustive.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters well-documented in the schema (group_by with enum values and default, limit with description and default). The description doesn't add any parameter-specific semantics beyond what the schema already provides. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even without parameter info in the description.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get memory usage breakdown by host or user' with specific details about what data it shows (memory allocated per host, per user, by event/operation type). It distinguishes itself from siblings like 'calculate_memory_usage' and 'get_table_memory_usage' by focusing on host/user-level breakdowns rather than overall calculations or table-specific usage. However, it doesn't explicitly contrast with all memory-related siblings.

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: when you need memory breakdowns by host, user, or event type. It explicitly states the prerequisite 'Requires performance_schema memory instrumentation enabled,' which is valuable usage guidance. However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools.

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

get_replication_statusA
Read-onlyIdempotent

Get MySQL replication status and health.

Analyzes:

  • Master/Source status and binary log position

  • Slave/Replica status and lag

  • Replication errors and warnings

  • Binary log configuration

  • Semi-sync replication status

Works with both MySQL and MariaDB terminology.

ParametersJSON Schema
NameRequiredDescriptionDefault
check_all_channelsNoCheck all replication channels (multi-source)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already provide key behavioral traits: readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds value by specifying what is analyzed (e.g., replication errors, binary log configuration) and compatibility with MySQL/MariaDB, which offers context beyond annotations. However, it does not disclose additional behavioral aspects like rate limits, authentication needs, or error handling, keeping the score at a baseline level with some added 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 appropriately sized and front-loaded, starting with the core purpose ('Get MySQL replication status and health') followed by a bulleted list of analyses and a compatibility note. Every sentence earns its place by providing essential information without redundancy, and the structure is clear and efficient, making it easy for an AI agent to parse and understand quickly.

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 (analyzing replication status across multiple aspects), the annotations provide good behavioral coverage (read-only, idempotent, etc.), and the schema fully describes the single parameter. The description adds meaningful context on what is analyzed and compatibility, compensating for the lack of an output schema. However, it could be more complete by mentioning output format or typical use cases, slightly limiting the score.

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

Parameters3/5

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

The input schema has 100% description coverage, with the single parameter 'check_all_channels' fully documented in the schema. The description does not add any parameter-specific information beyond what the schema provides, such as explaining when to set the parameter to true or false. Given the high schema coverage, the baseline score of 3 is appropriate, as the description does not compensate but also does not need to given the schema's completeness.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Get', 'Analyzes') and resources ('MySQL replication status and health'), and distinguishes it from siblings by focusing on replication rather than other database aspects like queries, indexes, or storage. The explicit mention of analyzing master/source status, slave/replica status, errors, binary log configuration, and semi-sync status provides a detailed scope that sets it apart from tools like 'get_galera_status' or 'get_group_replication_status'.

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

Usage Guidelines3/5

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

The description implies usage context by specifying it 'Works with both MySQL and MariaDB terminology,' which suggests when this tool is applicable. However, it does not explicitly state when to use this tool versus alternatives like 'get_galera_status' or 'get_group_replication_status,' nor does it provide exclusions or prerequisites. The guidance is present but limited to compatibility, lacking detailed comparative advice.

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

get_slow_queriesA
Read-onlyIdempotent

Retrieve slow queries from MySQL performance_schema.

Returns the top N slowest queries with detailed statistics:

  • Total execution time

  • Number of calls

  • Average execution time

  • Rows examined vs rows sent

  • Full table scans

  • Temporary tables usage

Requires performance_schema to be enabled (default in MySQL 5.6+). For older versions, use the slow query log instead.

Note: This tool excludes queries against MySQL system schemas (mysql, information_schema, performance_schema, sys) to focus on user/application query performance.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of slow queries to return (default: 10)
min_exec_time_msNoMinimum total execution time in milliseconds (default: 0)
order_byNoColumn to order results bytotal_time
schema_nameNoFilter by schema/database name (optional)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior, but the description adds valuable context: it specifies that queries against MySQL system schemas are excluded, which is a key behavioral trait not covered by annotations. However, it doesn't mention potential rate limits or authentication 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 well-structured and front-loaded with the core purpose, followed by details on returns, prerequisites, and exclusions. Every sentence adds value without redundancy, making it efficient and easy to parse.

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

Completeness4/5

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

Given the tool's moderate complexity, rich annotations, and full schema coverage, the description is largely complete. It explains what the tool does, when to use it, and key exclusions, though without an output schema, it could benefit from more detail on return format or error handling.

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

Parameters3/5

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

With 100% schema description coverage, the input schema fully documents all parameters. The description adds no specific parameter semantics beyond what's in the schema, so it meets the baseline of 3 without compensating for gaps.

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

Purpose5/5

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

The description clearly states the specific action ('Retrieve slow queries from MySQL performance_schema') and resource ('slow queries'), distinguishing it from siblings like 'get_active_queries' or 'get_statements_with_temp_tables' by focusing on performance metrics of the slowest queries rather than active queries or specific query patterns.

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

Usage Guidelines5/5

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

The description explicitly provides when to use this tool ('Requires performance_schema to be enabled') and when not to use it ('For older versions, use the slow query log instead'), offering clear alternatives and context for its applicability.

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

get_statements_with_errorsA
Read-onlyIdempotent

Get statements that produce errors or warnings.

Identifies queries with:

  • Error counts

  • Warning counts

  • Error rates

Helps identify problematic application queries.

Note: This tool excludes queries against MySQL system schemas (mysql, information_schema, performance_schema, sys) to focus on user/application query analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum statements to return
errors_onlyNoOnly show statements with errors (not warnings)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating safe, non-destructive operations. The description adds valuable behavioral context beyond annotations: it specifies the tool excludes queries against MySQL system schemas (mysql, information_schema, etc.) to focus on user/application analysis, which is important operational guidance not captured in 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 efficiently structured with four sentences that each serve a distinct purpose: stating the core function, listing what it identifies, explaining the use case, and providing an important exclusion note. There's no wasted text, and the most critical information (what the tool does) appears first.

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

Completeness4/5

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

For a read-only tool with good annotations and 100% schema coverage, the description provides strong contextual completeness. It explains the tool's focus, use case, and important exclusions. The main gap is the lack of output schema, but the description compensates somewhat by indicating what information will be returned (error counts, warning counts, error rates).

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters (limit, errors_only) well-documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema, so it meets the baseline of 3 for high schema coverage without providing additional parameter semantics.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get statements that produce errors or warnings' with specific criteria (error counts, warning counts, error rates). It distinguishes from siblings like 'get_slow_queries' or 'get_statements_with_full_scans' by focusing on problematic queries with errors/warnings rather than performance issues.

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 about when to use this tool ('Helps identify problematic application queries') and includes an important exclusion note about MySQL system schemas. However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools.

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

get_statements_with_full_scansA
Read-onlyIdempotent

Get statements that perform full table scans.

Full table scans can severely impact performance on large tables. Identifies queries that:

  • Don't use any index

  • Use a non-optimal index

These queries are prime candidates for index optimization.

Note: This tool excludes queries against MySQL system schemas (mysql, information_schema, performance_schema, sys) to focus on user/application query analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum statements to return
min_rows_examinedNoMinimum rows examined threshold

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, establishing this as a safe read operation. The description adds valuable behavioral context beyond annotations: it explains the performance impact of full scans, specifies exclusion of system schemas, and clarifies the tool's focus on user/application queries. No contradictions with annotations exist.

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

Conciseness5/5

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

The description is well-structured and efficiently written. It starts with the core purpose, explains the significance of full scans, lists identification criteria, states the optimization value, and adds an important exclusion note. Every sentence adds value 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 moderate complexity, comprehensive annotations (read-only, non-destructive, idempotent), and full parameter documentation, the description provides good contextual completeness. It explains the tool's focus, exclusions, and optimization purpose. The main gap is the lack of output schema, but the description compensates reasonably well for a diagnostic tool.

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

Parameters3/5

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

With 100% schema description coverage, both parameters are already documented in the input schema. The description doesn't add any parameter-specific information beyond what the schema provides about 'limit' and 'min_rows_examined'. The baseline score of 3 reflects adequate but not enhanced parameter documentation.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get statements that perform full table scans' with specific criteria (queries without indexes or with non-optimal indexes). It distinguishes from siblings like 'get_slow_queries' or 'analyze_statements' by focusing specifically on full scan performance issues.

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 about when to use this tool ('prime candidates for index optimization') and what it excludes (MySQL system schemas). However, it doesn't explicitly mention when NOT to use it or name specific alternative tools from the sibling list for different types of query analysis.

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

get_statements_with_sortingA
Read-onlyIdempotent

Get statements that perform sorting operations.

Identifies queries with:

  • File sorts (on disk)

  • Memory sorts

  • Sort merge passes

High file sort ratios indicate need for index optimization or sort_buffer_size increase.

Note: This tool excludes queries against MySQL system schemas (mysql, information_schema, performance_schema, sys) to focus on user/application query analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum statements to return
file_sorts_onlyNoOnly show statements with file sorts

TDQS

A4.1/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations. While annotations indicate read-only, non-destructive, and idempotent operations, the description adds that it 'excludes queries against MySQL system schemas' and provides diagnostic guidance about what high file sort ratios indicate. This gives practical usage context that annotations alone don't provide.

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

Conciseness4/5

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

The description is well-structured and appropriately sized. It starts with the core purpose, then details what it identifies, provides diagnostic guidance, and ends with an important exclusion note. Each sentence adds value, though the diagnostic guidance about file sort ratios could be considered slightly beyond the minimal required description.

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

Completeness4/5

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

For a read-only analysis tool with good annotations and full parameter documentation, the description provides good contextual completeness. It explains what the tool returns (statements with sorting operations), what types it identifies, diagnostic implications, and important exclusions. The main gap is the lack of output schema, but the description compensates reasonably well for this.

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

Parameters3/5

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

With 100% schema description coverage, the input schema already fully documents both parameters (limit and file_sorts_only). The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting for parameter documentation.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get statements that perform sorting operations' with specific details about what types of sorting it identifies (file sorts, memory sorts, sort merge passes). It distinguishes from sibling tools by focusing specifically on sorting operations rather than other query analysis aspects like errors, full scans, or temp tables.

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 about when to use this tool: for analyzing user/application queries with sorting operations, excluding MySQL system schemas. It mentions that 'High file sort ratios indicate need for index optimization or sort_buffer_size increase' which gives diagnostic context. However, it doesn't explicitly state when NOT to use it or name specific alternative tools among the siblings.

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

get_statements_with_temp_tablesA
Read-onlyIdempotent

Get statements that create temporary tables.

Temporary tables can cause performance issues when:

  • They're created on disk instead of memory

  • They're created too frequently

  • They grow too large

Identifies queries that should be optimized.

Note: This tool excludes queries against MySQL system schemas (mysql, information_schema, performance_schema, sys) to focus on user/application query analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum statements to return
disk_onlyNoOnly show statements with disk temp tables

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds valuable context beyond annotations: it explains why temporary tables are problematic (performance issues from disk creation, frequency, size) and that it excludes MySQL system schemas, which helps the agent understand the tool's focus and limitations without contradicting 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 well-structured and front-loaded with the core purpose, followed by context on performance issues and exclusions. Each sentence adds value: the first defines the tool, the second explains why it matters, the third states the goal, and the fourth clarifies scope. 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 read-only analysis tool with good annotations and full schema coverage, the description is mostly complete. It provides purpose, context, and exclusions. However, without an output schema, it does not describe the return format (e.g., what fields are included in statements), leaving a minor gap in contextual understanding.

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

Parameters3/5

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

Schema description coverage is 100%, with clear documentation for both parameters (limit and disk_only). The description does not add any parameter-specific information beyond what the schema provides, such as explaining how 'disk_only' relates to the performance issues mentioned. Baseline 3 is appropriate given the schema handles parameter documentation fully.

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

Purpose5/5

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

The description clearly states the specific action ('Get statements that create temporary tables') and resource ('statements'), distinguishing it from siblings like get_slow_queries or get_statements_with_errors by focusing on temporary table creation. The title 'Temp Table Statements' reinforces this specificity.

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 identify queries that should be optimized due to temporary tables causing performance issues. It excludes MySQL system schemas to focus on user/application analysis, but does not explicitly mention when not to use it or name alternative tools among siblings.

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

get_table_memory_usageA
Read-onlyIdempotent

Analyze memory usage for user tables and caches.

Shows:

  • Table cache usage and hit rates

  • Table definition cache efficiency

  • Open tables vs table_open_cache

  • InnoDB buffer pool by table

Note: Buffer pool breakdown by table only shows user/custom tables and excludes MySQL system tables (mysql, information_schema, performance_schema, sys).

Helps optimize table caching parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_buffer_poolNoInclude InnoDB buffer pool by table
top_n_tablesNoNumber of top tables to show

TDQS

A3.7/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, indicating a safe, non-destructive read operation. The description adds valuable context beyond this: it specifies what data is shown (e.g., cache usage, hit rates, InnoDB buffer pool by table) and notes exclusions (e.g., MySQL system tables are excluded from buffer pool breakdown). This enhances understanding of the tool's behavior without contradicting annotations.

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 bullet points for clarity and a concluding sentence on purpose. It's appropriately sized, with each sentence adding value (e.g., listing what's shown and exclusions). However, the first sentence could be more front-loaded with key details, and some redundancy exists (e.g., 'Analyze memory usage' and 'Helps optimize' overlap slightly).

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 (analyzing memory usage with multiple aspects), annotations cover safety and idempotency, and schema fully describes parameters. The description adds context on data scope and exclusions, which is helpful. However, without an output schema, it could benefit from more detail on return format or limitations, but it's largely complete for a read-only analysis tool.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for both parameters (include_buffer_pool and top_n_tables). The description doesn't add significant meaning beyond the schema, as it only mentions buffer pool breakdown by table in the context of exclusions, which is already implied by the parameter name. Baseline score of 3 is appropriate given the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool analyzes memory usage for user tables and caches, specifying the verb 'analyze' and resource 'memory usage for user tables and caches'. However, it doesn't explicitly differentiate from siblings like 'calculate_memory_usage' or 'get_memory_by_host', which appear related but have unspecified distinctions.

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 by stating 'Helps optimize table caching parameters', suggesting it's for performance tuning. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'calculate_memory_usage' or 'analyze_buffer_pool', nor does it specify exclusions or prerequisites.

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

get_table_statsA
Read-onlyIdempotent

Get detailed statistics for MySQL user tables.

Returns information about:

  • Table size (data, indexes, total)

  • Row counts and average row length

  • Index information

  • Auto-increment values

  • Table fragmentation

  • Engine type and collation

Helps identify tables that may need:

  • Optimization (OPTIMIZE TABLE)

  • Index improvements

  • Partitioning consideration

Note: This tool only analyzes user/custom tables and excludes MySQL system tables (mysql, information_schema, performance_schema, sys).

ParametersJSON Schema
NameRequiredDescriptionDefault
schema_nameNoSchema/database to analyze (uses current database if not specified)
table_nameNoSpecific table to analyze (analyzes all tables if not provided)
include_indexesNoInclude index statistics
order_byNoOrder results by this metricsize

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety aspects. The description adds valuable behavioral context beyond annotations: it specifies the exclusion of MySQL system tables, describes the types of statistics returned, and mentions practical use cases for the output. No contradiction with annotations exists.

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 clear sections: purpose statement, detailed return information, use cases, and important note. Every sentence adds value without redundancy, and the information is front-loaded with the core purpose first.

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 comprehensive annotations (readOnlyHint, idempotentHint, etc.) and full parameter documentation in the schema, the description provides good contextual completeness. It explains what the tool returns and why it's useful. The main gap is the absence of an output schema, but the description partially compensates by listing the types of statistics returned.

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

Parameters3/5

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

With 100% schema description coverage, the input schema already fully documents all 4 parameters. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline expectation without providing extra value.

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

Purpose5/5

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

The description clearly states the specific action ('Get detailed statistics') and resource ('MySQL user tables'), with explicit scope boundaries. It distinguishes from siblings by specifying it analyzes user tables only, unlike tools like get_fragmented_tables or get_index_stats which focus on specific aspects.

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 about when to use this tool ('Helps identify tables that may need optimization, index improvements, or partitioning consideration') and what it excludes (MySQL system tables). However, it doesn't explicitly mention when to choose alternative tools like get_fragmented_tables or get_index_stats for more specific analyses.

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

review_settingsA
Read-onlyIdempotent

Review MySQL configuration settings and get recommendations.

Analyzes key performance-related settings:

  • Memory settings (buffer pool, sort buffer, join buffer)

  • InnoDB settings

  • Connection settings

  • Query cache settings (if applicable)

  • Logging settings

Compares against best practices and system resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoCategory of settings to reviewall
include_all_settingsNoInclude all settings, not just performance-related ones

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating a safe, non-mutating operation. The description adds valuable context beyond this: it specifies that the tool 'analyzes key performance-related settings' and 'compares against best practices and system resources,' clarifying its analytical nature and scope. No contradictions with annotations exist.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the core purpose. It uses bullet points efficiently to list analyzed settings, avoiding redundancy. Every sentence adds value, though it could be slightly more concise by integrating the bullet points into a single sentence.

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 analytical nature, annotations cover safety (read-only, non-destructive), and schema fully documents parameters, the description provides adequate context. It explains what the tool analyzes and its comparison methodology. However, without an output schema, it doesn't detail the format of recommendations, leaving a minor gap in completeness.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for both parameters (category and include_all_settings). The description doesn't add specific parameter details beyond what the schema provides, such as explaining the 'replication' category or the implications of include_all_settings. However, it does imply the tool's focus on 'performance-related settings,' which aligns with the parameters' functionality.

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: 'Review MySQL configuration settings and get recommendations.' It specifies the verb 'review' and resource 'MySQL configuration settings' with the outcome 'get recommendations.' It distinguishes from siblings by focusing on configuration analysis rather than performance monitoring, query analysis, or health checks like other tools.

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 usage context by listing the specific settings analyzed (memory, InnoDB, connections, etc.), suggesting it's for performance tuning and best practices. However, it doesn't explicitly state when to use this tool versus alternatives like 'check_database_health' or 'analyze_query,' nor does it mention exclusions or prerequisites.

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

TDQS

A4/5.0
Disambiguation4/5

Most tools have distinct purposes with clear boundaries, such as analyze_auto_increment for overflow checks versus analyze_buffer_pool for memory usage. However, some overlap exists, like analyze_statements and get_slow_queries both analyzing query performance, which could cause minor confusion. Overall, descriptions help differentiate tools effectively.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, using snake_case uniformly. All tools start with verbs like analyze_, get_, find_, check_, or calculate_, followed by descriptive nouns, making the set predictable and readable. No deviations in naming conventions are present.

Tool Count3/5

With 30 tools, the count feels heavy for a performance tuning server, bordering on excessive. While the domain is broad, many tools could be consolidated (e.g., multiple analyze_* tools for specific aspects). This may overwhelm users or agents, though it covers many niche areas.

Completeness5/5

The tool set provides comprehensive coverage for MySQL performance tuning, including analysis, monitoring, and optimization across areas like queries, indexes, memory, transactions, and security. No obvious gaps exist; tools support full lifecycle management from diagnosis to recommendations, ensuring agents can handle most tuning tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that integrates with MySQL databases, enabling secure read and write operations through LLM-driven interfaces with support for transaction handling and performance monitoring.
    52
    18
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Provides comprehensive MySQL database operations including CRUD, performance optimization, health analysis, and anomaly detection. Supports multiple connection modes, OAuth2.0 authentication, and role-based permissions for database management through natural language.
    9
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A high-performance MCP server that enables AI assistants to safely interact with MySQL databases through secure CRUD operations, schema inspection, and parameterized queries with built-in SQL injection prevention.
    1

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/isdaniel/mysqltuner_mcp'

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