Skip to main content
Glama

MPO MCP Server

A comprehensive Model Context Protocol (MCP) server built with FastMCP that provides powerful integrations with GitHub repositories, Confluence documentation, and Databricks Unity Catalog.

šŸš€ Built with FastMCP! This server leverages FastMCP, a modern, decorator-based framework for building MCP servers with minimal boilerplate.

šŸ“š Table of Contents

Related MCP server: Databricks MCP Server

Overview

MPO MCP Server enables AI assistants and LLMs to interact seamlessly with your development and data ecosystem. It exposes a comprehensive set of tools through the Model Context Protocol, allowing intelligent agents to:

  • GitHub: Browse repositories, search code, read files, manage branches and pull requests

  • Confluence: Search and retrieve documentation, list spaces and pages

  • Databricks: Query Unity Catalog metadata, execute SQL queries, explore data schemas

The server is built with a modular architecture, allowing you to configure only the services you need.

Features

šŸ”§ Flexible Configuration

  • Modular Design: Enable only the services you need (GitHub, Confluence, Databricks, or any combination)

  • Environment-based: Simple .env file configuration with validation

  • Secure: API tokens and credentials managed through environment variables

šŸš€ Multiple Usage Modes

  1. Interactive LLM Assistant: Natural language interface with autonomous tool selection

  2. MCP Server: Direct integration with Claude Desktop and other MCP clients

  3. Command-Line Interface: Direct tool invocation via CLI

šŸ“Š Comprehensive Tool Set

  • 18 GitHub Tools: Complete repository management and code exploration

  • 5 Confluence Tools: Full documentation search and retrieval

  • 10 Databricks Tools: Complete Unity Catalog metadata and SQL execution

Installation

Prerequisites

  • Python 3.10 or higher

  • pip or uv for package management

  • API credentials for the services you want to use

Quick Setup

  1. Clone the repository:

cd /Users/bsang2/Desktop/mcp_demo/mpo-mcp
  1. Install dependencies:

pip install -r requirements.txt

Or using uv (faster):

uv pip install -r requirements.txt
  1. Create configuration file:

cp .env.example .env  # If example exists
# Or create .env manually
  1. Add your credentials to .env (see Configuration)

Package Installation

You can also install as a package:

pip install -e .

This enables the command-line tools:

  • mpo-mcp-server: Run the MCP server

  • mpo: Command-line interface

Configuration

Environment Variables

Create a .env file in the project root with your credentials:

# ============================================
# Anthropic Configuration (for LLM Assistant)
# ============================================
ANTHROPIC_API_KEY=your_anthropic_api_key_here

# ============================================
# GitHub Configuration
# ============================================
GITHUB_TOKEN=your_github_token_here
GITHUB_ORG=your_default_org_or_username

# ============================================
# Confluence Configuration
# ============================================
CONFLUENCE_URL=https://your-domain.atlassian.net
CONFLUENCE_USERNAME=your_email@example.com
CONFLUENCE_API_TOKEN=your_confluence_api_token
CONFLUENCE_SPACE_KEY=your_default_space_key

# ============================================
# Databricks Configuration
# ============================================
DATABRICKS_HOST=https://your-workspace.databricks.com
DATABRICKS_TOKEN=your_databricks_token
DATABRICKS_CATALOG=your_default_catalog
DATABRICKS_WAREHOUSE_ID=your_sql_warehouse_id

Getting API Credentials

Anthropic API Key (for Interactive LLM Assistant)

  1. Visit console.anthropic.com

  2. Sign up or log in

  3. Navigate to API Keys

  4. Create a new API key

  5. Copy to .env file

GitHub Personal Access Token

  1. Go to GitHub Settings → Developer settings → Personal access tokens → Tokens (classic)

  2. Generate new token with scopes:

    • repo (for private repositories)

    • read:org (for organization data)

    • user (for user data)

  3. Copy token to .env file

Confluence API Token

  1. Visit id.atlassian.com/manage-profile/security/api-tokens

  2. Create API token

  3. Use your Atlassian account email as username

  4. Copy token to .env file

Databricks Access Token

  1. Go to your Databricks workspace

  2. Click User Settings → Developer

  3. Manage Access tokens → Generate new token

  4. Set expiration and comment

  5. Copy token to .env file

Service Validation

The server automatically validates configurations at startup:

  • Tools are only exposed for properly configured services

  • Partial configuration is supported (e.g., GitHub only)

  • Clear error messages for missing credentials

Usage

The easiest way to use the server - a conversational interface that autonomously selects and uses tools:

python llm_assistant.py

Features:

  • Natural language queries

  • Autonomous tool selection

  • Context-aware responses

  • Conversation history

  • Follow-up questions

Example Session:

šŸ’¬ You: What are the most popular repositories from nike-goal-analytics-mpo?
šŸ¤– Assistant: [Analyzes and calls github_list_repositories]
            Here are Facebook's top repositories:
            1. React - 210K stars...

šŸ’¬ You: Show me the README from the React repository
šŸ¤– Assistant: [Calls github_get_file_contents]
            Here's the React README...

šŸ’¬ You: Search for "useState" in that repo
šŸ¤– Assistant: [Calls github_search_code]
            Found 147 results for "useState"...

Requirements: Set ANTHROPIC_API_KEY in .env

See docs/GETTING_STARTED_LLM_ASSISTANT.md for detailed documentation.

Method 2: MCP Server (For Claude Desktop & Other Clients)

Run the server to expose tools via the Model Context Protocol:

python -m mpo_mcp.server

Or if installed as package:

mpo-mcp-server

Integration with Claude Desktop

Add to your Claude Desktop configuration:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

Option 1: Using .env file (Recommended)

{
  "mcpServers": {
    "mpo-mcp": {
      "command": "python",
      "args": ["-m", "mpo_mcp.server"],
      "cwd": "/Users/bsang2/Desktop/mcp_demo/mpo-mcp"
    }
  }
}

Option 2: Explicit environment variables

{
  "mcpServers": {
    "mpo-mcp": {
      "command": "python",
      "args": ["-m", "mpo_mcp.server"],
      "cwd": "/Users/bsang2/Desktop/mcp_demo/mpo-mcp",
      "env": {
        "GITHUB_TOKEN": "your_token",
        "GITHUB_ORG": "your_org",
        "CONFLUENCE_URL": "https://your-domain.atlassian.net",
        "CONFLUENCE_USERNAME": "your_email@example.com",
        "CONFLUENCE_API_TOKEN": "your_token",
        "CONFLUENCE_SPACE_KEY": "your_space",
        "DATABRICKS_HOST": "https://your-workspace.databricks.com",
        "DATABRICKS_TOKEN": "your_token",
        "DATABRICKS_CATALOG": "your_catalog",
        "DATABRICKS_WAREHOUSE_ID": "your_warehouse_id"
      }
    }
  }
}

