Skip to main content
Glama
az-coder-123

SQL Server MCP

by az-coder-123

SQL Server MCP

An MCP (Model Context Protocol) server that connects AI assistants to Microsoft SQL Server databases. Enables AI tools like GitHub Copilot, Cursor, Cline, Claude Desktop, and Claude Code to explore database schemas and execute read-only queries safely.

TypeScript Node.js SQL Server MCP


Features

  • 29 built-in tools for comprehensive database analysis and management

  • Read-only by design — uses db_datareader role, blocks all destructive SQL

  • SQL injection protection — AST-based query validation + keyword blocklist

  • Automatic row limits — prevents memory overflow with smart TOP N injection

  • AI-friendly errors — structured error responses with actionable suggestions

  • Schema caching — 1-hour TTL metadata cache reduces redundant DB calls

  • Unicode/Vietnamese support — full NVARCHAR UTF-8 passthrough

  • Dual transportstdio (default) for local AI tools, HTTP/SSE for web clients

  • Data analysis — table statistics, index information, and column distribution

  • Data export — export table data to JSON or CSV format

  • Complete schema understanding — views, constraints, stored procedures, and server info

  • Security auditing — user management and permission analysis

  • Enhanced profiling — detailed column distribution with pattern recognition

  • Dependency mapping — full dependency analysis for tables and columns

  • Schema management — comprehensive schema organization and analysis

  • Data quality validation — integrity checks and comprehensive profiling

  • Documentation automation — generate schema documentation and ER diagrams


Related MCP server: DBMCP

Available Tools

Database & Schema (3 tools)

Tool

Description

list_databases

List all user-accessible databases on the SQL Server instance

list_schemas

List all schemas in database with table and view counts

list_tables

List tables and views in a specific schema

Schema Exploration (5 tools)

Tool

Description

describe_table

Get column details: name, type, nullable, PK, description

get_table_relationships

Get foreign key mappings for a table (guides JOINs)

search_tables

Search tables/columns/descriptions by keyword

get_view_definition

Get SQL definition of a view along with referenced tables

list_constraints

List all constraints (PK, FK, Unique, Check) for a table

Data Analysis (6 tools)

Tool

Description

get_table_statistics

Get table statistics including row count, size, and timestamps

get_table_indexes

Get all indexes for a table with column details

analyze_table

Analyze table data to get distribution statistics for each column

get_column_distribution

Get detailed distribution statistics for a specific column with pattern recognition

list_stored_procedures

List all stored procedures and functions with parameters

get_procedure_definition

Get full SQL definition of a stored procedure or function

Dependencies & Usage (2 tools)

Tool

Description

get_table_dependencies

Get full dependency map for a table (what it depends on and what depends on it)

get_column_usage

Get detailed usage information for a specific column (views, procedures, foreign keys, indexes)

Data Quality (2 tools)

Tool

Description

validate_data_integrity

Validate data integrity for a table (FK violations, duplicates, null violations)

get_data_profile

Get comprehensive data profile for a table including quality metrics

Documentation (3 tools)

Tool

Description

generate_schema_documentation

Generate comprehensive schema documentation with tables, views, columns, and relationships

create_entity_relationship_diagram

Create entity relationship diagram in Mermaid, PlantUML, or DOT format

generate_api_documentation

Generate REST API documentation from database schema with inferred endpoints and schemas

Migration & Comparison (2 tools)

Tool

Description

create_migration_scripts

Generate migration scripts for schema changes with up/down migrations

compare_schemas

Compare two schemas to identify differences in tables, views, and procedures

Server & System (1 tool)

Tool

Description

get_server_info

Get SQL Server information including version, edition, and status

Security & Users (2 tools)

Tool

Description

list_users

List all database users and their roles

get_user_permissions

Get detailed permissions for a specific user

Data Export & Query (3 tools)

Tool

Description

execute_read_query

Execute a validated read-only SELECT query

export_table_data

Export table data to JSON or CSV format

clear_cache

Clear the metadata cache to force fresh data


Quick Start

1. Install

git clone https://github.com/az-coder-123/sql-server-mcp.git
cd sql-server-mcp
npm install
npm run build

2. Configure

Copy the environment template and fill in your SQL Server credentials:

cp .env.example .env

Edit .env:

DB_HOST=localhost
DB_PORT=1433
DB_NAME=MyDatabase
DB_USER=readonly_user
DB_PASSWORD=your_password
DB_ENCRYPT=true
DB_TRUST_SERVER_CERT=false

Important: The DB_USER should have the db_datareader role only. The server blocks all write operations at the code level, but defense-in-depth at the database level is strongly recommended.

3. Run

# stdio mode (default — for AI tools)
npm start

# Development mode (with hot reload)
npm run dev

# HTTP/SSE mode (for web clients)
MCP_TRANSPORT=http npm start

Integration with AI Tools

GitHub Copilot (VS Code)

Create .vscode/mcp.json in your project:

{
  "servers": {
    "sql-server-mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/sql-server-mcp/dist/index.js"],
      "env": {
        "DB_SERVER": "localhost",
        "DB_DATABASE": "MyDatabase",
        "DB_USER": "readonly_user",
        "DB_PASSWORD": "${input:dbPassword}"
      }
    }
  }
}

VS Code will securely prompt for the password at runtime via ${input:dbPassword}.

Cursor

Create .cursor/mcp.json:

{
  "mcpServers": {
    "sql-server-mcp": {
      "command": "node",
      "args": ["/path/to/sql-server-mcp/dist/index.js"],
      "env": {
        "DB_SERVER": "localhost",
        "DB_DATABASE": "MyDatabase",
        "DB_USER": "readonly_user",
        "DB_PASSWORD": "your_password"
      }
    }
  }
}

Cline (VS Code Extension)

  1. Open Cline settings in VS Code

  2. Go to MCP ServersAdd Server

  3. Select Command (stdio)

  4. Enter:

    • Command: node

    • Args: /path/to/sql-server-mcp/dist/index.js

    • Env: DB_SERVER=localhost, DB_DATABASE=MyDatabase, DB_USER=readonly_user, DB_PASSWORD=your_password

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %AppData%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "sql-server-mcp": {
      "command": "node",
      "args": ["/path/to/sql-server-mcp/dist/index.js"],
      "env": {
        "DB_SERVER": "localhost",
        "DB_DATABASE": "MyDatabase",
        "DB_USER": "readonly_user",
        "DB_PASSWORD": "your_password"
      }
    }
  }
}

Claude Code (CLI)

claude --mcp-config ./mcp-config.json "Show me all tables in database"

Where mcp-config.json uses the same mcpServers format as Claude Desktop above.


Configuration Reference

All settings are configured via environment variables (or .env file):

Variable

Default

Description

DB_HOST

localhost

SQL Server hostname or IP

DB_PORT

1433

SQL Server port

DB_NAME

master

Default database

DB_USER

SQL Server login username

DB_PASSWORD

SQL Server login password

DB_ENCRYPT

true

Enable TLS encryption

DB_TRUST_SERVER_CERT

false

Trust self-signed certificates

MCP_TRANSPORT

stdio

Transport mode: stdio or http

MCP_HTTP_PORT

3000

HTTP server port (when MCP_TRANSPORT=http)

QUERY_ROW_LIMIT

100

Max rows returned per query (auto-injected)

QUERY_TIMEOUT_MS

30000

Query timeout in milliseconds

PAYLOAD_MAX_BYTES

1048576

Max response payload size (1MB)

SCHEMA_CACHE_TTL_SECONDS

3600

How long schema metadata is cached


Security

This server is designed for read-only database access with multiple layers of protection:

  1. Database-level: Uses a db_datareader-only account with readOnlyIntent connection flag

  2. Query validation: AST-based parsing via node-sql-parser (with regex fallback for T-SQL edge cases)

  3. Keyword blocklist: INSERT, UPDATE, DELETE, DROP, EXEC, TRUNCATE, ALTER, CREATE, GRANT, REVOKE, MERGE and more

  4. Multi-statement blocking: Semicolons outside string literals are rejected

  5. Row limiting: Automatic TOP N injection prevents memory exhaustion

  6. Payload truncation: Responses exceeding 1MB are truncated with a warning

  7. Connection timeout: 30-second hard timeout on all queries


Project Structure

sql-server-mcp/
├── src/
│   ├── index.ts                          # Server entry point, tool registration, transport
│   ├── config/database.ts                   # Connection pool, env vars
│   ├── tools/
│   │   ├── schemaTools.ts                 # list_databases, list_tables, describe_table, relationships, search
│   │   ├── schemaManagementTools.ts        # list_schemas
│   │   ├── queryTools.ts                  # execute_read_query
│   │   ├── tableStatisticsTools.ts          # get_table_statistics
│   │   ├── tableIndexTools.ts             # get_table_indexes
│   │   ├── tableAnalysisTools.ts          # analyze_table
│   │   ├── columnTools.ts                # get_column_distribution
│   │   ├── storedProcedureTools.ts          # list_stored_procedures
│   │   ├── exportTools.ts                 # export_table_data
│   │   ├── viewTools.ts                   # get_view_definition
│   │   ├── constraintTools.ts              # list_constraints
│   │   ├── serverInfoTools.ts             # get_server_info
│   │   ├── procedureDefinitionTools.ts     # get_procedure_definition
│   │   ├── userTools.ts                   # list_users, get_user_permissions
│   │   ├── dependencyTools.ts            # get_table_dependencies
│   │   ├── usageTools.ts                 # get_column_usage
│   │   ├── dataIntegrityTools.ts         # validate_data_integrity
│   │   ├── dataProfileTools.ts          # get_data_profile
│   │   ├── documentationTools.ts         # generate_schema_documentation
│   │   ├── apiDocumentationTools.ts     # generate_api_documentation
│   │   ├── migrationTools.ts            # create_migration_scripts
│   │   ├── schemaComparisonTools.ts     # compare_schemas
│   │   └── diagramTools.ts              # create_entity_relationship_diagram
│   ├── types/index.ts                     # Shared TypeScript interfaces
│   ├── utils/
│   │   ├── sqlValidator.ts                # AST + regex query validation, TOP injection
│   │   └── errorMapper.ts                 # SQL error code → AI-friendly messages
│   └── cache/schemaCache.ts              # In-memory TTL cache
├── tests/                                # Unit tests (vitest)
├── dist/                                 # Compiled output (npm run build)
├── .env.example                          # Environment variable template
└── package.json

