MPO MCP Server
Enables interaction with Confluence documentation through tools for searching and retrieving pages, listing spaces, and accessing page content across Confluence instances.
Offers complete Databricks Unity Catalog integration with tools for querying metadata, executing SQL queries, exploring data schemas, and managing catalogs, schemas, and tables.
Provides comprehensive GitHub integration with tools for browsing repositories, searching code, reading files, managing branches and pull requests, and exploring repository metadata.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MPO MCP Servershow me the schema for the sales_data table in the analytics catalog"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
.envfile configuration with validationSecure: API tokens and credentials managed through environment variables
š Multiple Usage Modes
Interactive LLM Assistant: Natural language interface with autonomous tool selection
MCP Server: Direct integration with Claude Desktop and other MCP clients
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
Clone the repository:
cd /Users/bsang2/Desktop/mcp_demo/mpo-mcpInstall dependencies:
pip install -r requirements.txtOr using uv (faster):
uv pip install -r requirements.txtCreate configuration file:
cp .env.example .env # If example exists
# Or create .env manuallyAdd 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 servermpo: 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_idGetting API Credentials
Anthropic API Key (for Interactive LLM Assistant)
Visit console.anthropic.com
Sign up or log in
Navigate to API Keys
Create a new API key
Copy to
.envfile
GitHub Personal Access Token
Go to GitHub Settings ā Developer settings ā Personal access tokens ā Tokens (classic)
Generate new token with scopes:
repo(for private repositories)read:org(for organization data)user(for user data)
Copy token to
.envfile
Confluence API Token
Create API token
Use your Atlassian account email as username
Copy token to
.envfile
Databricks Access Token
Go to your Databricks workspace
Click User Settings ā Developer
Manage Access tokens ā Generate new token
Set expiration and comment
Copy token to
.envfile
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
Method 1: Interactive LLM Assistant (Recommended) š¤
The easiest way to use the server - a conversational interface that autonomously selects and uses tools:
python llm_assistant.pyFeatures:
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.serverOr if installed as package:
mpo-mcp-serverIntegration 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 --helpSee 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 toGITHUB_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 queryrepo(optional): Limit search to specific repositorylimit(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 namefile_path(required): Path to fileref(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 namelimit(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 namestate(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 toCONFLUENCE_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 queryspace_key(optional): Limit to specific spacelimit(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 titlespace_key(optional): Space key (defaults toCONFLUENCE_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 toDATABRICKS_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 namecatalog_name(optional): Catalog name (defaults toDATABRICKS_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 nameschema_name(required): Schema namecatalog_name(optional): Catalog name (defaults toDATABRICKS_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 catalogmax_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 nameschema_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 executecatalog_name(optional): Catalog context (defaults toDATABRICKS_CATALOG)warehouse_id(optional): SQL warehouse ID (defaults toDATABRICKS_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
QUICKSTART.md - Get started in 5 minutes ā”
SETUP.md - Detailed setup guide with credential instructions š§
GETTING_STARTED_LLM_ASSISTANT.md - Interactive assistant guide š¤
Tools & CLI
TOOLS.md - Complete tool reference with examples š ļø
CLI_GUIDE.md - Command-line interface guide š»
CLI_EXAMPLES.md - CLI usage examples š”
FastMCP
FASTMCP_SUMMARY.md - FastMCP conversion summary ā
FASTMCP_QUICKSTART.md - Quick reference for FastMCP patterns š
FASTMCP_COMPARISON.md - Side-by-side comparison with traditional MCP š
FASTMCP_MIGRATION.md - Detailed migration guide š
Architecture & Concepts
MCP_EXPLAINED.md - Deep dive into how MCP works š§
FLOW_DIAGRAM.md - Visual diagrams of the complete flow š
IMPLEMENTATION_SUMMARY.md - Implementation details š
CURSOR_MCP_SETUP.md - Cursor AI integration guide šÆ
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 fileAdding New Tools
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
passRegister 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)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 frameworkPyGithub>=2.1.1- GitHub API clientatlassian-python-api>=3.41.0- Confluence API clientdatabricks-sdk>=0.18.0- Databricks API clientpython-dotenv>=1.0.0- Environment variable managementanthropic>=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:
Verify Python version:
python --version(must be 3.10+)Reinstall dependencies:
pip install -r requirements.txt --force-reinstallCheck for conflicting packages:
pip list | grep mcpVerify virtual environment:
which python
Tools Not Appearing
Issue: Expected tools don't show up in MCP client
Solutions:
Check configuration validation in server logs
Verify credentials in
.envfileEnsure
.envis in correct location (project root)Check environment variables are loaded:
python -c "from mpo_mcp.config import Config; print(Config.validate_github())"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
limitparameters 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:
Verify config file location:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Check JSON syntax is valid
Verify
cwdpath is absolute and correctRestart Claude Desktop after config changes
Check Claude Desktop logs for errors
LLM Assistant Issues
Issue: Assistant not responding or showing errors
Solutions:
Verify
ANTHROPIC_API_KEYis set correctlyCheck API key has sufficient credits
Ensure FastMCP server can start independently
Review error messages in console output
Connection Issues
Issue: Tools timing out or failing to connect
Solutions:
Check network connectivity
Verify firewall rules allow outbound HTTPS
Test API endpoints directly with curl
Check proxy settings if behind corporate firewall
Increase timeout values if on slow connection
Debugging Tips
Enable verbose logging:
import logging
logging.basicConfig(level=logging.DEBUG)Test configuration:
python -c "from mpo_mcp.config import Config; print(f'GitHub: {Config.validate_github()}, Confluence: {Config.validate_confluence()}, Databricks: {Config.validate_databricks()}')"Run server with logging:
python -m mpo_mcp.server 2>&1 | tee server.logTest individual tools:
mpo github repos --org nike-goal-analytics-mpo --limit 1
mpo confluence spaces --limit 1
mpo databricks catalogsGetting Help
If you encounter issues not covered here:
Check the relevant documentation in
docs/Review server logs for detailed error messages
Verify all credentials are correctly configured
Test API endpoints independently
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:
FastMCP - Modern MCP framework
PyGithub - GitHub API wrapper
atlassian-python-api - Confluence API wrapper
databricks-sdk - Databricks SDK
Anthropic API - Claude AI integration
Version: 0.1.0
Python: 3.10+
License: MIT
Status: Production Ready ā
Available Tools
19 toolsconfluence_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)
| Name | Required | Description | Default |
|---|---|---|---|
| space_key | No | ||
| title | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| space_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| space_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | No | ||
| query | Yes | ||
| warehouse_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | Yes | ||
| schema_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | No | ||
| schema_name | Yes | ||
| table_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | No | ||
| schema_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | No | ||
| max_results | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| ref | No | ||
| repo_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| repo_name | Yes | ||
| state | No | open |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| repo_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| repo_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| org | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| repo | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
19 tool updates
v1.0.0- First observed
confluence_get_page_by_title - First observed
confluence_get_page_content - First observed
confluence_list_pages - First observed
confluence_list_spaces - First observed
confluence_search_pages - First observed
databricks_execute_query - First observed
databricks_get_catalog_info - First observed
databricks_get_schema_info - First observed
databricks_get_table_schema - First observed
databricks_list_catalogs - First observed
databricks_list_schemas - First observed
databricks_list_tables - First observed
databricks_search_tables - First observed
github_get_file_contents - First observed
github_get_pull_requests - First observed
github_get_repository_info - First observed
github_list_branches - First observed
github_list_repositories - First observed
github_search_code
TDQS
Scored across 19 tools
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.
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.
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.
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
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analyā¦
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to access enterprise data from Unity Catalog (vector search, functions, Genie spaces) and perform developer actions in Databricks like managing notebooks and running jobs.-
- AlicenseNot gradedqualityDmaintenanceEnables 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 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with GitHub repositories, issues, pull requests, code, and more through a comprehensive set of tools.-
- AlicenseNot gradedqualityDmaintenanceEnables 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