See docs/CURSOR_MCP_SETUP.md for Cursor AI integration.

Method 3: Command-Line Interface

Direct tool invocation via CLI:

# GitHub commands
mpo github repos --org nike-goal-analytics-mpo --limit 5
mpo github repo --name nike-goal-analytics-mpo/msc-dft-monorepo
mpo github search --query "useState" --repo nike-goal-analytics-mpo/msc-dft-monorepo
mpo github file --repo nike-goal-analytics-mpo/msc-dft-monorepo --path README.md
mpo github branches --repo nike-goal-analytics-mpo/msc-dft-monorepo
mpo github prs --repo nike-goal-analytics-mpo/msc-dft-monorepo --state open

# Confluence commands
mpo confluence spaces --limit 10
mpo confluence pages --space DOCS --limit 20
mpo confluence page --id 123456789
mpo confluence search --query "architecture" --space TECH
mpo confluence page-by-title --title "Getting Started"

# Databricks commands
mpo databricks catalogs
mpo databricks schemas --catalog main
mpo databricks tables --catalog main --schema default
mpo databricks schema --catalog main --schema default --table users
mpo databricks search --query customer --catalog main
mpo databricks catalog --name main
mpo databricks query --sql "SELECT * FROM main.default.users LIMIT 10"
mpo databricks warehouses

# Help
mpo --help
mpo github --help
mpo confluence --help
mpo databricks --help

See docs/CLI_GUIDE.md and docs/CLI_EXAMPLES.md for comprehensive CLI documentation.

Available Tools

GitHub Tools (6 tools)

1. github_list_repositories

List repositories for a user or organization.

Parameters:

  • org (optional): Organization or username (defaults to GITHUB_ORG)

  • limit (default: 30): Maximum number of repositories

Returns: List of repositories with name, description, stars, forks, language, etc.

Example:

{
  "org": "nike-goal-analytics-mpo",
  "limit": 10
}

2. github_get_repository_info

Get detailed information about a specific repository.

Parameters:

  • repo_name (required): Full repository name (e.g., "nike-goal-analytics-mpo/msc-dft-monorepo")

Returns: Detailed repository metadata including stars, forks, topics, license, etc.

Example:

{
  "repo_name": "nike-goal-analytics-mpo/msc-dft-monorepo"
}

3. github_search_code

Search for code across GitHub repositories.

Parameters:

  • query (required): Search query

  • repo (optional): Limit search to specific repository

  • limit (default: 10): Maximum results

Returns: List of code matches with file paths and URLs

Example:

{
  "query": "useState",
  "repo": "nike-goal-analytics-mpo/msc-dft-monorepo",
  "limit": 5
}

4. github_get_file_contents

Read file contents from a repository.

Parameters:

  • repo_name (required): Full repository name

  • file_path (required): Path to file

  • ref (optional): Branch, tag, or commit SHA

Returns: File contents and metadata

Example:

{
  "repo_name": "nike-goal-analytics-mpo/msc-dft-monorepo",
  "file_path": "README.md"
}

5. github_list_branches

List branches in a repository.

Parameters:

  • repo_name (required): Full repository name

  • limit (default: 20): Maximum branches

Returns: List of branches with protection status and commit SHA

Example:

{
  "repo_name": "nike-goal-analytics-mpo/msc-dft-monorepo",
  "limit": 10
}

6. github_get_pull_requests

Retrieve pull requests for a repository.

Parameters:

  • repo_name (required): Full repository name

  • state (default: "open"): PR state ("open", "closed", or "all")

  • limit (default: 20): Maximum PRs

Returns: List of pull requests with status, author, dates, etc.

Example:

{
  "repo_name": "nike-goal-analytics-mpo/msc-dft-monorepo",
  "state": "open",
  "limit": 10
}

Confluence Tools (5 tools)

1. confluence_list_pages

List pages in a Confluence space.

Parameters:

  • space_key (optional): Space key (defaults to CONFLUENCE_SPACE_KEY)

  • limit (default: 25): Maximum pages

Returns: List of pages with titles, IDs, and URLs

Example:

{
  "space_key": "DOCS",
  "limit": 20
}

2. confluence_get_page_content

Get full content of a Confluence page.

Parameters:

  • page_id (required): Page ID

Returns: Page content with metadata, version info, and HTML/storage content

Example:

{
  "page_id": "123456789"
}

3. confluence_search_pages

Search for pages across Confluence.

Parameters:

  • query (required): Search query

  • space_key (optional): Limit to specific space

  • limit (default: 20): Maximum results

Returns: Search results with excerpts and relevance

Example:

{
  "query": "API documentation",
  "space_key": "TECH",
  "limit": 10
}

4. confluence_get_page_by_title

Find a page by its exact title.

Parameters:

  • title (required): Page title

  • space_key (optional): Space key (defaults to CONFLUENCE_SPACE_KEY)

Returns: Page content and metadata

Example:

{
  "title": "Getting Started Guide",
  "space_key": "DOCS"
}

5. confluence_list_spaces

List available Confluence spaces.

Parameters:

  • limit (default: 25): Maximum spaces

Returns: List of spaces with keys, names, and URLs

Example:

{
  "limit": 10
}

Databricks Tools (10 tools)

1. databricks_list_catalogs

List all Unity Catalog catalogs.

Parameters: None

Returns: List of catalogs with names, owners, storage roots

Example:

{}

2. databricks_list_schemas

List schemas in a catalog.

Parameters:

  • catalog_name (optional): Catalog name (defaults to DATABRICKS_CATALOG)

Returns: List of schemas with full names and metadata

Example:

{
  "catalog_name": "main"
}

3. databricks_list_tables

List tables in a schema.

Parameters:

  • schema_name (required): Schema name

  • catalog_name (optional): Catalog name (defaults to DATABRICKS_CATALOG)

Returns: List of tables with names, types, formats, and locations

Example:

{
  "catalog_name": "main",
  "schema_name": "default"
}

4. databricks_get_table_schema

Get detailed schema for a table.

Parameters:

  • table_name (required): Table name

  • schema_name (required): Schema name

  • catalog_name (optional): Catalog name (defaults to DATABRICKS_CATALOG)

Returns: Complete table schema with columns, types, and properties

Example:

{
  "table_name": "users",
  "catalog_name": "main",
  "schema_name": "default"
}

5. databricks_search_tables

Search for tables by name pattern.

Parameters:

  • query (required): Search query (table name pattern)

  • catalog_name (optional): Limit to specific catalog

  • max_results (default: 50): Maximum results

Returns: List of matching tables

Example:

{
  "query": "customer",
  "catalog_name": "main",
  "max_results": 20
}

6. databricks_get_catalog_info

Get detailed catalog information.

Parameters:

  • catalog_name (required): Catalog name

Returns: Catalog metadata including properties and configuration

Example:

{
  "catalog_name": "main"
}

7. databricks_get_schema_info

Get detailed schema information.

Parameters:

  • catalog_name (required): Catalog name

  • schema_name (required): Schema name

Returns: Schema metadata and properties

Example:

{
  "catalog_name": "main",
  "schema_name": "default"
}

8. databricks_execute_query

Execute a SQL query on Databricks.

Parameters:

  • query (required): SQL query to execute

  • catalog_name (optional): Catalog context (defaults to DATABRICKS_CATALOG)

  • warehouse_id (optional): SQL warehouse ID (defaults to DATABRICKS_WAREHOUSE_ID)

Returns: Query results with columns and data rows

Example:

{
  "query": "SELECT * FROM main.default.users LIMIT 10",
  "catalog_name": "main",
  "warehouse_id": "abc123def456"
}

9. databricks_list_warehouses

List available SQL warehouses.

Parameters: None

Returns: List of SQL warehouses with IDs, names, states, and configurations

Example:

{}

10. databricks_list_sql_warehouses

Alias for databricks_list_warehouses.

Documentation

Comprehensive documentation is available in the docs/ directory:

Getting Started

Tools & CLI

FastMCP

Architecture & Concepts

Development

Project Structure

mpo-mcp/
ā”œā”€ā”€ mpo_mcp/                    # Main package
│   ā”œā”€ā”€ __init__.py            # Package initialization
│   ā”œā”€ā”€ server.py              # FastMCP server implementation
│   ā”œā”€ā”€ config.py              # Configuration management
│   ā”œā”€ā”€ github_tools.py        # GitHub integration (6 tools)
│   ā”œā”€ā”€ confluence_tools.py    # Confluence integration (5 tools)
│   ā”œā”€ā”€ databricks_tools.py    # Databricks integration (10 tools)
│   └── cli.py                 # Command-line interface
ā”œā”€ā”€ docs/                       # Comprehensive documentation
ā”œā”€ā”€ llm_assistant.py           # Interactive LLM assistant
ā”œā”€ā”€ example_usage.py           # Usage examples
ā”œā”€ā”€ quick_query.py             # Quick query utility
ā”œā”€ā”€ requirements.txt           # Python dependencies
ā”œā”€ā”€ pyproject.toml             # Package configuration
ā”œā”€ā”€ .env                       # Environment variables (not in git)
ā”œā”€ā”€ .gitignore                 # Git ignore rules
└── README.md                  # This file

Adding New Tools

  1. Implement the tool in the appropriate tools file:

# In mpo_mcp/github_tools.py
async def new_github_feature(self, param: str) -> Dict[str, Any]:
    """
    Description of the new feature.
    
    Args:
        param: Parameter description
        
    Returns:
        Result description
    """
    # Implementation
    pass
  1. Register the tool in server.py:

@mcp.tool()
async def github_new_feature(param: str) -> dict:
    """Tool description for MCP clients.
    
    Args:
        param: Parameter description
    """
    return await github_tools.new_github_feature(param=param)
  1. Add CLI command in cli.py (optional):

@github_group.command()
@click.option('--param', required=True, help='Parameter description')
def new_feature(param: str):
    """Command description."""
    result = asyncio.run(github_tools.new_github_feature(param=param))
    click.echo(json.dumps(result, indent=2))

Testing Tools

You can test individual tools programmatically:

import asyncio
from mpo_mcp.github_tools import GitHubTools

async def test():
    tools = GitHubTools()
    repos = await tools.list_repositories(org="nike-goal-analytics-mpo", limit=5)
    print(repos)

asyncio.run(test())

Code Quality

  • Type hints: All functions use type hints

  • Docstrings: Comprehensive docstrings for all public methods

  • Error handling: Graceful error handling with informative messages

  • Logging: Structured logging throughout

Dependencies

Core dependencies:

  • fastmcp>=0.1.0 - MCP server framework

  • PyGithub>=2.1.1 - GitHub API client

  • atlassian-python-api>=3.41.0 - Confluence API client

  • databricks-sdk>=0.18.0 - Databricks API client

  • python-dotenv>=1.0.0 - Environment variable management

  • anthropic>=0.39.0 - Anthropic API for LLM assistant

See requirements.txt for complete list.

Troubleshooting

Server Not Starting

Issue: Server fails to start or shows import errors

Solutions:

  1. Verify Python version: python --version (must be 3.10+)

  2. Reinstall dependencies: pip install -r requirements.txt --force-reinstall

  3. Check for conflicting packages: pip list | grep mcp

  4. Verify virtual environment: which python

Tools Not Appearing

Issue: Expected tools don't show up in MCP client

Solutions:

  1. Check configuration validation in server logs

  2. Verify credentials in .env file

  3. Ensure .env is in correct location (project root)

  4. Check environment variables are loaded: python -c "from mpo_mcp.config import Config; print(Config.validate_github())"

  5. Restart the MCP client after configuration changes

API Authentication Errors

GitHub:

  • Verify token has correct scopes (repo, read:org)

  • Check token hasn't expired

  • Test token: curl -H "Authorization: token YOUR_TOKEN" https://api.github.com/user