Development

# Install dependencies
npm install

# Run in dev mode (hot reload)
npm run dev

# Run tests
npm test

# Build for production
npm run build

License

ISC

Available Tools

49 tools
analyze_normalization_levelB

Analyze normalization level of tables using heuristic approach (1NF, 2NF, 3NF detection)

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameNoSpecific table to analyze (default: all tables)

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It only mentions 'heuristic approach', which is a vague caveat. It does not disclose whether the tool performs a read-only analysis, whether it scans all tables by default (schema and tableName optional), what the output format is, or any potential performance impact. This is insufficient for a tool with no annotation support.

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

Conciseness5/5

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

The description is a single, compact sentence that front-loads the core purpose and includes the key qualifier 'heuristic approach' and the specific normalization levels. There is no redundant or filler content, and every word adds value.

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

Completeness2/5

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

Despite having only 2 optional parameters and a concise description, the tool lacks an output schema and annotations. The description does not explain what the tool returns (e.g., a report, a score, a list of violations) or how the result should be interpreted. For an agent to invoke this tool correctly, it needs more context about the output and potential side effects, so the description is incomplete.

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%, meaning both parameters (schema and tableName) are already described in the input schema. The description adds no extra parameter-level detail, but does not need to. Baseline of 3 applies because the schema does the heavy lifting, and the description does not contradict or extend it.

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

Purpose5/5

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

The description uses a specific verb 'analyze' and identifies the resource 'normalization level of tables', plus the method 'heuristic approach' and the specific forms (1NF, 2NF, 3NF). This clearly distinguishes it from sibling tools like analyze_table, which likely covers broader table analysis, and get_table_statistics, which focuses on statistical metrics.

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

Usage Guidelines3/5

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

The description implies usage: when you need to check normalization level. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide any exclusions or caveats about when not to use it. The phrase 'heuristic approach' hints at a non-exact analysis but does not guide the agent toward or away from specific scenarios.

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

analyze_query_performanceB

Analyze query performance using execution statistics DMVs to find slow queries and bottlenecks

ParametersJSON Schema
NameRequiredDescriptionDefault
topNNoNumber of results to return (default: 10)
schemaNoSchema name (default: dbo)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions the method (DMVs) and the purpose, but does not disclose whether the operation is read-only, the required permissions, or any potential performance impact. The verb 'analyze' hints at a read-only operation but this is not explicit.

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

Conciseness5/5

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

The description is a single, succinct sentence that front-loads the action verb and stays focused on the core purpose. Every word contributes value, with no redundancy or filler.

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

Completeness2/5

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

For a tool with no output schema and no annotations, the description is sparse. It does not explain the structure of the returned data, any required privileges, or limitations. While the purpose is clear, the behavioral context is insufficient for an agent to fully understand the tool's execution and results.

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 covers 100% of parameters (topN and schema) with descriptive text and defaults, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'analyze', the resource 'query performance', the method 'using execution statistics DMVs', and the goal 'to find slow queries and bottlenecks'. This distinguishes it from sibling tools like get_table_statistics or suggest_index_optimizations.

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 purpose implies when to use the tool (to find slow queries and bottlenecks), but there is no explicit guidance on when not to use it or which alternatives to choose instead. No exclusions or comparisons are provided.

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

analyze_schema_change_impactB

Analyze impact of schema changes by finding all dependent objects

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameYesTable name to analyze impact for

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only states the core behavior (finding dependent objects) but does not disclose whether the tool is read-only, what 'impact' entails, what output format to expect, or any potential performance 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 a single front-loaded sentence with zero filler. Every word earns its place, making it efficiently concise for the information it conveys.

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

Completeness2/5

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

This is a complex analysis tool, yet the description is minimal. With no output schema, no annotations, and no mention of output format, coverage of dependent object types, or relationship to sibling tools, the context provided is insufficient for an agent to fully understand the tool's behavior.

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 schema and tableName fully described. The description itself adds no parameter-specific meaning, leaving the burden to the schema. Baseline score of 3 applies.

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 schema change impact by finding dependent objects. It uses a specific verb-resource pairing and distinguishes itself from sibling tools like get_table_dependencies by focusing on impact assessment rather than mere dependency listing.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as get_table_dependencies or compare_schemas. It lacks any context on appropriate scenarios, exclusions, or prerequisites.

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

analyze_tableC

Analyze table data to get distribution statistics for each column

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameYesName of the table

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure, but it only states the action and outcome. It does not reveal whether the tool is read-only, whether it can handle large tables, or what specific statistics are computed, which are critical for safe invocation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core function without redundancy.

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

Completeness2/5

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

The description is too minimal for a tool with no output schema and no annotations. It omits behavioral context, return values, and any differentiation from similar sibling tools like get_column_distribution or get_table_statistics, leaving significant gaps for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters (schema and tableName) clearly documented. The tool description adds no additional parameter context beyond what the schema provides, so the baseline score of 3 is appropriate.

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 table data and produces distribution statistics per column. However, it does not differentiate from similar siblings like get_column_distribution or get_table_statistics, so it lacks explicit sibling distinction.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It neither provides preferred use cases nor mentions exclusions or prerequisites, leaving the agent to guess based on the name alone.

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

audit_user_permissionsC

Audit user permissions for security analysis and compliance

ParametersJSON Schema
NameRequiredDescriptionDefault
userNameNoSpecific user to audit (default: all users)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations available, the description carries full responsibility for behavioral disclosure. It doesn't state whether the audit is read-only, whether it has side effects, what permissions are checked, or what the output format is. The description essentially restates the tool's name with a purpose clause.

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

Conciseness5/5

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

The description is a single sentence, concise and front-loaded with the action. No wasted words.

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

Completeness2/5

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

Despite the simple parameter set, the description lacks critical information about return values, behavioral effects, and requirements (e.g., admin privileges, read-only nature). The absence of an output schema makes this gap more significant, leaving the agent uncertain what the tool will produce.

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 describes the single userName parameter with a clear default and purpose, achieving 100% schema coverage. The tool description adds no additional parameter semantics, so the baseline score of 3 applies.

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

Purpose4/5

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

The description clearly identifies the tool as performing an audit of user permissions, with a stated purpose of security analysis and compliance. It uses the specific verb 'audit' and the resource 'user permissions', and the context helps differentiate from a simple retrieval like get_user_permissions, though the exact scope isn't defined.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives like get_user_permissions or list_users. It implies a security/compliance context but doesn't state when to choose this tool or when to prefer others.

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

backup_databaseB

Backup a SQL Server database to a .bak file with optional compression

ParametersJSON Schema
NameRequiredDescriptionDefault
backupPathYesFull path for the backup file (e.g., /var/opt/mssql/backup/mydb.bak)
backupTypeNoBackup type: FULL or DIFFERENTIAL (default: FULL)
descriptionNoOptional description for the backup
databaseNameYesName of the database to backup

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description must disclose permissions, side effects, or overwrite behavior. It only mentions the backup action and optional compression, omitting prerequisites, database locking, or file overwrite policy. This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the action and resource, and contains no filler or redundant information. It is appropriately concise.

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

Completeness2/5

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

The schema is well-documented, but the lack of annotations, output schema, and behavioral details (e.g., what happens if the file exists, whether a confirmation is returned) leaves the agent guessing about operational context. The description is adequate only for the simplest invocation.

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?

All four parameters have detailed schema descriptions (100% coverage), so the schema carries the semantic weight. The description's mention of 'optional compression' is not mapped to any parameter, which adds slight confusion but does not lower the baseline.

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

Purpose5/5

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

The description uses the specific verb 'backup' with a clear resource ('SQL Server database') and output format ('.bak file'), distinguishing it from restore/list backup tools. It also mentions optional compression, which is an additional distinguishing feature.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives. There is no mention of scenarios like pre-migration backups or references to restore_database or list_backups. The description only states the action without any contextual usage.

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

check_database_connectionsA

Check active connections to a database (useful before restore)

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNameNoDatabase name to check (default: all databases)

TDQS

A4/5.0
Behavior3/5

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

The verb 'check' implies a read-only operation, and the restore context hints at the purpose. But with no annotations, the description carries full burden and does not disclose output format, whether it disconnects anything, or permission requirements. It adds some value but lacks rich behavioral context.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to the meaning, making it highly concise and well-structured.

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

Completeness4/5

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

For a simple read-only check with one thoroughly documented optional parameter and no output schema, the description covers the purpose and primary use case. It lacks output details, but the tool's simplicity and schema coverage mitigate the gap, making it reasonably complete.

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

Parameters3/5

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

The only parameter databaseName is fully described in the schema with 100% coverage, including default behavior ('default: all databases'). The description does not add any additional parameter semantics beyond the schema, so the baseline of 3 applies.

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 checks active connections to a database, with a specific verb ('check') and resource ('active connections to a database'). The parenthetical '(useful before restore)' provides a distinct use case, and it differentiates from sibling tools like disconnect_database_users and kill_database_sessions by being a read-only check.

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

Usage Guidelines4/5

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

The description explicitly indicates when to use the tool ('useful before restore'), giving clear context. However, it does not mention alternatives or exclusions, so it does not fully meet the 5-level bar for explicit when/when-not/alternatives.

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

clear_cacheA

Clear the schema metadata cache to force fresh data from the database

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It clearly states the primary effect (clears cache, forces fresh data) but does not mention potential side effects such as temporary performance degradation or the scope of the invalidation (e.g., entire schema vs. specific tables). This is acceptable for a simple operation but lacks rich 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 a single sentence that immediately states the action and its purpose. It is concise, front-loaded, and contains no filler or 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?

The tool is simple, has no parameters, and no output schema. The description explains the action and its intended consequence. It lacks only minor details such as whether the cache clear is global or session-specific, but for the simplicity of the tool, it is sufficiently complete.

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

Parameters4/5

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

The tool has zero parameters, so the description need not explain any. Per the rubric, 0 parameters baseline is 4, and the description adds a clear purpose for this no-arg tool, so this score is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Clear') and resource ('schema metadata cache') and explains the intended effect ('to force fresh data from the database'). It clearly distinguishes this tool from all sibling tools, none of which target cache clearing.

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

Usage Guidelines3/5

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

The phrase 'to force fresh data from the database' implies the scenario for use, but it does not explicitly state when to use this tool versus alternatives or provide any exclusions. The guidance is implied rather than explicit, so it falls short of a 4.

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

compare_schemasA

Compare two schemas to identify differences in tables, views, and procedures

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceSchemaNoSource schema name (default: dbo)
targetSchemaNoTarget schema name (default: dbo)
targetDatabaseNoTarget database name (default: same as current)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of explaining behavior. It states what the tool compares but does not disclose whether it is strictly read-only, what output format to expect, or any prerequisites. The term 'compare' suggests a non-mutating operation, but this is not made explicit.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core action ('Compare two schemas') and then specifies the objects of interest. There is no wordiness 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 simple tool with three optional parameters and no output schema, the description adequately communicates its primary purpose. It could mention the return format or any limitations, but these are not critical for a basic understanding of the tool's functionality.

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 covers all three parameters with descriptions (100% coverage), so the description does not need to add parameter-level detail. The description also does not attempt to re-explain the parameters, keeping the separation clean.

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

Purpose5/5

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

The description uses a specific verb 'compare' with a clear resource ('two schemas') and specifies the scope ('tables, views, and procedures'). It effectively distinguishes itself from sibling tools that focus on describing, listing, or analyzing individual objects.

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

Usage Guidelines3/5

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

The description implies usage when comparing schemas but does not explicitly state when to use this tool versus alternatives. It offers no exclusions or references to sibling tools that might also be relevant for different comparison needs.

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

create_databaseA

Create a new SQL Server database with specified options

ParametersJSON Schema
NameRequiredDescriptionDefault
collationNoCollation for the database (default: server default)
maxSizeMBNoMaximum size in MB (default: UNLIMITED)
databaseNameYesName of the database to create
fileGrowthMBNoFile growth increment in MB (default: 256)
initialSizeMBNoInitial size in MB (default: server default)

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only states that a database is created, but does not mention required permissions, behavior if the database already exists, or potential side effects. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the key information (verb and resource) and contains no unnecessary words. It is highly concise and well-structured.

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

Completeness3/5

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

The tool's purpose is clear and all parameters are documented, but the description lacks important context such as output/return value, error conditions, and permission requirements. Given the absence of annotations and output schema, the description should provide more behavioral context to be fully complete.

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

Parameters3/5

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

The input schema provides 100% coverage with descriptions for all five parameters, so the baseline is 3. The description does not add any parameter-specific meaning beyond 'specified options', but the schema already 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 action ('Create') and the specific resource ('a new SQL Server database'), making it unambiguous. This distinguishes it from sibling tools like backup_database or create_migration_scripts.

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

Usage Guidelines3/5

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

The description implies the tool is used when a new SQL Server database needs to be created, but it offers no explicit guidance on when to choose this over alternatives or any prerequisites. There are no exclusions or alternative tool references.

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

create_entity_relationship_diagramA

Create entity relationship diagram in Mermaid, PlantUML, or DOT format

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoDiagram format (default: mermaid)
schemaYesSchema name to diagram
includeViewsNoInclude views in diagram (default: false)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the tool creates a diagram but does not disclose whether it returns diagram code, writes a file, or requires any permissions. There is no mention of side effects or output behavior, leaving significant ambiguity.

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

Conciseness5/5

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

The description is a single sentence of ten words, front-loading the core purpose and format options. Every word earns its place, with no redundancy or unnecessary detail.

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

Completeness3/5

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

The description is adequate for a simple tool but leaves gaps. It does not explicitly state that the output is diagram code in the chosen format, nor does it mention optional parameters like includeViews. Given the lack of an output schema and annotations, a bit more context would improve completeness, but the current level is minimally sufficient.

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

Parameters3/5

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

Schema coverage is 100%, meaning all parameters are documented in the schema, so the baseline is 3. The description itself does not add any parameter-level detail beyond what the schema already provides, but it does not need to compensate due to full 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 uses a specific verb ('Create') and a clear resource ('entity relationship diagram'), and further specifies the output formats (Mermaid, PlantUML, DOT). This clearly distinguishes it from sibling tools like get_table_relationships or generate_schema_documentation.

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 use when an ER diagram is needed, but does not explicitly state when to use this tool versus alternatives, nor are any exclusions or prerequisites mentioned. The usage context is only inferred from the tool's name and purpose.

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

create_migration_scriptsB

Generate migration scripts for schema changes with up/down migrations

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
changesYesArray of table changes to generate migration scripts for

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of disclosing behavior. It only states that it generates scripts, but does not clarify whether this is a read-only operation, whether it modifies the database, whether it writes files or returns text, or whether it requires elevated permissions. The phrase 'generate migration scripts' implies a safe code-generation operation, but this is not explicitly confirmed.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no fluff. It communicates the core action and scope efficiently. Every word contributes to understanding the tool's purpose, making it an excellent example of conciseness.

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

Completeness2/5

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

The tool has a complex input schema with nested objects for column, index, and constraint changes, and no output schema is provided. The one-sentence description does not explain how to structure 'changes', what constitutes valid input, or what the generated scripts look like (e.g., file paths, return format). This is a significant gap for a tool with such detailed schema, leaving an agent uncertain about invocation details.

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 provides detailed descriptions for both parameters ('schema' and 'changes'), with 100% coverage. The description does not add any information about parameters, but since the schema already covers them thoroughly, the baseline of 3 is appropriate. The description's mention of 'up/down migrations' gives a hint about expected change types, but it does not elaborate on parameter structure or syntax.

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: 'Generate migration scripts for schema changes with up/down migrations'. It uses a specific verb ('Generate') and resource ('migration scripts'), and the qualifier 'with up/down migrations' adds useful scope. This distinguishes it from sibling tools like generate_schema_documentation or generate_api_documentation, which produce different outputs.

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

Usage Guidelines3/5

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

The description implies when to use the tool: when you have schema changes and need migration scripts. However, it does not explicitly mention alternatives or provide conditions like prerequisites (e.g., needing a database connection or valid 'changes' structure). There is no guidance on when not to use it or how it relates to other tools such as compare_schemas or analyze_schema_change_impact.

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

describe_tableA

Get column details (name, type, PK, description) for a table

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameYesName of the table to describe

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It indicates this is a read operation ('Get') and reveals what fields will be returned, but it does not mention permissions, potential errors, or any side effects. This is adequate for a simple metadata lookup but not rich.

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

Conciseness5/5

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

The description is a single, well-structured sentence that immediately states the action and the result. It contains no redundant words or filler, earning the highest score.

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

Completeness4/5

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

For a simple tool with two documented parameters and no output schema, the description adequately conveys the return fields (name, type, PK, description). It is complete enough for an agent to understand what the tool does and what to expect, though it could mention that 'PK' means primary key for absolute clarity.

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 documents both parameters. The description adds no extra meaning beyond what the schema provides (e.g., default value for 'schema' is already noted). Baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get') and a clear resource ('column details for a table'), and it explicitly lists the output fields (name, type, PK, description). This clearly distinguishes it from sibling tools like get_table_indexes or get_table_relationships, which target different aspects of a table.

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

Usage Guidelines4/5

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

The description clearly states the context: use this when you need column-level metadata for a table. It does not explicitly mention alternatives or exclusions, but the tool name plus description make the use case obvious enough for an agent to select it appropriately.

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

detect_circular_dependenciesA

Detect circular dependencies in foreign key relationships

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It does not state whether the tool is read-only, what output format to expect, whether it requires specific permissions, or if it performs a database-wide scan. This is a significant gap for a tool that an agent would invoke to detect issues.

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

Conciseness5/5

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

The description is a single, focused sentence that directly states the tool's purpose without any filler or redundant information. It is appropriately concise and front-loaded.

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