Confluence:

  • Verify URL format (must include https://)

  • Check API token is valid (not password)

  • Ensure username is email address

  • Test: curl -u email@example.com:API_TOKEN https://your-domain.atlassian.net/wiki/rest/api/space

Databricks:

  • Verify workspace URL is correct

  • Check token hasn't expired

  • Ensure token has appropriate permissions

  • Test: curl -H "Authorization: Bearer YOUR_TOKEN" https://your-workspace.databricks.com/api/2.0/unity-catalog/catalogs

Rate Limiting

GitHub:

  • Authenticated requests: 5,000 requests/hour

  • Search API: 30 requests/minute

  • Use limit parameters to reduce API calls

Confluence:

  • Cloud: Rate limits vary by plan

  • Implement exponential backoff for production use

Databricks:

  • Check workspace quotas

  • Use connection pooling for multiple queries

Claude Desktop Integration Issues

Issue: Tools not appearing in Claude Desktop

Solutions:

  1. Verify config file location:

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

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

  2. Check JSON syntax is valid

  3. Verify cwd path is absolute and correct

  4. Restart Claude Desktop after config changes

  5. Check Claude Desktop logs for errors

LLM Assistant Issues

Issue: Assistant not responding or showing errors

Solutions:

  1. Verify ANTHROPIC_API_KEY is set correctly

  2. Check API key has sufficient credits

  3. Ensure FastMCP server can start independently

  4. Review error messages in console output

Connection Issues

Issue: Tools timing out or failing to connect

Solutions:

  1. Check network connectivity

  2. Verify firewall rules allow outbound HTTPS

  3. Test API endpoints directly with curl

  4. Check proxy settings if behind corporate firewall

  5. Increase timeout values if on slow connection

Debugging Tips

  1. Enable verbose logging:

import logging
logging.basicConfig(level=logging.DEBUG)
  1. Test configuration:

python -c "from mpo_mcp.config import Config; print(f'GitHub: {Config.validate_github()}, Confluence: {Config.validate_confluence()}, Databricks: {Config.validate_databricks()}')"
  1. Run server with logging:

python -m mpo_mcp.server 2>&1 | tee server.log
  1. Test individual tools:

mpo github repos --org nike-goal-analytics-mpo --limit 1
mpo confluence spaces --limit 1
mpo databricks catalogs

Getting Help

If you encounter issues not covered here:

  1. Check the relevant documentation in docs/

  2. Review server logs for detailed error messages

  3. Verify all credentials are correctly configured

  4. Test API endpoints independently

  5. Check you have appropriate permissions for each service

License

This project is provided as-is for demonstration and integration purposes.

Contributing

Contributions are welcome! Please ensure:

  • Code follows existing style and conventions

  • All functions have type hints and docstrings

  • New tools are properly registered

  • Documentation is updated accordingly

Acknowledgments

Built with:


Version: 0.1.0
Python: 3.10+
License: MIT
Status: Production Ready āœ…

Available Tools

19 tools
confluence_get_page_by_titleC

Get a Confluence page by its title.

Args: title: Page title space_key: Space key (optional, defaults to CONFLUENCE_SPACE_KEY env var)

ParametersJSON Schema
NameRequiredDescriptionDefault
space_keyNo
titleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the tool 'Get[s] a Confluence page,' implying a read-only operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, error handling, or what happens if multiple pages share the same title. For a tool with no annotation coverage, this is a significant gap.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by an 'Args:' section that efficiently lists parameters. There's no wasted text, though the structure could be slightly improved by integrating parameter details more seamlessly.

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

Completeness3/5

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

Given the tool has an output schema (which likely describes return values), the description doesn't need to explain outputs. However, with no annotations, 0% schema description coverage, and multiple sibling tools, it lacks completeness in usage guidance and behavioral context, making it adequate but with clear gaps.

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

Parameters3/5

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

The description adds some parameter semantics: it clarifies that 'title' is the 'Page title' and 'space_key' is 'Space key (optional, defaults to CONFLUENCE_SPACE_KEY env var).' With 0% schema description coverage, this compensates partially by explaining the optional nature and default for 'space_key,' but doesn't fully detail parameter formats or constraints beyond what's implied.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get a Confluence page by its title.' It specifies the verb ('Get') and resource ('Confluence page'), and the title parameter clarifies it's title-based retrieval. However, it doesn't explicitly differentiate from sibling tools like 'confluence_search_pages' or 'confluence_list_pages', which might also retrieve pages.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'confluence_search_pages' and 'confluence_list_pages' available, there's no indication of when title-based lookup is preferred over search or listing methods, nor any mention of prerequisites or constraints.

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

confluence_get_page_contentC

Get content of a specific Confluence page.

Args: page_id: Page ID

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic operation. It doesn't disclose behavioral traits like whether this is a read-only operation (implied but not stated), authentication requirements, rate limits, error conditions, or what format the content returns (though output schema exists). For a tool with zero annotation coverage, this is insufficient.

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

Conciseness4/5

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

The description is appropriately brief with two sentences: one stating the purpose and another listing the parameter. It's front-loaded with the main function. However, the 'Args:' section could be integrated more smoothly rather than as a separate labeled section.

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

Completeness3/5

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

Given the tool has an output schema (which handles return values) and only one parameter, the description is minimally complete but lacks important context. With no annotations and siblings that overlap in function, it should provide more guidance on usage and behavioral expectations to be fully helpful to an agent.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds the parameter name 'page_id' and clarifies it's for a 'specific Confluence page', providing basic semantics beyond the bare schema. However, it doesn't explain what a Page ID is, where to find it, or format requirements, leaving significant gaps despite the single parameter.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('content of a specific Confluence page'), making the purpose understandable. It distinguishes from siblings like 'confluence_get_page_by_title' by specifying content retrieval rather than page metadata, but doesn't explicitly contrast with 'confluence_list_pages' or 'confluence_search_pages' for when to use each.

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 'confluence_get_page_by_title' (which uses title instead of ID) or 'confluence_list_pages' (which lists pages rather than getting content). The description only states what it does, not when it's appropriate compared to sibling tools.

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

confluence_list_pagesC

List pages in a Confluence space.

Args: space_key: Space key (optional, defaults to CONFLUENCE_SPACE_KEY env var) limit: Maximum number of pages to return (default: 25)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
space_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't mention authentication requirements, rate limits, pagination details, or what the output looks like (though an output schema exists). For a tool with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by a brief parameter section. There's no wasted text, though the structure could be slightly improved by integrating parameter details more seamlessly rather than a separate 'Args:' section.

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

Completeness3/5

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

Given the tool's low complexity (2 optional parameters) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and 0% schema coverage, it should do more to explain behavioral aspects like authentication or usage context, making it incomplete for optimal agent guidance.

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

Parameters3/5

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

The description adds some parameter semantics: it explains that 'space_key' is optional and defaults to an environment variable, and 'limit' has a default of 25. However, with 0% schema description coverage, it doesn't fully compensate—it doesn't clarify what a 'space_key' is, format requirements, or valid ranges for 'limit'. The baseline is 3 since it adds value but not enough to cover the schema gap.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('pages in a Confluence space'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'confluence_list_spaces' (which lists spaces rather than pages) or 'confluence_search_pages' (which might offer filtering capabilities), missing full sibling differentiation for a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'confluence_search_pages' for filtered searches or 'confluence_list_spaces' for listing spaces instead of pages, nor does it specify prerequisites or exclusions, leaving usage context unclear.

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

confluence_list_spacesB

List Confluence spaces.

Args: limit: Maximum number of spaces to return (default: 25)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 full burden for behavioral disclosure. It only mentions the limit parameter and default, but doesn't describe pagination behavior, authentication requirements, rate limits, error conditions, or what 'spaces' means in Confluence context. For a read operation with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is extremely concise with only two sentences that directly address purpose and parameters. It's front-loaded with the core functionality, and every element serves a clear purpose without any wasted words or redundant information.

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

Completeness3/5

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

Given the tool's low complexity (single optional parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. However, for a tool with no annotations and 0% schema description coverage, it should provide more context about what 'spaces' are in Confluence and typical use cases to be truly complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It documents the single parameter 'limit' with its default value, which adds meaningful information beyond the bare schema. However, it doesn't explain parameter constraints (minimum/maximum values) or provide context about typical usage ranges, leaving some semantic gaps.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('Confluence spaces'), making the purpose immediately understandable. It distinguishes from sibling tools like 'confluence_list_pages' by specifying spaces rather than pages. However, it doesn't explicitly contrast with other space-related tools (none exist in siblings), so it's not a perfect 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, context for listing spaces, or when other tools might be more appropriate. The only usage hint is the default limit parameter, which is insufficient for meaningful guidance.

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

confluence_search_pagesC

Search for pages in Confluence.

Args: query: Search query space_key: Optional space key to limit search limit: Maximum number of results to return (default: 20)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
space_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It discloses basic behavior (searching with optional space filtering and limit), but lacks details on permissions, rate limits, pagination, response format, or error handling. For a search tool with no annotation coverage, this is a significant gap in 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.

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose in the first sentence. The Args section is structured but could be more integrated. There's minimal waste, though it could be slightly more concise by merging the purpose and parameter explanations.

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

Completeness3/5

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

Given the tool's moderate complexity (3 parameters, no annotations, but has output schema), the description is partially complete. It covers basic purpose and parameters but lacks behavioral details and usage guidelines. The output schema exists, so return values needn't be explained, but overall context is adequate with clear gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining 'query' as 'Search query', 'space_key' as 'Optional space key to limit search', and 'limit' with its default value. However, it doesn't detail query syntax, space key format, or limit constraints beyond the default, leaving some semantics unclear.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'Search for pages in Confluence' with a specific verb ('Search') and resource ('pages in Confluence'). It distinguishes from siblings like confluence_get_page_by_title (retrieval by title) and confluence_list_pages (listing without search), though not explicitly. However, it doesn't fully differentiate from databricks_search_tables or github_search_code, which are unrelated but share 'search' functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like confluence_list_pages (for unfiltered listing) or confluence_get_page_by_title (for exact title matching), nor does it specify prerequisites or exclusions. Usage is implied by the search functionality but lacks explicit context.

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

databricks_execute_queryB

Execute a SQL query on Databricks.

Args: query: SQL query to execute catalog_name: Optional catalog name (defaults to DATABRICKS_CATALOG env var) warehouse_id: Optional SQL warehouse ID

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_nameNo
queryYes
warehouse_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 full burden but only states the basic action. It doesn't disclose critical behavioral traits like whether this is a read-only or write operation, potential side effects, authentication requirements, rate limits, timeout behavior, or what happens with large result sets.

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

Conciseness4/5

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

The description is appropriately sized with a clear purpose statement followed by parameter explanations. The Args section is well-structured but could be more front-loaded with critical behavioral information before parameter 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?

Given this is a potentially complex query execution tool with no annotations but with an output schema, the description is moderately complete. It covers parameters well but lacks crucial context about the operation's nature (read vs write), security implications, and execution constraints that would help an agent use it correctly.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates well by explaining all 3 parameters in the Args section. It clarifies that query is required, catalog_name defaults to an environment variable, and warehouse_id is optional. This adds meaningful context beyond the bare schema.

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

Purpose5/5

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

The description clearly states the specific action ('Execute a SQL query') and resource ('on Databricks'), distinguishing it from sibling tools like databricks_list_tables or databricks_get_table_schema which are read-only metadata operations rather than query execution 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites like authentication, connection requirements, or when to choose this over other databricks_* tools for different types of operations.

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

databricks_get_catalog_infoC

Get detailed information about a Databricks catalog.

Args: catalog_name: Catalog name

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a 'Get' operation, implying it's read-only, but doesn't clarify aspects like authentication requirements, rate limits, error handling, or what 'detailed information' entails. This is a significant gap for a tool with no annotation coverage.

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

Conciseness4/5

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

The description is brief and front-loaded with the main purpose, followed by parameter documentation. It avoids unnecessary words, but the structure could be slightly improved by integrating the parameter info more seamlessly rather than as a separate 'Args' block.

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 that there's an output schema (which handles return values), no annotations, and low schema coverage, the description is minimally adequate. It covers the basic purpose and parameter, but lacks details on usage context, behavioral traits, and doesn't fully compensate for the missing annotations, making it incomplete for optimal agent understanding.

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

Parameters3/5

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

The description includes an 'Args' section that documents the single parameter 'catalog_name', but the schema description coverage is 0%, so the schema provides no additional details. The description adds basic meaning by specifying the parameter name, but it doesn't explain format constraints (e.g., string patterns) or provide examples, leaving some ambiguity.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('detailed information about a Databricks catalog'), making the purpose understandable. However, it doesn't explicitly distinguish this tool from its sibling 'databricks_list_catalogs' (which likely lists catalogs rather than providing detailed info about a specific one), so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'databricks_list_catalogs' (for listing catalogs) or 'databricks_get_schema_info' (for schema details), nor does it specify prerequisites or contexts for usage.

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

databricks_get_schema_infoC

Get detailed information about a Databricks schema.

Args: catalog_name: Catalog name schema_name: Schema name

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_nameYes
schema_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states what the tool does ('Get detailed information') without describing traits like whether it's read-only, requires authentication, has rate limits, or what the output format entails. For a tool with no annotation coverage, this is a significant gap in transparency.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, with the main purpose stated first and parameters listed clearly. It avoids unnecessary fluff, but the 'Args' section could be integrated more seamlessly, and it lacks additional context that might be useful, keeping it from a perfect score.

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

Completeness3/5

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

Given the tool's complexity (2 required parameters, no annotations, but has an output schema), the description is minimally adequate. It covers the basic purpose and parameters but lacks details on behavior, usage context, and output interpretation. The presence of an output schema mitigates some gaps, but overall, it's incomplete for effective agent use.

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

Parameters3/5

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

The description includes an 'Args' section that lists the parameters ('catalog_name' and 'schema_name'), adding some meaning beyond the input schema, which has 0% description coverage. However, it doesn't explain what these parameters represent (e.g., format, examples, or constraints), so it only partially compensates for the schema's lack of descriptions. The baseline is 3 due to the schema's low coverage.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get detailed information about a Databricks schema.' It specifies the verb ('Get') and resource ('Databricks schema'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'databricks_get_catalog_info' or 'databricks_list_schemas', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'databricks_list_schemas' (for listing schemas) or 'databricks_get_catalog_info' (for catalog details), nor does it specify prerequisites or contexts for usage. This lack of comparative guidance limits its effectiveness for an AI agent.

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

databricks_get_table_schemaC

Get detailed schema information for a Databricks table.

Args: table_name: Table name schema_name: Schema name catalog_name: Catalog name (optional, defaults to DATABRICKS_CATALOG env var)

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_nameNo
schema_nameYes
table_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves schema information but lacks details on permissions required, rate limits, error handling, or output format. This is inadequate for a tool with no annotation coverage, though it doesn't contradict any annotations.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, followed by a structured Args section. It is efficient with minimal waste, though the Args formatting could be more integrated. Overall, it is appropriately sized and clear.

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 that an output schema exists, the description does not need to explain return values. However, with no annotations, 0% schema coverage, and three parameters, the description lacks sufficient context on behavior, usage, and parameter details. It is minimally viable but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds basic semantics by explaining each parameter (e.g., 'catalog_name' defaults to an environment variable), but does not provide format examples, constraints, or interactions between parameters. This offers some value over the bare schema but is incomplete.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'Get detailed schema information for a Databricks table,' which is a specific verb+resource combination. However, it does not explicitly differentiate from sibling tools like databricks_get_schema_info or databricks_list_tables, which could provide related information, so it falls short of a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it does not mention when to choose this over databricks_get_schema_info or databricks_list_tables, nor does it specify prerequisites or exclusions, leaving usage context unclear.

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

databricks_list_catalogsB

List all catalogs in Databricks Unity Catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 the full burden of behavioral disclosure. It mentions listing 'all catalogs', implying a read-only operation, but doesn't specify permissions required, pagination behavior, rate limits, or what 'all' entails (e.g., across workspaces). This leaves gaps for a tool that likely interacts with a cloud service.

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's front-loaded with the core action and resource, making it easy to scan and understand quickly.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, output schema exists), the description is adequate but minimal. It lacks behavioral details (e.g., permissions, pagination) that would be helpful despite the output schema covering return values. For a list operation in a cloud service, more context on scope and constraints would improve completeness.

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

Parameters4/5

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

The tool has zero parameters, and the input schema has 100% coverage (empty object). The description doesn't need to explain parameters, so it meets the baseline of 4 for having no parameters to document.

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 catalogs in Databricks Unity Catalog'), making the tool's purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'databricks_get_catalog_info' or 'databricks_list_schemas', but the scope is well-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?

No guidance is provided on when to use this tool versus alternatives like 'databricks_get_catalog_info' (for detailed info on a specific catalog) or 'databricks_list_schemas' (for schemas within catalogs). The description only states what it does, not when it's appropriate.

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

databricks_list_schemasC

List schemas in a Databricks catalog.

Args: catalog_name: Catalog name (optional, defaults to DATABRICKS_CATALOG env var)

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose permissions required, rate limits, pagination behavior, or what 'list' entails (e.g., format, completeness), leaving significant gaps for a tool that likely interacts with a database system.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, with the core purpose stated first and parameter details in a separate 'Args' section. It avoids redundancy, though the parameter explanation could be more integrated for better flow.

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

Completeness3/5

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

Given the tool's low complexity (1 optional parameter) and the presence of an output schema, the description is minimally adequate. However, with no annotations and incomplete parameter guidance, it lacks depth on behavioral aspects and usage context, making it functional but not fully informative.

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

Parameters3/5

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

The description adds minimal semantics: it explains that 'catalog_name' is optional and defaults to an environment variable, which provides context beyond the schema's 0% coverage. However, it doesn't detail parameter constraints (e.g., format, validation) or usage implications, offering only basic clarification.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('schemas in a Databricks catalog'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'databricks_list_catalogs' or 'databricks_list_tables' beyond the resource name, missing explicit 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. The description lacks context about prerequisites (e.g., needing catalog access) or comparisons to siblings like 'databricks_list_tables' for schema-specific listing, offering only basic usage without strategic direction.

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

databricks_list_tablesC

List tables in a Databricks schema.

Args: schema_name: Schema name catalog_name: Catalog name (optional, defaults to DATABRICKS_CATALOG env var)

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_nameNo
schema_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('List tables') but doesn't describe behavioral traits such as whether this is a read-only operation, if it requires specific permissions, potential rate limits, pagination behavior, or what happens if the schema doesn't exist. The description is minimal and lacks critical operational context for a tool that interacts with a database system.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, with the core purpose stated first in a single sentence. The Args section is structured but could be more integrated. There's minimal waste, though it lacks additional context that might be useful. It's efficient but could benefit from slightly more elaboration to improve completeness.

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

Completeness3/5

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

Given the tool's moderate complexity (listing tables in a schema), no annotations, and an output schema present, the description is minimally adequate. The output schema likely handles return values, reducing the need for output details in the description. However, with no annotations and low schema coverage, the description should provide more behavioral and usage context to be fully helpful, leaving gaps in operational understanding.

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

Parameters3/5

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

The description adds some parameter semantics beyond the input schema, which has 0% description coverage. It explains that 'catalog_name' is optional and defaults to an environment variable, and clarifies that 'schema_name' is required. However, it doesn't provide details on parameter formats (e.g., string constraints), examples, or the relationship between catalog and schema. With low schema coverage, this partial compensation earns a baseline score.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('tables in a Databricks schema'), making the purpose immediately understandable. It distinguishes from some siblings like 'databricks_execute_query' or 'databricks_get_table_schema' by focusing on listing rather than querying or retrieving schema details. However, it doesn't explicitly differentiate from 'databricks_search_tables', which might be a similar listing tool with filtering capabilities.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'databricks_search_tables' for filtered searches or 'databricks_list_schemas' for broader catalog exploration. There's no context about prerequisites (e.g., needing access to the schema) or typical use cases, leaving the agent to infer usage from the tool name alone.

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

databricks_search_tablesC

Search for tables in Databricks Unity Catalog.

Args: query: Search query (table name pattern) catalog_name: Optional catalog name to limit search max_results: Maximum number of results to return (default: 50)

ParametersJSON Schema
NameRequiredDescriptionDefault
catalog_nameNo
max_resultsNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions searching and optional parameters but lacks critical details: it doesn't specify authentication requirements, rate limits, error handling, or whether the search is case-sensitive. For a search tool in a catalog system, this leaves significant behavioral gaps uncovered.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, starting with the core purpose followed by parameter details in a structured 'Args' section. Each sentence serves a clear purpose, with no wasted words. It could be slightly more concise by integrating parameter explanations more seamlessly, but overall it's efficient.

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

Completeness3/5

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

Given the tool's moderate complexity (3 parameters, no annotations, but with an output schema), the description is partially complete. It covers the basic purpose and parameters but lacks behavioral context and usage guidelines. The presence of an output schema means return values are documented elsewhere, but the description should still address authentication, errors, or search specifics to be more comprehensive.

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

Parameters3/5

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

The description adds basic semantics for all three parameters: 'query' as a 'table name pattern', 'catalog_name' to 'limit search', and 'max_results' with a default. However, with 0% schema description coverage, it doesn't fully compensate by explaining formats (e.g., wildcard syntax for 'query') or constraints (e.g., range for 'max_results'). The value added is minimal beyond the schema's structure.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Search for tables in Databricks Unity Catalog.' It specifies the verb ('search'), resource ('tables'), and context ('Databricks Unity Catalog'). However, it doesn't explicitly differentiate from sibling tools like 'databricks_list_tables' or 'databricks_get_table_schema', which is why it doesn't reach a perfect score of 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools such as 'databricks_list_tables' or 'databricks_get_table_schema', nor does it specify use cases like searching by name pattern versus listing all tables. This lack of comparative context leaves the agent without clear usage direction.

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

github_get_file_contentsB

Get the contents of a file from a GitHub repository.

Args: repo_name: Full repository name (e.g., "owner/repo") file_path: Path to the file in the repository ref: Optional branch, tag, or commit SHA

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
refNo
repo_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool reads file contents but doesn't specify authentication needs, rate limits, error handling, or output format details. The description lacks critical behavioral context for a GitHub API tool, such as whether it requires specific permissions or how it handles large files.

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

Conciseness4/5

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

The description is well-structured with a clear purpose statement followed by parameter explanations. It's appropriately sized at three sentences, with no redundant information. However, the Args section formatting could be more integrated, and it slightly lacks polish in flow.

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

Completeness3/5

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

Given the tool's moderate complexity (3 parameters, no annotations), the description covers the basics but lacks depth. It explains parameters but misses behavioral aspects like authentication or error handling. The presence of an output schema helps, but the description doesn't reference it or explain what 'contents' includes (e.g., raw text, encoding). It's minimally viable but has clear gaps.

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

Parameters3/5

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

The description adds meaningful semantics for all three parameters (repo_name, file_path, ref) by explaining what they represent, with examples for repo_name and clarifying that ref is optional. However, schema description coverage is 0%, so the schema provides no documentation. The description compensates adequately but doesn't cover edge cases like special characters in file paths or ref validation rules.

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

Purpose5/5

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

The description clearly states the specific action ('Get the contents of a file') and resource ('from a GitHub repository'), using a precise verb+resource combination. It distinguishes itself from sibling tools like github_search_code or github_get_repository_info by focusing on file content retrieval rather than searching or repository metadata.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like github_search_code for finding files or github_get_repository_info for repository details, nor does it specify prerequisites such as authentication requirements or rate limits. Usage context is implied but not explicitly stated.

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

github_get_pull_requestsB

Get pull requests for a GitHub repository.

Args: repo_name: Full repository name (e.g., "owner/repo") state: PR state: "open", "closed", or "all" (default: "open") limit: Maximum number of PRs to return (default: 20)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
repo_nameYes
stateNoopen

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions default values for 'state' and 'limit', which is helpful, but fails to describe critical behaviors like authentication requirements, rate limits, pagination, error handling, or the format of returned data. For a tool that likely interacts with an external API, this is a significant gap.

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

Conciseness5/5

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

The description is front-loaded with the core purpose in the first sentence, followed by a well-structured 'Args' section that lists parameters clearly with examples and defaults. Every sentence earns its place, with no redundant or verbose language, making it efficient and easy to parse.

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

Completeness3/5

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

Given the tool's moderate complexity (3 parameters, no annotations), the description covers the purpose and parameters well, and an output schema exists, so return values need not be explained. However, it lacks context on authentication, error cases, or sibling tool differentiation, which are important for a GitHub API tool. It's adequate but has clear gaps.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It effectively explains all three parameters: 'repo_name' as the full repository name with an example, 'state' with its allowed values and default, and 'limit' with its purpose and default. This adds substantial meaning beyond the bare schema, though it could include more details like constraints on 'limit'.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'Get pull requests for a GitHub repository' with a specific verb ('Get') and resource ('pull requests'), making it immediately understandable. However, it does not explicitly differentiate from sibling tools like 'github_search_code' or 'github_list_repositories', which could also involve repository data but for different resources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as 'github_search_code' for code-specific queries or 'github_list_repositories' for broader repository info. It lacks context about prerequisites (e.g., authentication needs) or typical use cases, leaving the agent to infer usage based on the purpose alone.

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

github_get_repository_infoB

Get detailed information about a GitHub repository.

Args: repo_name: Full repository name (e.g., "owner/repo")

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' information, implying a read-only operation, but doesn't confirm if it's safe or has side effects. It lacks details on authentication requirements, rate limits, error handling, or what the output contains (though an output schema exists). This is a significant gap 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.

Conciseness4/5

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

The description is appropriately sized and front-loaded, with the core purpose stated first. The two-sentence structure is efficient, but the second sentence could be integrated more smoothly. There's no wasted text, though it could be slightly more polished for a perfect score.

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

Completeness3/5

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

Given the tool's low complexity (1 parameter) and the presence of an output schema, the description is somewhat complete. It covers the basic purpose and parameter semantics adequately. However, it lacks behavioral context (e.g., authentication, rate limits) and usage guidelines, which are important for a GitHub API tool. The output schema helps, but the description should do more to guide the agent.

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

Parameters4/5

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

The description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'repo_name' is the 'Full repository name (e.g., "owner/repo")', clarifying the expected format. This compensates well for the schema's lack of documentation, though it doesn't cover edge cases like invalid names or special characters.

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

Purpose4/5

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

The description clearly states the verb 'Get' and resource 'detailed information about a GitHub repository', making the purpose immediately understandable. It distinguishes from siblings like 'github_list_repositories' (which lists multiple) and 'github_get_file_contents' (which gets file-specific data). However, it doesn't specify what 'detailed information' includes (e.g., metadata, stats, permissions), keeping it from a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'github_list_repositories' for basic info or 'github_get_pull_requests' for PR-related data. There's no context about prerequisites, such as authentication needs or rate limits, leaving usage unclear beyond the basic purpose.

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

github_list_branchesB

List branches in a GitHub repository.

Args: repo_name: Full repository name (e.g., "owner/repo") limit: Maximum number of branches to return (default: 20)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
repo_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the default limit (20) which is useful, but doesn't describe important behavioral aspects like pagination, rate limits, authentication requirements, error conditions, or what happens when the repository doesn't exist. For a tool that interacts with an external API, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is extremely efficient - a single sentence states the purpose, followed by clear parameter documentation. Every sentence earns its place, with no redundant information. The structure with 'Args:' section makes it easy to parse, and the information is appropriately front-loaded with the core purpose first.

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

Completeness3/5

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

Given that there's an output schema (which means the description doesn't need to explain return values), the description covers the basic purpose and parameters adequately. However, for a tool with no annotations and 2 parameters, it should provide more behavioral context about how the tool interacts with GitHub's API, what authentication is needed, and typical error scenarios. The presence of an output schema raises the baseline, but the lack of behavioral transparency keeps this from being complete.

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

Parameters4/5

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

With 0% schema description coverage, the description must fully compensate for the lack of parameter documentation. It successfully explains both parameters: 'repo_name' gets a clear example ('owner/repo'), and 'limit' gets its purpose and default value. The description adds meaningful context beyond what the bare schema provides, though it could benefit from mentioning that 'limit' is optional due to the default.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('branches in a GitHub repository'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'github_list_repositories', but the specificity of 'branches' vs 'repositories' provides implicit distinction. The description avoids tautology by not just restating the tool name.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'github_get_repository_info' or 'github_get_pull_requests' that might provide related information. There's no context about prerequisites, limitations, or typical use cases for listing branches versus other repository operations.

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

github_list_repositoriesB

List GitHub repositories for a user or organization.

Args: org: Organization or username (optional, defaults to GITHUB_ORG env var) limit: Maximum number of repositories to return (default: 30)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
orgNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 full burden for behavioral disclosure. It mentions default values for parameters but doesn't describe important behaviors like pagination, rate limits, authentication requirements, error handling, or what happens when 'org' is omitted. For a tool that likely interacts with external APIs, this leaves significant gaps.

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

Conciseness4/5

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

The description is appropriately sized with a clear main sentence followed by parameter explanations. The structure is front-loaded with the core purpose first. While efficient, the parameter section could be slightly more integrated rather than a separate 'Args:' block, but overall it's well-organized without wasted 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?

Given the tool has an output schema (which handles return values) and only 2 parameters with some explanation in the description, the description is minimally adequate. However, for a GitHub API tool with no annotations, it should ideally mention authentication, rate limits, or common use cases to be more complete. The presence of an output schema prevents a lower score.

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

Parameters4/5

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

With 0% schema description coverage, the description must compensate, and it does by explaining both parameters: 'org' as 'Organization or username' with its default behavior, and 'limit' as 'Maximum number of repositories to return' with its default. This adds meaningful context beyond the bare schema, though it could provide more detail about format expectations for 'org'.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('GitHub repositories') with scope ('for a user or organization'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling GitHub tools like 'github_get_repository_info' or 'github_search_code', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'github_search_code' or 'github_get_repository_info'. It mentions the 'org' parameter defaults to an environment variable, but offers no context about typical use cases, prerequisites, or limitations compared to sibling tools.

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

github_search_codeB

Search for code in GitHub repositories.

Args: query: Search query repo: Optional repository to search in (format: "owner/repo") limit: Maximum number of results to return (default: 10)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
repoNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the search functionality and default limit, but doesn't cover critical aspects like authentication requirements, rate limits, pagination behavior, error handling, or what the search actually returns (though output schema exists). For a search tool with zero annotation coverage, this leaves significant behavioral 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 perfectly structured and concise. The first sentence states the core purpose, followed by a clear 'Args:' section that documents each parameter efficiently. Every sentence earns its place with no wasted words, making it easy for an agent to parse and understand quickly.

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

Completeness3/5

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

Given 3 parameters with 0% schema coverage but good parameter documentation in the description, plus the existence of an output schema (which means return values don't need explanation), the description is moderately complete. However, for a search tool with no annotations, it should ideally mention authentication needs, rate limits, or search scope limitations to be fully complete for agent use.

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

Parameters4/5

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

With 0% schema description coverage, the description must compensate for all parameter documentation. It successfully explains all three parameters: 'query' as the search query, 'repo' with format specification and optionality, and 'limit' with default value. This adds substantial meaning beyond the bare schema, though it doesn't elaborate on query syntax or result format details.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'Search for code in GitHub repositories' which is a specific verb+resource combination. It distinguishes itself from sibling tools like github_get_file_contents or github_get_repository_info by focusing on search functionality. However, it doesn't explicitly differentiate from other search tools like github_search_repositories (implied) or databricks_search_tables, keeping it at a 4 rather than 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over other GitHub tools like github_get_file_contents for specific code retrieval, or when to use it versus other search tools in the server. There's no context about use cases, prerequisites, or exclusions, leaving the agent with minimal usage direction.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 19 tool updatesv1.0.0
    • First observedconfluence_get_page_by_title
    • First observedconfluence_get_page_content
    • First observedconfluence_list_pages
    • First observedconfluence_list_spaces
    • First observedconfluence_search_pages
    • First observeddatabricks_execute_query
    • First observeddatabricks_get_catalog_info
    • First observeddatabricks_get_schema_info
    • First observeddatabricks_get_table_schema
    • First observeddatabricks_list_catalogs
    • First observeddatabricks_list_schemas
    • First observeddatabricks_list_tables
    • First observeddatabricks_search_tables
    • First observedgithub_get_file_contents
    • First observedgithub_get_pull_requests
    • First observedgithub_get_repository_info
    • First observedgithub_list_branches
    • First observedgithub_list_repositories
    • First observedgithub_search_code

TDQS

B3.4/5.0

Scored across 19 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. The tools are organized by service (Confluence, Databricks, GitHub) and within each service, they target specific resources and actions. For example, confluence_get_page_by_title vs confluence_get_page_content vs confluence_search_pages all serve different but non-overlapping functions.

Naming Consistency5/5

All tools follow a consistent service_verb_noun pattern throughout (e.g., confluence_get_page_by_title, databricks_list_tables, github_search_code). The naming is perfectly predictable with no deviations in style or convention across the entire set.

Tool Count4/5

With 19 tools, the count is slightly high but reasonable given the server covers three distinct services (Confluence, Databricks, GitHub). Each tool earns its place by providing specific functionality, though it might feel heavy for a single server. The scope is well-defined and the tools are appropriately scoped within their domains.

Completeness4/5

The tool set provides comprehensive coverage for read/search operations across all three services, with no obvious gaps for the stated purpose. Minor gaps exist in write/update operations (e.g., no create/update tools for Confluence pages or GitHub PRs), but agents can work effectively with the provided read-focused surface.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Databricks workspaces programmatically, providing comprehensive tools for cluster management, notebook operations, job orchestration, Unity Catalog data governance, user management, permissions control, and FinOps cost analytics.
    545 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to explore Unity Catalog metadata, execute SQL queries, and analyze data lineage including notebooks and jobs, empowering autonomous data discovery and query generation in Databricks.
    MIT