Completeness3/5

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

The tool is simple with one optional parameter and no output schema. The description tells the agent what the tool does, but it does not explain what the tool returns (e.g., a list of cycles, a report, a boolean) or how the results are structured. Given the low complexity, this is a moderate gap, not a fatal one.

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 one optional parameter with a description ('Schema name (default: dbo)'), and schema description coverage is 100%. The description itself adds no parameter-level detail, but the schema already fully documents the only parameter, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('detect') and clearly identifies the resource ('circular dependencies in foreign key relationships'), which distinguishes it from sibling tools like get_table_relationships or get_table_dependencies that deal with general dependency or relationship discovery.

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

Usage Guidelines3/5

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

The description implies the tool is used when you need to find circular foreign-key dependency cycles, but it does not explicitly state when to use it over alternatives or mention any exclusions. The context is clear but not differentiated from related tools.

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

disconnect_database_usersA

Disconnect all users from a database by setting access mode (useful before restore)

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoAccess mode (default: SINGLE_USER)
databaseNameYesDatabase name to disconnect users from
rollbackImmediateNoRollback active transactions immediately (default: true)

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must explain behavioral consequences. It mentions 'setting access mode' but fails to disclose critical effects like active transactions being rolled back (as hinted by the rollbackImmediate parameter) or the fact that new connections may be blocked. This is a significant gap for a disruptive operation.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the core action and use case, with no filler or repetition.

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

Completeness2/5

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

Given the lack of annotations, an output schema, and the disruptive nature of the operation, the description is incomplete. It does not explain risks, side effects, or what happens to active sessions and transactions. The schema covers parameters, but the broader behavioral context is missing.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are fully described in the schema. The description adds little beyond the schema, only loosely linking the mode parameter to the mechanism. Baseline 3 is appropriate.

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 action ('Disconnect all users from a database'), specifies the mechanism ('by setting access mode'), and provides a concrete use case ('useful before restore'). This distinguishes it from sibling tools like kill_database_sessions, which might terminate individual sessions rather than altering access mode.

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

Usage Guidelines4/5

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

The phrase 'useful before restore' gives clear context for when to use the tool. However, it does not explicitly mention alternatives or when not to use it, though the context implies it is intended for pre-restore scenarios.

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

execute_read_queryA

Execute a read-only SQL SELECT query (automatically validated and row-limited)

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlQueryYesT-SQL SELECT query to execute

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the tool is read-only (safety profile), automatically validated (prevents invalid queries), and row-limited (capping result size). These are valuable behavioral traits beyond what the schema or tool name conveys. It does not discuss authorization or error handling, but the disclosed traits are sufficient for safe usage.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It communicates the core purpose and two important constraints in a compact form, fitting the criteria for ideal conciseness.

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

Completeness4/5

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

For a tool with one simple string parameter and no output schema, the description is largely complete: it specifies the operation type, the query language, and safety limits. It does not explicitly state the return type (query results), but that is implied by 'SELECT query'. The absence of explicit return details is a minor gap, but overall the description is sufficient for an agent to select and invoke the 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?

The schema already fully describes the single parameter 'sqlQuery' as a 'T-SQL SELECT query to execute' (100% coverage). The description adds that the query is read-only and row-limited, which sets execution constraints, but it does not add new formatting or syntax details about the parameter itself. Baseline 3 is appropriate since 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 uses a specific verb 'Execute' and clearly identifies the resource as a 'read-only SQL SELECT query', with additional scoping details ('automatically validated and row-limited'). This distinguishes it from sibling tools that focus on metadata, analysis, or maintenance rather than direct query execution.

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 tool's purpose is contextually clear: it is for running read-only SELECT queries safely. It implies use for ad-hoc data retrieval without data modification, but it does not explicitly mention exclusions or name alternative tools for write operations or other query types. This is clear context without explicit when-not guidance.

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

export_table_dataB

Export table data to JSON or CSV format

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to export (default: 1000)
formatYesExport format
schemaNoSchema name (default: dbo)
tableNameYesName of the table
whereClauseNoOptional WHERE clause to filter data

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits, but it only mentions the output formats. It does not indicate whether the operation is read-only, how the export is delivered (e.g., file vs. string), any size limits, or side effects. This is a significant gap for a tool without annotation support.

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

Conciseness5/5

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

The description is a single sentence that quickly states the action and output formats. It is front-loaded and contains no redundant or filler content, making it highly concise and well-structured.

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

Completeness2/5

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

Given the tool's 5 parameters, no output schema, and lack of annotations, the description is too sparse. It fails to clarify the export output format/delivery mechanism, constraints like the default limit, or any distinguishing context from similar data-retrieval tools. The high schema coverage mitigates parameter ambiguity but does not compensate for the missing high-level behavioral context.

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 five parameters, including the format enum and defaults. The description adds no semantic value beyond the schema's existing parameter descriptions, aligning with the baseline score 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 action ('Export') and resource ('table data'), along with specific output formats (JSON or CSV). This precise framing distinguishes it from sibling tools like execute_read_query or describe_table, making the purpose unambiguous.

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

Usage Guidelines3/5

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

The verb 'export' implies the tool is for obtaining data in a portable format, but the description does not explicitly discuss when to use it over alternatives like execute_read_query or provide any exclusions. No explicit usage guidance is given, only what is inferred from the tool's name.

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

find_unused_stored_proceduresA

Find stored procedures that are not executed recently or never executed

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
unusedDaysNoNumber of days to consider as unused (default: 30)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the outcome but does not disclose how 'unused' is determined (e.g., reliance on execution statistics) or potential caveats like the resetting of baselines after server restarts. This is a moderate transparency gap for a diagnostic tool.

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

Conciseness5/5

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

The description is a single, 12-word sentence that directly states the tool's purpose. There is no redundant phrasing or filler, making it highly efficient.

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

Completeness4/5

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

Given the tool's low complexity, two optional parameters fully described in the schema, and no output schema, the description is sufficient for an agent to understand what the tool does and invoke it. It could mention the return format for extra clarity, but the purpose is self-evident enough to warrant a 4.

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?

Both parameters have descriptions in the schema (100% coverage), so the schema already documents meaning and defaults. The description does not add extra context beyond what the schema provides, thus the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Find') with a clear resource ('stored procedures') and a precise filter ('not executed recently or never executed'). This distinguishes it from sibling tools like list_stored_procedures, which would simply enumerate all procedures.

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 intended use case is clear: to identify stored procedures that may be candidates for cleanup or review based on lack of execution. There is no explicit when-not-to-use or alternative naming, but the context is evident from the description and sibling set.

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

generate_api_documentationB

Generate REST API documentation from database schema with inferred endpoints and schemas

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name to document (default: dbo)
baseUrlNoBase URL for API endpoints (default: /api/v1)
includeProceduresNoInclude stored procedures as API endpoints (default: true)

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral transparency, but it only states the high-level action and output concept. It does not disclose whether the tool is read-only, whether it writes files, requires specific permissions, or has any side effects or limitations. Also missing are return format and how inference works.

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 one concise sentence, front-loaded with the main action and resource. It is efficient with no filler, though it may be slightly too terse to cover behavioral context. Still, it earns a high score for structure.

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

Completeness2/5

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

The tool has three optional parameters and no output schema, so the description should explain the output format or delivery mechanism (e.g., file, JSON, markdown) and the inference process. It does not clarify how the generated documentation is returned or how it differs from sibling documentation tools, leaving a significant 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?

All three parameters have schema descriptions (100% coverage), so the baseline is 3. The description's phrase 'inferred endpoints and schemas' vaguely relates to includeProcedures, but it adds little beyond the schema's parameter descriptions and does not clarify how parameters interact or affect output.

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 action ('Generate') and the resource ('REST API documentation from database schema'), while specifying the key feature of 'inferred endpoints and schemas'. This distinguishes it from sibling tools like generate_schema_documentation or describe_table, which focus on schema structure rather than API documentation.

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

Usage Guidelines3/5

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

The description implies usage when API documentation needs to be produced from a database schema, but it does not provide explicit when-to-use vs alternatives guidance, such as comparing with generate_schema_documentation or create_entity_relationship_diagram. No exclusions or alternative tool references are mentioned.

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

generate_schema_documentationB

Generate comprehensive schema documentation with tables, views, columns, and relationships

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name to document (default: all schemas)
includeViewsNoInclude views in documentation (default: true)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states the documentation scope but does not disclose output format, potential side effects, permission requirements, or whether the operation is read-only, leaving significant transparency gaps.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that directly states the tool's purpose and scope without any wasted words or filler.

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

Completeness3/5

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

The interface is simple with two optional parameters and no output schema. The description covers the main purpose, but lacks behavioral context such as what the generated documentation looks like or when to use it, leaving some gaps for the agent.

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

Parameters3/5

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

The input schema already provides full descriptions for both parameters (schema and includeViews) with 100% coverage. The description adds no additional meaning about the parameters, so the baseline of 3 applies.

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

Purpose4/5

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

The description uses 'Generate comprehensive schema documentation' which is a specific verb-resource pair, and clarifies the scope by listing tables, views, columns, and relationships. It is clear what the tool does, but it does not explicitly differentiate from sibling tools such as describe_table or generate_api_documentation.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. There is no mention of prerequisites, intended use cases, or when not to use it, leaving the agent without decision criteria.

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

get_backup_file_listB

Get the list of data and log files contained in a backup file

ParametersJSON Schema
NameRequiredDescriptionDefault
backupPathYesFull path to the backup file

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as permissions needed, side effects, or error conditions. It only states the basic function, leaving the agent without information about safety or prerequisites.

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

Conciseness5/5

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

The description is a single, clear sentence that is appropriately sized and front-loaded with the key action and resource.

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

Completeness4/5

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

For a simple one-parameter read tool, the description adequately conveys the purpose and output (list of files). However, it does not specify the output format or any limitations, though the simplicity of the tool mitigates 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?

The schema already fully documents the single parameter (backupPath) with a clear description. The tool description adds no additional semantic meaning beyond what the schema provides.

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

Purpose5/5

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

The description uses a specific verb ('Get') and a specific resource ('list of data and log files contained in a backup file'), which clearly distinguishes it from sibling tools like get_backup_header or list_backups.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives like get_backup_header or list_backups. The description implies its use but does not provide exclusions or context.

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

get_backup_headerA

Get backup metadata and header information from a .bak file

ParametersJSON Schema
NameRequiredDescriptionDefault
backupPathYesFull path to the backup file

TDQS

A3.5/5.0
Behavior3/5

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

The description clearly implies a read-only operation via the verb 'Get', which is the primary behavioral trait. However, with no annotations, it does not disclose other relevant aspects such as error handling, permission requirements, or whether it reads only the header versus the entire file. The description is not contradictory but lacks depth.

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

Conciseness5/5

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

The description is a single, clear sentence with no fluff. It front-loads the action and object, 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.

Completeness3/5

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

The tool is simple with one parameter and no output schema. The description adequately states the purpose but does not specify what 'metadata and header information' includes (e.g., database name, backup date). For an AI agent, this is a minor gap but not critical given the low 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?

The input schema has full coverage (100%) for the single parameter 'backupPath', including a clear description. The tool description adds no extra parameter semantics, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'Get' and names a specific resource: 'backup metadata and header information from a .bak file'. This clearly distinguishes it from sibling tools like get_backup_file_list, which lists files, and list_backups, which lists backup history.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. With siblings like get_backup_file_list and list_backups, a note clarifying that this reads a specific file's header rather than listing available backups would be valuable. The usage is only implied, not explicit.

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

get_column_distributionC

Get detailed distribution statistics for a specific column

ParametersJSON Schema
NameRequiredDescriptionDefault
topNNoNumber of top values to return (default: 20)
schemaNoSchema name (default: dbo)
tableNameYesName of the table
columnNameYesName of the column
includeHistogramNoInclude histogram analysis (default: false)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description only states the action without disclosing return format, permissions, read-only nature, or handling of edge cases. It does not clarify what 'detailed distribution statistics' includes or how the histogram option behaves.

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

Conciseness5/5

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

The description is a single, direct sentence with no filler or redundancy. It is front-loaded and appropriately sized for its purpose, though 'detailed' adds minimal value.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and a 5-parameter schema, the description is underspecified. It omits information about the return value, the meaning of 'distribution statistics,' and any performance or data type caveats.

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 already documents all 5 parameters with descriptions, achieving 100% coverage. The description adds no parameter-specific semantics beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb ("Get") and identifies the resource ("detailed distribution statistics for a specific column"), making the primary action clear. However, it does not explicitly differentiate from sibling tools like get_table_statistics or get_data_profile, which offer overlapping functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool, no contextual signals, and no alternatives or exclusions. The sibling list includes related tools (e.g., get_table_statistics, get_data_profile), but the description does not mention when this tool is preferred over them.

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

get_column_usageA

Get detailed usage information for a specific column (views, procedures, foreign keys, indexes)

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameYesName of the table
columnNameYesName of the column

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It lists the categories of usage information returned but does not explain the output format, performance implications, or permission requirements, leaving some ambiguity.

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

Conciseness5/5

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

The description is a single, concise sentence that leads with the verb and resource. It is efficient, with no wasted words or redundancy.

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

Completeness3/5

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

The tool has a simple three-parameter schema, but with no output schema or annotations, the description should ideally indicate the structure of the returned usage information. It lists categories but does not specify output format or edge cases, making it adequate but incomplete.

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?

All parameters have descriptions in the input schema, achieving 100% schema coverage. The description adds no extra parameter semantics, but since the schema already provides the necessary details, a baseline score of 3 is appropriate.

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 retrieves detailed usage information for a column, listing the specific categories (views, procedures, foreign keys, indexes). This differentiates it from sibling tools focused on table-level structure, relationships, or 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 implies the tool is intended for investigating column-level usage across multiple database object types, providing clear context for when to use it. However, it does not explicitly name alternatives or state exclusions, so it falls short of full usage guidance.

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

get_database_summaryB

Get comprehensive summary of a database including statistics, size, schemas, and last backup

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNameYesName of the database

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates the action is to get a summary (implying a read operation), but it does not disclose side effects, permission requirements, performance implications, or the exact return format. The list of content types is helpful, but lacks detail on what 'statistics' encompasses or how the summary is presented.

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

Conciseness5/5

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

The description is a single sentence that front-loads the core purpose and lists key content types without waste. It uses no filler words, making it easy to scan.

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

Completeness3/5

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

Given the tool's relative simplicity (one parameter, no output schema) and the presence of clear sibling tools, the description provides a basic scope of what is returned. However, it does not specify the response format, the depth of statistics, or how it relates to similar summary tools. It is adequate for a basic understanding but lacks contextual detail for an agent to set expectations about the output.

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 documents the only parameter 'databaseName' with a clear description, achieving 100% schema description coverage. The tool description adds no further semantic meaning beyond noting that a database name is required; the parameter is straightforward and self-explanatory.

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

Purpose4/5

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

The description clearly states the tool's function with a specific action ('Get comprehensive summary') and identifies the target resource ('database'). It lists several concrete elements (statistics, size, schemas, last backup), which distinguishes it from sibling tools that focus on specific aspects like tables or backups. The word 'comprehensive' is somewhat broad but the enumerated items add clarity.

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

Usage Guidelines2/5

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

No explicit guidance is provided about when to use this tool versus alternatives. It simply describes what the tool does, without mentioning contexts where other sibling tools (e.g., list_databases, describe_table) might be more appropriate. There are no exclusions or alternative recommendations.

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

get_data_profileB

Get comprehensive data profile for a table including quality metrics

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameYesName of the table
sampleSizeNoNumber of rows to sample (default: 10000)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states what the tool does (gets a profile) without mentioning potential side effects like full table scans, sampling behavior, or performance implications. The phrase 'quality metrics' gives a hint but lacks detail on what exactly is computed or returned.

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

Conciseness5/5

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

The description is a single concise sentence that immediately states the tool's purpose without unnecessary words. It is front-loaded and every word earns its place.

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

Completeness2/5

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

With no output schema or annotations, the description should provide more context about what the profile includes and how the tool behaves. It only mentions 'quality metrics' generically, leaving ambiguity around output structure, sampling, and edge cases. The guidance is insufficient for an agent to invoke it effectively alongside many similar sibling tools.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already well-documented in the schema. The description does not add any additional meaning about how parameters like sampleSize interact with the tool's behavior. It stays at the baseline for schema-covered tools.

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

Purpose5/5

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

The description clearly states the tool gets a data profile for a table, and specifies it includes quality metrics, which distinguishes it from sibling tools like describe_table (structure) and get_table_statistics (statistics). This is a specific verb+resource+scope.

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

Usage Guidelines3/5

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

The description implies the tool is for profiling tables with quality metrics, but it does not explicitly state when to use it versus alternatives like analyze_table or validate_data_integrity. No exclusions or alternative tool references are provided, so the guidance is only implied.

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

get_procedure_definitionA

Get the full SQL definition of a stored procedure or function

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
procedureNameYesName of the stored procedure or function

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the core behavior—returning the full SQL definition—but lacks details on permission requirements, error behavior for missing objects, or any side effects. Since it is a read-only getter, the behavior is fairly straightforward, but not fully elaborated.

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

Conciseness5/5

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

A single concise sentence that front-loads the action and resource. Every word adds value, with no filler or redundant repetition of schema details.

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

Completeness4/5

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

For a simple 2-parameter tool with no output schema, the description provides the essential return value ('full SQL definition') and target resource. It is adequate but could briefly mention the default schema behavior or error handling; however, given the low complexity, the description is reasonably complete.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters (schema and procedureName), providing clear descriptions. The tool description adds little beyond confirming both procedures and functions are supported, which is already reflected in the schema. Baseline 3 is appropriate as 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 action ('Get') and the resource ('full SQL definition of a stored procedure or function'). This distinguishes it from sibling tools like list_stored_procedures (which lists) and get_view_definition (which targets views), making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies use when needing a procedure/function definition, but it does not explicitly state when to use this tool over alternatives. No mention of when not to use it (e.g., for views) or exclusions, leaving the context only implied.

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

get_server_infoA

Get SQL Server information including version, edition, and status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It says 'Get' implying a read operation but does not explicitly state that it is non-destructive, what permissions are required, or any potential side effects. Lacks safety clarity.

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

Conciseness5/5

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

The description is a single sentence with no filler. It front-loads the verb and resource, and every word contributes meaning.

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 zero-parameter tool, listing version, edition, and status gives a reasonable sense of the return content. However, it does not mention any prerequisites or the response shape, but with no output schema, this is acceptably complete.

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

Parameters4/5

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

There are zero parameters, so the description does not need to add parameter details. The schema coverage is trivially 100%, and the baseline for zero parameters is 4.

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

Purpose5/5

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

The description uses the specific verb 'Get' with the resource 'SQL Server information' and lists concrete fields (version, edition, status). This clearly identifies a server-level read tool and distinguishes it from the database/table-focused sibling tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like list_databases or get_database_summary. The description implies server-level info but does not state when it should be preferred or any exclusions.

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

get_table_dependenciesB

Get full dependency map for a table (what it depends on and what depends on it)

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameYesName of the table

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions that the tool returns a 'full dependency map' in both directions, but fails to state whether dependencies are recursive, include views/procedures, or how the results are returned. It also omits performance, permission, or side-effect details, leaving significant behavioral ambiguity.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately conveys the core purpose. Every word earns its place, and the parenthetical clarification adds useful detail without unnecessary verbosity.

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

Completeness2/5

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

The tool has moderate complexity (dependency mapping) but no output schema and no annotations. The description does not explain the return format, whether dependencies are direct or transitive, or how cycles are handled. This leaves the agent without sufficient context to anticipate the tool's behavior, so it falls short of a minimally complete description.

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 provides 100% coverage with descriptions for both parameters (schema and tableName), so the baseline is 3. The description adds no additional parameter semantics, but none are needed since the schema already explains the parameters adequately.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Get') and resource ('full dependency map for a table') and explicitly clarifies the scope with '(what it depends on and what depends on it)'. This distinguishes it from sibling tools like get_table_relationships by emphasizing bidirectional dependency coverage.

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 obtaining dependency information but provides no explicit guidance on when to choose this tool versus alternatives such as get_table_relationships or detect_circular_dependencies. There are no stated exclusions or preferred contexts, so it only meets the 'implied usage' level.

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

get_table_indexesB

Get all indexes for a table with column details

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameYesName of the table

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation via the verb 'Get' but does not state permissions, side effects, or limitations. The agent is left without explicit safety or authorization 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 a single, front-loaded sentence with no wasted words. It immediately states the tool's core function and key output aspect (column details).

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

Completeness3/5

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

The tool is simple with two parameters and no output schema. The description covers the basic purpose but lacks usage guidelines and explicit behavioral guarantees. Given the large sibling context, more guidance would be helpful but is not strictly required for a basic getter.

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 covers 100% of parameters with descriptions (tableName, schema). The description does not add parameter-specific details beyond the schema, which already provides sufficient semantics. Baseline of 3 is appropriate.

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 specifies the action (get), the resource (indexes for a table), and the detail level (column details). This distinguishes it from sibling tools like list_constraints or get_table_statistics, which target different database objects.

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

Usage Guidelines2/5

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

The description offers no explicit guidance on when to use this tool compared to alternatives. It only states what it does, leaving the agent to infer usage context from the tool name and general knowledge.

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

get_table_relationshipsA

Get foreign key relationships for a table (helps with JOINs)

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameYesName of the table

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. While 'Get foreign key relationships' implies a read-only, non-destructive operation, it does not disclose what the output will look like (e.g., list of related tables, column mappings, schema filtering behavior). This is adequate but lacks behavioral depth.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. Every word adds value, making it highly concise and well-structured.

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

Completeness4/5

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

For a simple two-parameter read tool, the description is mostly sufficient. It provides the core function and a usage hint. However, since there is no output schema, a brief mention of the return format (e.g., related tables and key columns) would enhance completeness without adding much length.

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% parameter description coverage (schema and tableName). The description adds no extra parameter-level detail beyond what the schema already provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'Get' and identifies the exact resource: 'foreign key relationships for a table.' It also includes a practical hint ('helps with JOINs') that differentiates it from broader sibling tools like get_table_dependencies or list_constraints.

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

Usage Guidelines4/5

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

The phrase 'helps with JOINs' clearly communicates a common use case. However, it does not explicitly mention when to avoid this tool or contrast it with alternatives like get_table_dependencies or describe_table, which would strengthen guidance.

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

get_table_statisticsC

Get table statistics including row count, size, and timestamps

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameYesName of the table

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full transparency burden. It does not disclose whether this is a read-only operation, any permission requirements, performance implications, or limitations. It only lists output fields.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the verb and resource, then lists specific examples. Every word earns its place with no redundancy.

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

Completeness2/5

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

There is no output schema, so the description is the sole source of return value information. While it mentions row count, size, and timestamps, it does not define units, format, or granularity, and 'including' implies additional unspecified data. This leaves ambiguity about the tool's full output.

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 (schema and tableName) described in the input schema. The description adds no additional parameter-based information, so the baseline of 3 is appropriate.

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 retrieves table statistics with specific examples (row count, size, timestamps). It is not explicitly distinguished from sibling tools like analyze_table or describe_table, which lowers it from a 5.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description simply states what it does, leaving the agent to infer usage context without exclusions or alternative suggestions.

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

get_user_permissionsC

Get detailed permissions for a specific user

ParametersJSON Schema
NameRequiredDescriptionDefault
userNameYesName of the user
objectTypeNoFilter by object type

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of disclosing behavioral traits. It does not mention that this is a read-only operation, what permissions look like, or any side effects. The description is too terse to convey meaningful behavioral context.

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

Conciseness5/5

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

The description is a single concise sentence that is front-loaded with the key verb and resource. It is appropriately sized for a simple tool and contains no superfluous words.

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

Completeness2/5

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

With no output schema and no annotation, the description should explain what 'detailed permissions' means and what the return structure will be. It also does not clarify whether the permissions returned are effective or direct. The tool is simple, but the description still falls short of being complete for an agent to fully understand the output.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description does not add any extra meaning beyond the schema's basic parameter descriptions. However, since the schema already documents both parameters, a score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (get) and the resource (detailed permissions for a specific user). It is specific enough to understand the tool's function, but it does not differentiate from the sibling 'audit_user_permissions', which likely has similar functionality.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. Given the presence of 'audit_user_permissions' as a sibling tool, the lack of any exclusion or comparison is a notable gap.

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

get_view_definitionA

Get the SQL definition of a view along with referenced tables

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
viewNameYesName of the view

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It clearly indicates a read operation ('Get') and specifies two outputs (SQL definition, referenced tables), but does not disclose potential permission requirements, error behavior, or limitations. This is adequate for a simple read tool but lacks depth.

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

Conciseness5/5

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

The description is a single, focused sentence with no filler. It is concise and front-loaded, effectively conveying the tool's purpose.

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

Completeness4/5

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

For a simple view-definition tool with two parameters and no output schema, the description covers its purpose and key output. It does not explain return format or usage nuances, but given the tool's low complexity, it is reasonably complete.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters clearly described ('Name of the view' and 'Schema name (default: dbo)'). The description adds no extra meaning beyond the schema, so the baseline of 3 applies.

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 action ('Get') and the resource ('SQL definition of a view'), and adds the specific outcome of also retrieving referenced tables. This distinguishes it from sibling tools like get_procedure_definition and describe_table.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. The description does not mention exclusions or compare with sibling tools like get_procedure_definition or get_table_relationships.

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

kill_database_sessionsB

Kill specific sessions connected to a database

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdsNoSpecific session IDs to kill (default: all sessions)
databaseNameYesDatabase name

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. While 'kill' implies destruction, the description does not mention that sessions are forcibly terminated, that active transactions may be aborted, or that the operation is irreversible. This is a significant gap for a destructive operation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core functionality.

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

Completeness3/5

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

The tool is relatively simple, and the schema fully documents parameters and defaults. However, the lack of annotations and absence of any behavioral context (e.g., impact on active queries, reversibility) makes the description less complete than ideal for a destructive operation. It is minimally viable but leaves gaps.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters have meaningful descriptions in the schema (e.g., sessionIds has a default of 'all sessions'). The tool description adds no additional parameter semantics beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states the action ('Kill') on a specific resource ('specific sessions connected to a database'), distinguishing itself from generic tools like 'process' or 'clear_cache'. However, it does not explicitly differentiate from the sibling tool 'disconnect_database_users', which may serve a similar purpose.

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

Usage Guidelines2/5

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

The description provides no contextual guidance on when to use this tool versus alternatives like 'disconnect_database_users' or 'check_database_connections'. The usage is only implied by the action itself, with no exclusions or prerequisites stated.

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

list_backupsA

List recent backup history from msdb, optionally filtered by database name

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNameNoFilter by database name (default: all databases)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It states the source (msdb) and the action (list), which implies a read-only operation, but it does not explicitly disclose permissions, the meaning of 'recent' (e.g., time window), or any side effects. The description is not misleading, but it leaves room for ambiguity.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately conveys the core action and scope. Every word earns its place, with no redundancy or unnecessary elaboration.

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

Completeness4/5

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

Given the tool's low complexity (one optional parameter, no output schema), the description sufficiently covers the essential behavior. It does not detail the return format or specific fields, but for a simple listing operation, the current description provides enough context for an agent to understand what the tool does.

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 schema has one parameter, databaseName, with a description covering its optionality and default value. The tool description merely repeats the filtering concept without adding new details. Since schema coverage is 100%, baseline 3 is appropriate.

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 a specific verb ('List') and resource ('recent backup history from msdb'), with an optional filter ('by database name'). This directly distinguishes it from sibling tools like backup_database or get_backup_file_list, making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies the tool is for viewing backup history and optionally narrowing to a specific database, but it does not explicitly state when to use it over alternatives or mention exclusions. Sibling tools like get_backup_header and get_backup_file_list exist, yet no comparison or alternative guidance is provided.

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

list_constraintsA

List all constraints (PK, FK, Unique, Check) for a table or all tables

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
tableNameNoOptional table name to filter constraints

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It only says 'List', which implies read-only, but does not disclose permissions, potential performance caveats when listing all tables, or the exact return structure. This is insufficient for a tool with zero annotation coverage.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It conveys the core functionality and scope economically without wasting words.

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

Completeness3/5

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

With no output schema and no annotations, the description only covers the basic purpose and parameter semantics. It does not explain return format, error behavior when a table name is invalid, or any prerequisites. This is adequate for a simple listing tool but leaves gaps for an agent to use it fully.

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

Parameters4/5

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

The schema already documents both parameters with 100% coverage. The description adds value by explaining that tableName is optional and defaults to all tables, and by enumerating the constraint types included (PK, FK, Unique, Check), which goes beyond the schema's simple 'filter constraints' wording.

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 verb 'List' and the resource 'constraints', and further specifies the types (PK, FK, Unique, Check) and scope (for a table or all tables). This clearly distinguishes it from sibling tools like get_table_indexes or describe_table.

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

Usage Guidelines3/5

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

The description implies the tool is used when constraint details are needed, but it does not explicitly mention when to use it over alternatives or any exclusions. It lacks clear guidance on selecting this tool among related sibling tools.

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

list_databasesA

List all user-accessible databases on SQL Server instance

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?

With no annotations, the description carries the full burden. It clearly indicates a read-only operation via 'List' and adds the useful constraint 'user-accessible', which is a behavioral trait. However, it doesn't mention whether system databases are included or the exact 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?

A single, focused sentence with no filler. Every word contributes to the meaning.

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 zero-parameter read-only list operation, the description is sufficient to understand the tool's function and scope. It could mention output format but that's implicit for a list of databases.

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

Parameters4/5

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

The tool has zero parameters, so the description has nothing to add beyond the schema. Baseline 4 applies.

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

Purpose5/5

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

The description uses a specific verb (List) and identifies the exact resource (user-accessible databases) and scope (SQL Server instance), clearly distinguishing it from sibling tools like list_tables or list_schemas.

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 enumerating databases accessible to the user, but it does not explicitly state when to use this over alternatives like search_across_databases or list_tables. No exclusions or alternative guidance is provided.

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

list_schemasA

List all schemas in database with table and view counts

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations, the description fully bears the burden of behavioral disclosure. It only notes that counts are included, but fails to mention read-only nature, potential performance impact, permissions, or return format. Minimal behavioral context.

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

Conciseness5/5

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

The description is a single, direct sentence that front-loads the action and resource. Every word is meaningful, with no fluff or redundancy.

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

Completeness4/5

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

For a simple tool with no parameters and no output schema, the description provides the essential information: what it lists and that counts are included. It is nearly complete, though it could mention ordering, pagination, or potential cost for completeness.

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

Parameters4/5

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

The tool has zero parameters and the schema is empty with 100% coverage. No parameter explanation is needed, and the description does not need to compensate for any missing schema information. This aligns with the baseline for zero-parameter tools.

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

Purpose5/5

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

The description 'List all schemas in database with table and view counts' provides a specific action (list), resource (schemas), scope (all in database), and additional output details (counts). This clearly distinguishes it from sibling tools like list_tables or list_stored_procedures.

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

Usage Guidelines3/5

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

The description implies when to use this tool (to get an overview of schemas with counts), but it does not explicitly mention alternatives or when not to use it. There is no exclusionary guidance, but the scope is clearly stated.

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

list_stored_proceduresA

List all stored procedures and functions with parameters

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name to filter (default: all schemas)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It adds context by stating the scope ('all') and that parameters are included, but it does not explicitly confirm read-only nature, performance implications, or output format. This is adequate but sparse.

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

Conciseness5/5

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

The description is a single 8-word sentence that immediately states the action and resource. Every word adds value; no filler or repetition.

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

Completeness3/5

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

For a simple listing tool with one well-documented parameter, the description is minimally adequate. It communicates scope and parameter inclusion, but lacks details on the return structure or any usage caveats, which would be helpful given no output schema or annotations.

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 provides 100% coverage with a clear description for the 'schema' parameter, so the description needs to add no further parameter semantics. It adds no extra meaning beyond the schema, earning the baseline score.

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

Purpose5/5

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

The description uses a specific verb 'List' and identifies the resource as 'all stored procedures and functions with parameters', clearly distinguishing this from sibling tools like get_procedure_definition which focuses on a single definition.

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 a general listing use case but provides no explicit guidance on when to use this vs alternatives like find_unused_stored_procedures or get_procedure_definition. No when-not or alternative recommendations are given.

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

list_tablesC

List all tables and views in a database schema

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)

TDQS

C2.9/5.0
Behavior2/5

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

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It does not mention the default schema behavior (dbo), whether system tables/views are included, permission needs, or return format. This minimal disclosure leaves key traits undisclosed.

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

Conciseness5/5

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

The description is a single, focused sentence with no filler words. It is appropriately sized and front-loaded with the action and resource.

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

Completeness2/5

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

The tool is simple, but there is no output schema and no annotations. The description fails to clarify how it differs from 'list_tables_all' or to state the default schema scope. It is too minimal for an AI agent to reliably select this tool among many similar siblings.

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

Parameters3/5

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

The schema description coverage for the single 'schema' parameter is 100% ('Schema name (default: dbo)'), so the baseline is 3. The description adds no additional parameter semantics beyond what the schema already provides.

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

Purpose4/5

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

The description clearly states the action ('List') and resource ('all tables and views in a database schema'), making its purpose understandable. However, it does not explicitly differentiate from the sibling tool 'list_tables_all', so it lacks sibling distinction.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as 'list_tables_all' or 'search_tables'. The description merely states the function, leaving the AI agent to infer usage context from the sibling names.

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

list_tables_allA

List all tables across all databases or in a specific database

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseFilterNoFilter by database name (default: all databases)

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the action 'List' and the scope, but does not disclose whether it is read-only, whether system tables are included, performance implications of scanning all databases, or the return format. This is minimal beyond what the name implies.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently conveys the tool's purpose and scope without unnecessary words. Every word adds value, making it concise and well-structured.

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

Completeness4/5

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

For a low-complexity tool with one optional parameter and no output schema, the description adequately covers the essential context: what is listed and the optional filter. It could mention read-only nature or include system tables, but the description is complete enough for an agent to select and invoke the tool correctly.

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 schema covers 100% of parameter documentation: databaseFilter includes a clear description ('Filter by database name (default: all databases)'). The description adds no further semantic detail beyond reinforcing the filter concept, but since the schema already provides sufficient meaning, a baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('all tables') with explicit scope ('across all databases or in a specific database'), distinguishing it from sibling tools like list_tables (which likely targets the current database). It unambiguously states what the tool does.

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

Usage Guidelines4/5

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

The description clearly conveys when to use this tool: when you need tables from all databases or a particular database. It does not explicitly mention alternatives or exclusions, but the cross-database scope is implied as the differentiator from list_tables. There is no misleading guidance.

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

list_triggersB

List all triggers in the database with details and dependencies

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description alone must convey behavioral traits. 'List' implies a read-only, non-destructive operation, and 'with details and dependencies' adds a hint of the output's content. However, it doesn't disclose any permissions needed, performance implications, or what specific details are included, leaving room for uncertainty.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the action ('List all triggers') and adds relevant scope ('with details and dependencies'). Every word contributes meaning, and there is no redundancy or filler.

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

Completeness2/5

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

The tool has no output schema and no annotations, so the description must explain what 'details and dependencies' entails, but it remains vague. It also fails to clarify the schema-scoping behavior, leaving ambiguity about whether all database triggers are returned or only those in a specific schema. For a tool with a single optional parameter, the description is too thin to be fully self-contained.

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

Parameters2/5

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

The input schema has 100% coverage for the single 'schema' parameter, so the baseline would be 3. However, the description's claim of 'all triggers in the database' conflicts with the parameter's default of 'dbo', creating confusion about whether the tool lists triggers across all schemas or just one. The description adds no clarity about how the parameter filters results, effectively reducing the value it adds beyond the schema.

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

Purpose4/5

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

The description uses a specific verb ('List') and resource ('triggers'), making it clear what the tool does. However, 'all triggers in the database' is potentially misleading because the schema parameter defaults to 'dbo', implying it lists triggers for a specific schema rather than the entire database. It does distinguish from sibling list tools like list_tables or list_stored_procedures.

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

Usage Guidelines3/5

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

The description implies usage when you need to see triggers and their dependencies, but it gives no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The purpose is clear enough that an agent could infer the use case, but no proactive direction is provided.

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

list_usersA

List all database users and their roles

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, and the description only says 'List', leaving important behavioral context undefined—such as whether admin privileges are required, whether 'all' is relative to the caller's visibility, and whether any data is modified. While the verb 'List' suggests read-only, the description does not make this explicit.

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 entire description is one compact sentence with no filler. It front-loads the verb 'List' and clearly states the target ('database users') and the additional detail ('and their roles').

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

Completeness3/5

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

For a zero-parameter list tool, the description covers the basic purpose, but because there is no output schema or annotation to clarify safety and return data, some context (permission requirements and response shape) is missing. Still, the tool is simple enough that this is a modest gap.

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

Parameters4/5

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

The tool has zero parameters, and the schema has no properties with 100% coverage, so there are no parameter semantics to explain. A baseline score of 4 is appropriate because no parameter documentation is needed.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('database users'), and adds 'their roles' to clarify scope. This differentiates it from related sibling tools like audit_user_permissions or get_user_permissions by emphasizing full enumeration of users rather than permission analysis.

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

Usage Guidelines3/5

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

The description implies the tool is for retrieving a complete user list, but it never explicitly states when to choose it over related siblings or mentions any exclusions. Usage context is only inferred from the phrasing 'List all'.

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

restore_databaseB

Restore a SQL Server database from a .bak file

ParametersJSON Schema
NameRequiredDescriptionDefault
fileMovesNoOptional map of logical file names to new physical paths
backupPathYesFull path to the backup file (e.g., /var/opt/mssql/backup/mydb.bak)
withReplaceNoReplace existing database if it exists (default: false)
databaseNameYesName of the database to restore
autoDisconnectNoAutomatically disconnect users before restore (default: false)

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It does not mention destructive behavior (e.g., overwriting existing databases), permission requirements, or side effects like disconnecting users. 'Restore' implies overwriting but does not explicitly disclose these important traits.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word conveys meaning, making it highly concise and well-structured.

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

Completeness2/5

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

For a tool with 5 parameters, a nested object, no annotations, and no output schema, a one-line description is insufficient. It omits behavioral context for options like withReplace and autoDisconnect, and does not explain the outcome of the operation or error conditions.

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?

All 5 parameters have descriptions in the schema (100% coverage), so the description adds no additional semantics. Baseline 3 is appropriate because the schema already documents the parameters 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 action (restore), the resource (SQL Server database), and the source (.bak file). This distinguishes it from sibling tools like backup_database and create_database.

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

Usage Guidelines3/5

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

Usage is implied by the verb 'restore'—agents can infer they should use this when needing to restore from a backup. However, there is no explicit guidance about when not to use it, alternatives, or prerequisites, so it falls short of a 4.

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

search_across_databasesB

Search for tables, columns, or procedures across all databases by keyword

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYesSearch keyword
searchInNoWhere to search (default: tables and columns)

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It does not mention read-only safety, potential performance implications of searching across all databases, default behavior when searchIn is omitted (which the schema says defaults to tables and columns, but the description implies all three types), or any result format. This lack of context leaves the agent uncertain about side effects and expectations.

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

Conciseness5/5

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

The description is a single, compact sentence that captures the tool's core function efficiently. It avoids redundancy and front-loads the key information: search, across databases, by keyword.

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

Completeness2/5

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

The description is sufficient for a simple search operation but misses critical details. There is no output schema to explain return format, and the description does not state default search scope (tables and columns) or that procedures are only searched if searchIn includes them. This could mislead an agent into thinking all three types are searched by default. Given the tool's cross-database scope, this incompleteness is notable.

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%: 'keyword' is described as 'Search keyword' and 'searchIn' as 'Where to search (default: tables and columns).' The tool description adds little beyond restating the object types (tables, columns, procedures) already present in the enum. It does not clarify formatting, pattern, or case sensitivity. Baseline 3 applies because the schema covers the parameters well.

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 a specific action ('Search for tables, columns, or procedures') with a defined scope ('across all databases') and mechanism ('by keyword'). This distinguishes it from sibling tools like search_tables, which likely search within a single database, and list_stored_procedures, which lists rather than searches.

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

Usage Guidelines3/5

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

The description implies usage: when users need to search by keyword across all databases and across multiple object types (tables, columns, procedures), this tool is appropriate. However, it does not explicitly mention alternatives or when not to use it, such as directing users to search_tables for single-database searches or list_stored_procedures for listing all procedures.

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

search_tablesB

Search for tables/columns/descriptions matching a keyword

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYesSearch keyword to match table names, column names, or descriptions

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden but only states the core search behavior. It does not disclose any behavioral traits such as case sensitivity, partial vs. exact matching, search scope (e.g., current database only), or return format, which leaves significant ambiguity.

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

Conciseness5/5

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

The description is a single clear sentence with no wasted words. It is front-loaded with the verb 'search' and immediately states the target resources, earning its place without redundancy.

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

Completeness3/5

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

Given its simplicity (one parameter, no output schema), the description provides the core idea but lacks contextual details such as whether it searches within a specific database or across databases, and what the return value actually is. This creates ambiguity especially in light of sibling tools like 'search_across_databases'.

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 schema description covers 100% of the parameter meaning ('Search keyword to match table names, column names, or descriptions'), and the description does not add additional semantic value beyond this. Baseline of 3 is appropriate since the schema already documents the parameter fully.

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 searches for tables, columns, and descriptions using a keyword, which identifies the resource and action. However, it does not explicitly differentiate itself from the sibling tool 'search_across_databases', so it lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'search_across_databases' or 'describe_table'. The description only states the basic function without any exclusions or preferred use cases.

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

suggest_index_optimizationsB

Analyze and suggest index improvements including missing, unused, and fragmented indexes

ParametersJSON Schema
NameRequiredDescriptionDefault
topNNoNumber of recommendations to return (default: 10)
schemaNoSchema name (default: dbo)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It suggests 'suggest' (advisory, likely non-destructive) but does not explicitly state read-only behavior, permission requirements, potential performance impact of the analysis, or what the return value looks like. The lack of such information leaves significant ambiguity.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant text. It conveys the action, target (indexes), and categories of improvements efficiently.

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

Completeness3/5

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

With no output schema and no annotations, the description should clarify what the tool returns and any implications (e.g., analysis scope). It mentions the index categories but not how recommendations are ranked, whether they are actionable, or how they relate to other tools. The description is minimally viable but not fully self-contained.

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% (both topN and schema are described with defaults). The description adds no additional parameter semantics beyond what the schema already provides. Baseline 3 applies because 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 a specific action ('Analyze and suggest index improvements') and specifies the types of indexes addressed (missing, unused, fragmented). This distinguishes it from sibling tools like get_table_indexes (which lists existing indexes) and analyze_query_performance (which focuses on query-level tuning).

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool vs. alternatives, nor any mention of conditions or exclusions. The purpose implies a use case (performance tuning), but no sibling tool is referenced or contrasted, leaving the agent without clear decision-making criteria.

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

validate_data_integrityB

Validate data integrity for a table (FK violations, duplicates, null violations)

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: dbo)
checkFKNoCheck foreign key violations (default: true)
tableNameYesName of the table
checkNullsNoCheck null violations (default: true)
checkDuplicatesNoCheck duplicate records (default: true)

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure, yet it only lists what checks are performed. It does not state whether the tool is read-only, whether it modifies data, what its return format looks like, or any permission/performance implications. This is a significant gap for a tool that likely produces a diagnostic report.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that directly states the core function and scope. Every word adds value, with no filler or repetition, making it highly concise and well-structured.

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

Completeness2/5

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

The tool has 5 parameters, no output schema, and no annotations, so the description needs to compensate by explaining return values, usage context, or side effects. It fails to do so, leaving a critical gap for an agent to understand what the tool actually returns or how to interpret results. The description covers only the basic purpose, not enough for a complex validation operation.

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

Parameters3/5

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

All parameters have schema descriptions covering their meaning and defaults, so the baseline is 3. The description's parenthetical mentions the same concepts (FK, duplicates, nulls) without adding new information. It slightly aids in mapping parameters to the tool's purpose but does not go beyond the schema.

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

Purpose5/5

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

The description clearly states the tool validates data integrity for a table, listing specific check types (FK violations, duplicates, null violations). This provides a specific verb, resource, and scoped purpose that distinguishes it from sibling tools like get_data_profile or analyze_table, which focus on broader analysis.

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

Usage Guidelines3/5

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

The description implies the primary use case—validating integrity issues before trust issues arise—but provides no explicit 'when to use' or 'when not to use' guidance, nor does it name alternatives for related tasks. It gives enough context that an agent could infer usage, but lacks exclusionary guidance.

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

TDQS

B3.2/5.0
Disambiguation3/5

Many tools have specific purposes, but there is overlap in analysis tools like analyze_table, get_column_distribution, and get_data_profile that could be confused. Similarly, list_tables and list_tables_all differ only in scope. Descriptions help clarify, but the large tool count creates ambiguity.

Naming Consistency4/5

Tools consistently follow a snake_case verb_noun pattern (e.g., describe_table, list_tables, backup_database). Minor deviations include the 'all' suffix in list_tables_all and some verbs like 'check' vs 'disconnect' for similar operations, but overall the convention is consistent and readable.

Tool Count2/5

With 49 tools, the server is over the typical threshold for a well-scoped MCP server. While the SQL Server domain is broad, many tools could be consolidated (e.g., multiple analysis and statistics tools). This heavy count may overwhelm agents and increase selection errors.

Completeness3/5

The server covers a wide range of operations including schema exploration, querying, performance analysis, documentation generation, and backup/restore. However, it lacks tools for DDL/DML operations (e.g., create table, update data) and provides no way to modify objects, limiting its usefulness for full database management.

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
    MCP server providing read-only access to SQL Server databases for AI assistants, enabling schema exploration, query execution, and foreign key inference with token-efficient TOON responses.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that enables AI assistants to query and manage Microsoft SQL Server databases using natural language.
    252
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Cross-platform MCP server for SQL Server that enables AI assistants to explore schemas, relationships, and run read-only queries via natural language.
    1
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/az-coder-123/sql-server-mcp'

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