Skip to main content
Glama
jhliberty

Basecamp MCP Server

by jhliberty

Basecamp MCP Integration

A modern TypeScript MCP server for Basecamp 3, providing seamless integration with Claude Desktop and Cursor IDE through the Model Context Protocol. Built with the official @modelcontextprotocol/sdk and ready for NPX installation.

āœ… TypeScript-First: Modern, type-safe implementation with full async/await support
šŸš€ NPX Ready: Install and run with npx @basecamp/mcp-server
⚔ 46 API Tools: Complete Basecamp 3 integration with all major features

Quick Setup

# Install and set up in one command
npx jhliberty/basecamp-mcp-server setup

# Authenticate with Basecamp
npx jhliberty/basecamp-mcp-server auth

# Configure for your AI assistant
npx jhliberty/basecamp-mcp-server config claude   # For Claude Desktop
npx jhliberty/basecamp-mcp-server config cursor  # For Cursor IDE

Prerequisites

Related MCP server: Basecamp MCP Server

Local Development Setup

For Development

  1. Clone and build the project:

    git clone <repository-url>
    cd basecamp-mcp-server
    npm install
    npm run build
  2. Run setup script:

    npm run setup

    The setup script automatically:

    • āœ… Installs all TypeScript dependencies

    • āœ… Builds the project to dist/

    • āœ… Creates .env template file

    • āœ… Tests MCP server functionality

  3. Configure OAuth credentials: Edit the generated .env file:

    BASECAMP_CLIENT_ID=your_client_id_here
    BASECAMP_CLIENT_SECRET=your_client_secret_here
    BASECAMP_ACCOUNT_ID=your_account_id_here
    USER_AGENT="Your App Name (your@email.com)"
  4. Authenticate with Basecamp:

    npm run auth

    Visit http://localhost:8000 and complete the OAuth flow.

  5. Generate configurations:

    npm run config:cursor  # For Cursor IDE
    npm run config:claude  # For Claude Desktop
  6. Restart your AI assistant completely (quit and reopen)

  7. Verify in your AI assistant:

    • Cursor: Go to Settings → MCP, look for "basecamp" with a green checkmark

    • Claude Desktop: Look for tools icon (šŸ”) in chat interface

    • Available tools: 46 tools for complete Basecamp control

Test Your Setup

# Quick test the MCP server
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | node dist/index.js

# Run automated tests  
npm test

# Run tests with UI
npm run test:ui

For Claude Desktop Users

Based on the official MCP quickstart guide, Claude Desktop integration follows these steps:

Setup Steps

  1. Complete the basic setup (steps 1-4 from development setup above):

    git clone <repository-url>
    cd basecamp-mcp-server
    npm install
    npm run setup
    # Configure .env file with OAuth credentials
    npm run auth
  2. Generate Claude Desktop configuration:

    npm run config:claude
  3. Restart Claude Desktop completely (quit and reopen the application)

  4. Verify in Claude Desktop:

    • Look for the "Search and tools" icon (šŸ”) in the chat interface

    • You should see "basecamp" listed with all 46 tools available

    • Toggle the tools on to enable Basecamp integration

Claude Desktop Configuration

The configuration is automatically created at:

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

  • Windows: ~/AppData/Roaming/Claude/claude_desktop_config.json

  • Linux: ~/.config/claude-desktop/claude_desktop_config.json

Example configuration generated:

{
  "mcpServers": {
    "basecamp": {
      "command": "node",
      "args": ["/path/to/your/project/dist/index.js"],
      "env": {
        "BASECAMP_ACCOUNT_ID": "your_account_id"
      }
    }
  }
}

Usage in Claude Desktop

Ask Claude things like:

  • "What are my current Basecamp projects?"

  • "Show me the latest campfire messages from the Technology project"

  • "Create a new card in the Development column with title 'Fix login bug'"

  • "Get all todo items from the Marketing project"

  • "Search for messages containing 'deadline'"

Troubleshooting Claude Desktop

Check Claude Desktop logs (following official debugging guide):

# macOS/Linux - Monitor logs in real-time
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

# Check for specific errors
ls ~/Library/Logs/Claude/mcp-server-basecamp.log

Common issues:

  • Tools not appearing: Verify configuration file syntax and restart Claude Desktop

  • Connection failures: Check that Node.js path and script path are absolute paths

  • Authentication errors: Ensure OAuth flow completed successfully (oauth_tokens.json exists)

Available MCP Tools

Once configured, you can use these tools in Cursor:

  • get_projects - Get all Basecamp projects

  • get_project - Get details for a specific project

  • get_todolists - Get todo lists for a project

  • get_todos - Get todos from a todo list

  • search_basecamp - Search across projects, todos, and messages

  • get_comments - Get comments for a Basecamp item

  • get_campfire_lines - Get recent messages from a Basecamp campfire

  • get_daily_check_ins - Get project's daily check-in questions

  • get_question_answers - Get answers to daily check-in questions

  • create_attachment - Upload a file as an attachment

  • get_events - Get events for a recording

  • get_webhooks - List webhooks for a project

  • create_webhook - Create a webhook

  • delete_webhook - Delete a webhook

  • get_documents - List documents in a vault

  • get_document - Get a single document

  • create_document - Create a document

  • update_document - Update a document

  • trash_document - Move a document to trash

Card Table Tools

  • get_card_table - Get the card table details for a project

  • get_columns - Get all columns in a card table

  • get_column - Get details for a specific column

  • create_column - Create a new column in a card table

  • update_column - Update a column title

  • move_column - Move a column to a new position

  • update_column_color - Update a column color

  • put_column_on_hold - Put a column on hold (freeze work)

  • remove_column_hold - Remove hold from a column (unfreeze work)

  • watch_column - Subscribe to notifications for changes in a column

  • unwatch_column - Unsubscribe from notifications for a column

  • get_cards - Get all cards in a column

  • get_card - Get details for a specific card

  • create_card - Create a new card in a column

  • update_card - Update a card

  • move_card - Move a card to a new column

  • complete_card - Mark a card as complete

  • uncomplete_card - Mark a card as incomplete

  • get_card_steps - Get all steps (sub-tasks) for a card

  • create_card_step - Create a new step (sub-task) for a card

  • get_card_step - Get details for a specific card step

  • update_card_step - Update a card step

  • delete_card_step - Delete a card step

  • complete_card_step - Mark a card step as complete

  • uncomplete_card_step - Mark a card step as incomplete

Example Cursor Usage

Ask Cursor things like:

  • "Show me all my Basecamp projects"

  • "What todos are in project X?"

  • "Search for messages containing 'deadline'"

  • "Get details for the Technology project"

  • "Show me the card table for project X"

  • "Create a new card in the 'In Progress' column"

  • "Move this card to the 'Done' column"

  • "Update the color of the 'Urgent' column to red"

  • "Mark card as complete"

  • "Show me all steps for this card"

  • "Create a sub-task for this card"

  • "Mark this card step as complete"

Architecture

The project uses the official @modelcontextprotocol/sdk for maximum reliability and compatibility:

  1. MCP Server (src/index.ts) - Official MCP SDK with 46 tools, compatible with both Cursor and Claude Desktop

  2. OAuth App (src/lib/oauth-app.ts) - Handles OAuth 2.0 flow with Basecamp

  3. Token Storage (src/lib/token-storage.ts) - Securely stores OAuth tokens

  4. Basecamp Client (src/lib/basecamp-client.ts) - Basecamp API client library

  5. Type Definitions (src/types/basecamp.ts) - Complete TypeScript interfaces

  6. Configuration Scripts:

    • NPM scripts for setup, authentication, and config generation

    • Built-in TypeScript compilation and testing

Troubleshooting

Common Issues (Both Clients)

  • šŸ”“ Red/Yellow indicator: Run npm run setup to build the project and dependencies

  • šŸ”“ "0 tools available": Project not built or dependencies missing - run setup script

  • šŸ”“ "Tool not found" errors: Restart your client (Cursor/Claude Desktop) completely

  • āš ļø Missing BASECAMP_ACCOUNT_ID: Add to .env file, then re-run the config generator

Quick Fixes

Problem: Server won't start

# Test if MCP server works:
node dist/index.js
# If this fails, run: npm run build

Problem: Wrong Node.js version

node --version  # Must be 18+
# If too old, install newer Node.js and re-run setup

Problem: Authentication fails

# Check OAuth flow:
npm run auth
# Visit http://localhost:8000 and complete login

Manual Configuration (Last Resort)

Cursor config location: ~/.cursor/mcp.json (macOS/Linux) or %APPDATA%\Cursor\mcp.json (Windows)
Claude Desktop config location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

{
    "mcpServers": {
        "basecamp": {
            "command": "node",
            "args": ["/full/path/to/your/project/dist/index.js"],
            "cwd": "/full/path/to/your/project",
            "env": {
                "BASECAMP_ACCOUNT_ID": "your_account_id"
            }
        }
    }
}

Finding Your Account ID

If you don't know your Basecamp account ID:

  1. Log into Basecamp in your browser

  2. Look at the URL - it will be like https://3.basecamp.com/4389629/projects

  3. The number (4389629 in this example) is your account ID

Security Notes

  • Keep your .env file secure and never commit it to version control

  • The OAuth tokens are stored locally in oauth_tokens.json

  • This setup is designed for local development use

Acknowledgments

This TypeScript implementation was inspired by and built upon the excellent foundation provided by the original Python Basecamp MCP Server.

Thank you to the original Python project maintainers for creating a solid foundation that enabled this TypeScript adaptation! šŸ™

License

This project is licensed under the MIT License.

Available Tools

33 tools
complete_cardC

Mark a card as complete

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesThe card ID
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Mark a card as complete' implies a mutation operation, but it does not disclose any behavioral traits such as permissions required, whether the action is reversible, side effects (e.g., notifications, status changes), or error handling. This leaves significant gaps for an agent to understand the tool's behavior.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is front-loaded and efficiently conveys the core purpose without unnecessary elaboration, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It fails to address key contextual aspects such as what 'complete' means in this system, potential side effects, return values, or error conditions. This makes it inadequate for an agent to fully understand the tool's operation and implications.

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

Parameters3/5

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

The input schema has 100% description coverage, with clear documentation for both 'card_id' and 'project_id'. The description does not add any semantic details beyond what the schema provides, such as explaining why both IDs are required or how they relate to the completion action. Given the high schema coverage, the baseline score of 3 is appropriate, as the description does not compensate but also does not detract.

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

Purpose4/5

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

The description 'Mark a card as complete' clearly states the action (mark as complete) and resource (a card), which is specific and actionable. However, it does not differentiate from sibling tools like 'complete_card_step' or 'update_card', which might have overlapping or related functionality, so it lacks sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it does not specify if this is for final completion versus incremental steps (compared to 'complete_card_step') or if it should be used instead of 'update_card' for completion status. There is no mention of prerequisites, context, or exclusions.

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

complete_card_stepC

Mark a card step as complete

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID
step_idYesThe step ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It implies a mutation ('Mark as complete') but doesn't disclose behavioral traits like whether this is idempotent, requires specific permissions, affects other data (e.g., triggers notifications), or returns confirmation. For a mutation tool with zero 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse. Every word earns its place without redundancy or fluff.

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

Completeness2/5

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

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral context (e.g., side effects, error conditions), usage prerequisites, and what happens upon completion. For a tool that modifies state, more information is needed to guide safe and effective use.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters ('project_id' and 'step_id') clearly documented in the schema. The description adds no additional meaning beyond implying these IDs are needed to identify the step. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Mark') and resource ('a card step'), specifying it as 'complete'. It distinguishes from siblings like 'complete_card' (which marks an entire card) and 'get_card_steps' (which retrieves steps). However, it doesn't explicitly contrast with all siblings, such as 'update_card' which might also modify step status.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., step must exist, user must have permissions), exclusions (e.g., cannot complete already completed steps), or related tools like 'get_card_steps' to check status first. The description alone offers no usage context.

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

create_cardC

Create a new card in a column

ParametersJSON Schema
NameRequiredDescriptionDefault
column_idYesThe column ID
contentNoOptional card content/description
due_onNoOptional due date (ISO 8601 format)
notifyNoWhether to notify assignees (default: false)
project_idYesThe project ID
titleYesThe card title

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the tool creates a card but doesn't disclose what happens after creation (e.g., whether the card appears in a specific order, if notifications are sent, or if there are rate limits). For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its effects.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action without unnecessary words. Every part earns its place by directly stating the tool's function, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of a creation tool with 6 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the result (e.g., what's returned upon success), error conditions, or dependencies like required project/column existence. For a tool that modifies state, more context is needed to use it effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds no additional meaning beyond implying a card is created in a column, which is already clear from the tool name. This meets the baseline of 3 since the schema does the heavy lifting, but the description doesn't enhance parameter understanding.

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

Purpose4/5

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

The description clearly states the action ('Create') and resource ('new card in a column'), making the purpose immediately understandable. It distinguishes from siblings like 'update_card' or 'move_card' by specifying creation, though it doesn't explicitly differentiate from 'create_card_step' which creates a step within a card rather than the card itself.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing project and column), contrast with 'update_card' for modifications, or explain when 'create_card_step' might be more appropriate for adding steps to an existing card.

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

create_card_stepC

Create a new step (sub-task) for a card

ParametersJSON Schema
NameRequiredDescriptionDefault
assignee_idsNoArray of person IDs to assign to the step
card_idYesThe card ID
due_onNoOptional due date (ISO 8601 format)
project_idYesThe project ID
titleYesThe step title

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'create' implies a write operation, the description doesn't address critical behavioral aspects such as required permissions, whether the step is automatically saved, what happens on validation errors, or the response format. This leaves significant gaps for a mutation 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place, achieving optimal conciseness for this context.

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

Completeness2/5

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

Given that this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information about behavioral traits (e.g., error handling, permissions), usage context, and what the tool returns. While the schema covers parameters well, the overall context for safe and effective use is insufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema (e.g., it doesn't clarify relationships between parameters like 'card_id' and 'project_id'). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't enhance parameter understanding.

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

Purpose4/5

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

The description clearly states the action ('create') and resource ('new step (sub-task) for a card'), making the purpose immediately understandable. It distinguishes this from sibling tools like 'create_card' (which creates cards) and 'complete_card_step' (which completes steps). However, it doesn't specify what a 'step' entails beyond 'sub-task', leaving some ambiguity about its exact function.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing card), exclusions, or comparisons to similar tools like 'create_card' or 'update_card'. Without this context, users must infer usage from the tool name and parameters alone.

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

create_columnC

Create a new column in a card table

ParametersJSON Schema
NameRequiredDescriptionDefault
card_table_idYesThe card table ID
project_idYesThe project ID
titleYesThe column title

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Create' implies a write/mutation operation, the description doesn't specify permission requirements, whether this operation is idempotent, what happens on duplicate column titles, or what the response looks like. For a creation tool with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the core functionality without unnecessary words. It's front-loaded with the essential action and resource, making it immediately scannable. Every word earns its place, with no redundant information or fluff.

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

Completeness2/5

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

For a creation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation (e.g., returns the new column object, success status), permission requirements, or error conditions. With 3 required parameters and mutation behavior, more context is needed to help the agent use this tool effectively.

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

Parameters3/5

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

The description mentions creating a column 'in a card table,' which implies the need for card_table_id, but doesn't explicitly connect to the three parameters. With 100% schema description coverage, all parameters are documented in the schema itself (card_table_id, project_id, title). The description adds minimal value beyond what the schema provides, meeting the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Create') and resource ('new column in a card table'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'update_column' or 'move_column', but the verb 'Create' distinguishes it from update operations. The description is specific enough to understand what the tool does without being tautological.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'update_column', 'move_column', and 'get_columns', there's no indication of when creation is appropriate versus modification or retrieval. No prerequisites, constraints, or alternative tools are mentioned, leaving the agent to infer usage context.

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

create_documentC

Create a document in a vault

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesDocument HTML content
project_idYesProject ID
titleYesDocument title
vault_idYesVault ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Create a document in a vault,' implying a write/mutation operation, but doesn't cover permissions, side effects, error handling, or response format. This is inadequate for a tool that likely modifies data, leaving significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words, making it easy to parse and understand quickly. It's appropriately sized for its purpose and front-loaded with the core action.

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

Completeness2/5

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

Given the complexity of a creation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after creation, potential errors, or how it fits into the broader system with siblings like 'get_documents' or 'trash_document'. This leaves the agent with insufficient context for effective use.

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

Parameters3/5

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

The input schema has 100% description coverage, with each parameter clearly documented (e.g., 'Document HTML content' for 'content'). The description doesn't add any meaning beyond the schema, such as explaining relationships between parameters or usage examples, so it meets the baseline score for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Create') and resource ('document in a vault'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'create_card' or 'create_column', which also create resources, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention when to use 'create_document' instead of 'create_card' or how it relates to 'trash_document' or 'update_document' among the siblings. This leaves the agent without context for tool selection.

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

create_webhookC

Create a webhook

ParametersJSON Schema
NameRequiredDescriptionDefault
payload_urlYesPayload URL
project_idYesProject ID
typesNoEvent types

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Create a webhook' implies a write operation but reveals nothing about permissions required, whether the creation is idempotent, what happens on failure, rate limits, or the expected response format. For a mutation tool with zero annotation coverage, this lack of behavioral information is a critical gap that could lead to incorrect usage.

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

Conciseness5/5

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

The description is extremely concise at just three words, with zero wasted language. It's front-loaded with the core action ('Create'), though this brevity comes at the cost of completeness. While under-specified, it's not verbose or poorly structured, earning full marks for conciseness.

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

Completeness2/5

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

Given the complexity of a webhook creation tool (a mutation operation with no annotations and no output schema), the description is incomplete. It fails to address key contextual elements like what the tool returns, error conditions, or how it integrates with the system (e.g., Basecamp, as implied by sibling tools). The high schema coverage helps somewhat, but the overall description lacks the depth needed for safe and effective use.

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

Parameters3/5

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

Schema description coverage is 100%, meaning all parameters (payload_url, project_id, types) are documented in the schema itself. The description adds no additional semantic context beyond what's in the schema—it doesn't explain what a 'payload_url' is used for, what 'project_id' refers to, or what 'types' of events are supported. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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

Purpose2/5

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

The description 'Create a webhook' is a tautology that merely restates the tool name without providing any meaningful elaboration. It doesn't specify what kind of webhook is being created (e.g., for what system or purpose), what resources it affects, or how it differs from sibling tools like 'delete_webhook' or 'get_webhooks'. While the verb 'create' is clear, the lack of context makes this minimally informative.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a project_id), when it's appropriate (e.g., for real-time notifications), or what other tools might be relevant (like 'get_webhooks' to list existing ones or 'delete_webhook' for removal). Without any usage context, an agent would struggle to determine the correct application scenario.

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

delete_webhookC

Delete a webhook

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID
webhook_idYesWebhook ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is 'Delete,' implying a destructive mutation, but doesn't specify whether this is permanent, requires specific permissions, has side effects (e.g., stopping notifications), or what happens on success/failure. This leaves significant gaps for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the essential action and resource, making it easy to parse quickly without unnecessary elaboration.

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

Completeness2/5

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

For a destructive mutation tool with no annotations and no output schema, the description is inadequate. It lacks details on behavioral traits (e.g., permanence, error handling), expected outcomes, or integration with sibling tools, leaving the agent with insufficient context to use it safely and effectively.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters ('project_id' and 'webhook_id') documented in the schema. The description adds no additional meaning about the parameters, such as format examples or contextual usage, so it meets the baseline for high schema coverage without compensating value.

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

Purpose4/5

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

The description clearly states the action ('Delete') and resource ('a webhook'), making the purpose immediately understandable. It doesn't distinguish from sibling tools like 'create_webhook' or 'get_webhooks', but the verb 'Delete' is specific enough to convey the core function without being tautological.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing webhook), exclusions, or relationships with sibling tools like 'create_webhook' or 'get_webhooks', leaving the agent to infer usage context solely from the tool name.

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

get_campfire_linesB

Get recent messages from a Basecamp campfire (chat room)

ParametersJSON Schema
NameRequiredDescriptionDefault
campfire_idYesThe campfire/chat room ID
project_idYesThe project ID

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation but doesn't specify details like pagination, rate limits, authentication requirements, or what 'recent' means (e.g., time frame or message count). For a tool with zero 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.

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence contributes directly to understanding the tool's function, making it highly concise and well-structured.

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

Completeness3/5

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

Given the tool's moderate complexity (2 required parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavior, usage context, and output format, which are needed for full completeness. Without annotations or output schema, more guidance would be beneficial.

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

Parameters3/5

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

The schema description coverage is 100%, with clear descriptions for both parameters in the input schema. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. This meets the baseline for high schema coverage but doesn't enhance understanding.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('recent messages from a Basecamp campfire'), making the tool's purpose immediately understandable. It specifies the scope ('recent messages') and context ('chat room'), though it doesn't explicitly differentiate from sibling tools like 'get_comments' or 'global_search', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing a valid project and campfire ID, or compare it to similar tools like 'get_comments' or 'search_basecamp'. This leaves the agent without context for tool selection.

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

get_cardC

Get details for a specific card

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesThe card ID
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It implies a read operation ('Get details'), but doesn't disclose behavioral traits such as error handling (e.g., what happens if the card_id is invalid), authentication needs, rate limits, or response format. 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose ('Get details for a specific card'), making it easy to parse. Every word earns its place without redundancy or fluff.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'details' include, error conditions, or behavioral context. For a read tool with two required parameters, more information is needed to help the agent use it effectively, especially without structured output guidance.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters (card_id, project_id) documented in the schema. The description adds no additional meaning beyond the schema, such as explaining why both IDs are required or their relationship. Baseline 3 is appropriate since the schema handles parameter documentation adequately.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('details for a specific card'), making the purpose understandable. It distinguishes from sibling tools like 'get_cards' (plural) by specifying retrieval of a single card. However, it doesn't explicitly contrast with other read tools like 'get_card_steps' or 'get_card_table', which slightly limits differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a project_id), exclusions, or comparisons to siblings like 'get_cards' (for lists) or 'get_card_steps' (for steps). This leaves the agent without context for tool selection.

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

get_cardsC

Get all cards in a column

ParametersJSON Schema
NameRequiredDescriptionDefault
column_idYesThe column ID
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Get all cards' but does not clarify if this is a read-only operation, whether it requires authentication, how results are returned (e.g., pagination), or any rate limits. The description is minimal and lacks critical behavioral details 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.

Conciseness5/5

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

The description is a single, direct sentence ('Get all cards in a column') with no unnecessary words. It is front-loaded and efficiently conveys the core action, making it highly concise and well-structured for quick understanding.

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

Completeness2/5

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

Given the tool's complexity (a read operation with 2 required parameters), lack of annotations, and no output schema, the description is incomplete. It does not explain return values, error handling, or behavioral traits, leaving significant gaps for an AI agent to understand how to invoke and interpret results effectively.

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

Parameters3/5

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

The input schema has 100% description coverage, with clear parameter definitions for 'column_id' and 'project_id'. The description does not add any additional meaning beyond the schema, such as explaining relationships between parameters or usage examples. Since schema coverage is high, the baseline score of 3 is appropriate, as the description neither compensates nor detracts.

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

Purpose4/5

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

The description 'Get all cards in a column' clearly states the verb ('Get') and resource ('cards in a column'), making the purpose understandable. However, it does not explicitly distinguish this tool from sibling tools like 'get_card' (singular) or 'get_card_steps', leaving some ambiguity about scope differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools like 'get_card' for single cards or 'global_search' for broader queries, 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.

get_card_stepsC

Get all steps (sub-tasks) for a card

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesThe card ID
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a 'Get' operation, implying read-only behavior, but doesn't confirm if it's safe, requires authentication, has rate limits, returns paginated results, or what the output format looks like (e.g., list of steps with details). For a read operation with zero annotation coverage, this leaves significant gaps in understanding how it behaves.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action ('Get all steps') and resource ('for a card'). There is zero waste—every word earns its place by directly conveying the tool's purpose without redundancy or unnecessary elaboration.

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

Completeness2/5

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

Given the complexity (a read operation with 2 required parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like safety, output format, or error handling, which are crucial for an agent to use it correctly. While concise, it fails to provide enough context for reliable tool invocation in a broader workflow.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters ('card_id' and 'project_id') clearly documented in the schema. The description adds no additional meaning about parameters beyond implying they are needed to fetch steps for a specific card. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('all steps (sub-tasks) for a card'), making the purpose immediately understandable. It distinguishes from siblings like 'get_card' (which retrieves card metadata) or 'get_todos' (which retrieves different task types). However, it doesn't explicitly mention that this is for retrieving sub-tasks specifically within a card context, which could be slightly more precise.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a card ID from 'get_card' or 'get_cards'), exclusions (e.g., not for top-level tasks), or comparisons to similar tools like 'get_todos' (which might handle different task types). Without this, an agent might misuse it in inappropriate contexts.

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

get_card_tableC

Get the card table details for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read operation ('Get'), but doesn't specify if it requires authentication, has rate limits, returns paginated results, or what the output format looks like. For a tool with no annotation coverage, this leaves significant behavioral aspects unclear.

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

Conciseness4/5

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

The description is a single, straightforward sentence that efficiently conveys the core action. It is front-loaded with the main purpose and avoids unnecessary words, making it appropriately concise for a simple tool. However, it could be slightly more structured by including key usage details.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is insufficiently complete. It doesn't explain what 'card table details' entail, how the data is returned, or any error conditions. For a tool in a context with many sibling tools and no structured output, more detail is needed to guide effective use.

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

Parameters3/5

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

The schema description coverage is 100%, with the single parameter 'project_id' clearly documented in the schema. The description adds no additional meaning beyond implying the parameter is used to fetch card table details for a specific project, which aligns with the schema. Baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.

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

Purpose4/5

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

The description clearly states the verb 'Get' and the resource 'card table details for a project', making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_cards' or 'get_card', which might retrieve similar but different data, leaving some ambiguity about what exactly 'card table details' includes compared to other get operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'get_cards' or 'get_card', nor does it mention any prerequisites or context for usage. It simply states what the tool does without indicating scenarios or constraints for its application.

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

get_columnsC

Get all columns in a card table

ParametersJSON Schema
NameRequiredDescriptionDefault
card_table_idYesThe card table ID
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without behavioral details. It doesn't disclose whether this is a read-only operation, potential rate limits, authentication needs, error conditions, or return format (e.g., list structure), which are critical for a tool with parameters.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple retrieval tool, making it easy to parse quickly.

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

Completeness2/5

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

Given the tool has 2 parameters, no annotations, and no output schema, the description is incomplete. It lacks details on behavioral traits, return values, or error handling, which are necessary for effective use, especially without structured support.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters ('card_table_id', 'project_id') documented in the schema. The description implies these are needed to identify the table but adds no extra meaning beyond what the schema provides, meeting the baseline for high coverage.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('all columns in a card table'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_card_table' or 'get_cards' that also retrieve related data, missing explicit sibling distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description lacks context about prerequisites (e.g., needing a valid card table ID) or comparisons to other retrieval tools in the sibling list, leaving usage unclear.

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

get_commentsC

Get comments for a Basecamp item

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID
recording_idYesThe item ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states what the tool does ('Get comments') without mentioning permissions needed, rate limits, pagination behavior, error conditions, or what format the comments are returned in. This leaves critical operational context unspecified.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple retrieval tool and front-loads the essential information.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool that retrieves data. It doesn't explain what 'comments' entail, how they're structured, whether there are limitations on retrieval, or what authentication is required. For a data-fetching tool with zero structured metadata, this leaves too many operational questions unanswered.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are documented in the schema. The description adds no additional parameter information beyond what the schema provides about 'project_id' and 'recording_id', maintaining the baseline score for adequate schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('comments for a Basecamp item'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_campfire_lines' or 'get_question_answers' that also retrieve specific content types, leaving some ambiguity about when to choose this tool over others.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'global_search' and 'search_basecamp' that might also retrieve comments, there's no indication of when this specific comment-fetching tool is preferred or what its limitations are.

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

get_daily_check_insC

Get project's daily checking questionnaire

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for paginated response
project_idYesThe project ID

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action ('Get') without detailing permissions, rate limits, pagination behavior (implied by the 'page' parameter but not explained), or response format. This is inadequate for a tool with parameters and no output schema.

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

Conciseness4/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, though it could be more informative given the lack of other context.

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

Completeness2/5

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

Given no annotations, no output schema, and a vague purpose, the description is incomplete. It doesn't explain what a 'daily checking questionnaire' is, how results are structured, or behavioral traits like pagination. For a tool with parameters and sibling alternatives, this leaves significant gaps for an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters ('project_id' and 'page') adequately. The description adds no additional meaning beyond what the schema provides, such as clarifying the 'daily checking questionnaire' context for 'project_id' or explaining pagination details for 'page'. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose3/5

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

The description states the tool's purpose as retrieving a 'daily checking questionnaire' for a project, which is clear but vague. It specifies the resource ('project's daily checking questionnaire') and verb ('Get'), but doesn't clarify what a 'daily checking questionnaire' entails or how it differs from sibling tools like 'get_question_answers' or 'get_cards' that might retrieve similar project data.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or comparisons to sibling tools such as 'get_question_answers' or 'get_cards', leaving the agent to infer usage context without explicit direction.

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

get_documentsC

List documents in a vault

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID
vault_idYesVault ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action ('List') without detailing aspects like whether it's read-only, requires authentication, includes pagination, or returns metadata. This leaves significant gaps for a tool that likely interacts with data.

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

Conciseness5/5

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

The description is a single, efficient sentence that is front-loaded and wastes no words. It directly conveys the core purpose without unnecessary elaboration, making it highly concise and well-structured.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It does not explain what the tool returns (e.g., list format, document details) or behavioral traits like error handling. For a tool with two required parameters and no structured output info, more context is needed.

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

Parameters3/5

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

The input schema has 100% description coverage, with parameters 'project_id' and 'vault_id' clearly documented. The description adds no additional meaning beyond implying a vault context, so it meets the baseline of 3 where the schema does the heavy lifting.

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

Purpose4/5

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

The description 'List documents in a vault' clearly states the action ('List') and resource ('documents in a vault'), making the purpose immediately understandable. However, it does not differentiate from sibling tools like 'get_uploads' or 'trash_document', which might also involve documents, so it lacks sibling distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it does not mention when to choose 'get_documents' over 'global_search' or 'search_basecamp' for document retrieval, nor does it specify prerequisites like needing a vault context.

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

get_projectC

Get details for a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It implies a read operation ('Get details') but does not disclose behavioral traits such as authentication needs, rate limits, error handling, or what happens if the project ID is invalid. The description is minimal and lacks critical operational context.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration, making it easy to parse quickly.

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

Completeness2/5

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

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It does not explain what 'details' are returned, potential errors, or how it fits with sibling tools. For a read operation, more context on output or usage would improve completeness.

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

Parameters3/5

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

The input schema has 100% description coverage (parameter 'project_id' is documented as 'The project ID'), so the baseline is 3. The description adds no additional meaning beyond the schema, such as format examples or constraints, but does not need to compensate for gaps.

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

Purpose3/5

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

The description states the tool's purpose ('Get details for a specific project') with a clear verb ('Get') and resource ('project'), but it lacks specificity about what 'details' include and does not differentiate from sibling tools like 'get_projects' (plural) or 'get_cards' (related resources). It's vague about scope beyond the basic action.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it does not clarify if this is for retrieving metadata versus full content, or when to prefer 'get_projects' for listing multiple projects. The description offers no context on prerequisites or exclusions.

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

get_projectsB

Get all Basecamp projects

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. 'Get all Basecamp projects' implies a read-only operation but doesn't disclose behavioral traits like whether it returns active/archived projects, pagination, sorting, rate limits, authentication requirements, or response format. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose ('Get all Basecamp projects'), making it immediately scannable and easy to understand. Every word earns its place.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema), the description is minimally adequate but incomplete. It states what the tool does but lacks context about the return value (e.g., list of projects with what fields), filtering options, or behavioral constraints. Without annotations or output schema, the description should provide more operational context for effective use.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description adds no parameter information, which is appropriate since there are none. Baseline for 0 parameters is 4, as the description doesn't need to compensate for any schema gaps.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('all Basecamp projects'), making the purpose immediately understandable. It distinguishes this tool from other project-related tools like 'get_project' (singular) by specifying 'all' projects. However, it doesn't explicitly contrast with other listing tools like 'get_cards' or 'get_documents'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer 'get_projects' over 'get_project' (singular), 'global_search', or 'search_basecamp' for finding projects. There are no prerequisites, exclusions, or context about typical use cases.

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

get_question_answersC

Get answers on daily check-in question

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for paginated response
project_idYesThe project ID
question_idYesThe question ID

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action ('Get answers') without detailing traits like whether it's read-only, requires authentication, has rate limits, returns paginated data, or what happens on errors. The mention of 'daily check-in question' hints at context but lacks operational specifics needed for safe invocation.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It's appropriately sized for a simple tool, but could be more informative by adding context or differentiation. There's no waste, but it risks under-specification due to brevity.

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

Completeness2/5

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

Given the tool's complexity (3 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain the return values, error handling, or behavioral traits, leaving gaps for an AI agent. With no output schema and minimal description, it inadequately supports correct tool selection and invocation.

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

Parameters3/5

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

The input schema has 100% description coverage, with clear parameter documentation (page, project_id, question_id). The description adds no additional meaning beyond the schema, as it doesn't explain parameter relationships, formats, or usage examples. With high schema coverage, the baseline is 3, but the description fails to compensate or enhance understanding.

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

Purpose3/5

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

The description states the tool's purpose ('Get answers on daily check-in question'), which is clear but vague. It specifies the resource ('answers') and context ('daily check-in question'), but doesn't distinguish it from sibling tools like 'get_daily_check_ins' or explain what 'answers' entail. The verb 'Get' is generic, lacking specificity about the operation type (e.g., list, retrieve, fetch).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context (e.g., after using 'get_daily_check_ins'), or exclusions. With sibling tools like 'get_daily_check_ins' and 'get_comments', there's no indication of how this tool differs or when it's appropriate, leaving usage unclear.

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

get_todolistsC

Get todo lists for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Get') but doesn't describe what 'Get' entails—e.g., whether it returns all todo lists, supports pagination, requires authentication, has rate limits, or includes metadata like creation dates. For a read operation with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste—'Get todo lists for a project' directly conveys the core functionality without extraneous details. It is appropriately sized for a simple tool and front-loaded with the essential action and resource.

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

Completeness2/5

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

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is minimal but incomplete. It lacks context on return values (e.g., format, fields), error conditions, or behavioral traits like pagination. While the schema covers the input, the absence of output schema and annotations means the description should provide more operational context to be fully helpful.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'project_id' parameter fully documented in the schema. The description adds no additional meaning beyond implying that todo lists are retrieved for a specific project, which is already clear from the schema. This meets the baseline score of 3, as the schema does the heavy lifting without requiring compensation from the description.

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

Purpose4/5

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

The description 'Get todo lists for a project' clearly states the verb ('Get') and resource ('todo lists'), with the context 'for a project' specifying scope. It distinguishes from siblings like 'get_todos' (which likely retrieves individual todo items) and 'get_cards' (which might be a different resource type), though it doesn't explicitly name these alternatives. The purpose is unambiguous but lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid project_id), exclusions (e.g., not for archived projects), or comparisons to similar tools like 'get_todos' or 'get_cards'. The agent must infer usage solely from the tool name and parameter schema, with no explicit context provided.

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

get_todosC

Get todos from a todo list

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID
todolist_idYesThe todo list ID

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states a read operation ('Get'), implying it's non-destructive, but doesn't cover critical aspects like authentication needs, rate limits, return format (e.g., list structure, pagination), or error handling. This leaves significant gaps in understanding how the tool behaves in practice.

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

Conciseness4/5

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

The description is a single, straightforward sentence with no wasted words, making it efficient and easy to parse. However, it's overly brief and could benefit from front-loading more critical details (e.g., scope or limitations) to enhance utility without sacrificing conciseness.

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

Completeness2/5

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

Given the tool's complexity (a read operation with 2 required parameters), lack of annotations, and no output schema, the description is incomplete. It fails to address key contextual elements like what data is returned, how errors are handled, or any constraints, leaving the agent under-informed for effective use.

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

Parameters3/5

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

The input schema has 100% description coverage, with clear parameter names and types, so the baseline is 3. The description adds no extra semantic context beyond implying that 'todos' are retrieved from a 'todo list', which is already inferred from the parameter names. It doesn't explain relationships between parameters or usage examples.

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

Purpose3/5

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

The description states the action ('Get') and resource ('todos from a todo list'), which clarifies the basic purpose. However, it doesn't specify whether this retrieves all todos, filtered todos, or paginated results, and it doesn't distinguish itself from sibling tools like 'get_cards' or 'get_todolists' beyond the resource type. This makes it vague about scope and differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a project and todolist ID), exclusions, or comparisons to siblings like 'get_cards' or 'global_search'. Without such context, an agent might misuse it or overlook better options.

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

get_uploadsC

List uploads in a project or vault

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID
vault_idNoOptional vault ID to limit to specific vault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states it's a list operation. It doesn't disclose behavioral traits like pagination, sorting, filtering beyond project/vault, rate limits, authentication needs, or what the return format looks like (e.g., list of upload objects). This is inadequate for a tool with potential complexity.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what an 'upload' entails in this context, how results are returned, or any limitations. For a list tool with potential data volume and format considerations, this leaves significant gaps for the agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (project_id as required, vault_id as optional). The description adds minimal value by implying the parameters define the scope ('in a project or vault'), but doesn't provide additional semantics like format examples or constraints beyond what's in the schema.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource 'uploads', specifying the scope as 'in a project or vault'. However, it doesn't differentiate from potential sibling list tools like 'get_documents' or 'get_cards', which might have similar listing patterns but for different resources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare it to other list tools in the sibling set, leaving the agent to infer usage based on the resource name alone.

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

get_webhooksC

List webhooks for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states it's a list operation, implying read-only behavior, but does not disclose any behavioral traits like pagination, rate limits, authentication needs, or what data is returned. This leaves significant gaps for a tool with no structured safety hints.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It does not explain return values, error conditions, or behavioral context, which is insufficient for a tool that interacts with webhooks and has no structured safety or output information.

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

Parameters3/5

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

The schema description coverage is 100%, with the parameter 'project_id' fully documented in the schema. The description adds no additional meaning beyond the schema, such as format examples or constraints, so it meets the baseline for high schema coverage without compensating value.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('webhooks for a project'), making the purpose unambiguous. However, it does not differentiate from sibling tools like 'get_webhook' (which doesn't exist in the list) or other 'get_' tools, so it lacks sibling distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, context, or exclusions, such as whether it's for active webhooks only or how it differs from other listing tools like 'get_cards' or 'get_documents'.

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

move_cardC

Move a card to a new column

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesThe card ID
column_idYesThe destination column ID
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Move') but doesn't clarify if this is a destructive mutation, what permissions are required, whether it's reversible, or what happens to card history. For a mutation tool with zero 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.

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like side effects, error conditions, or return values, leaving gaps that could hinder an AI agent's correct invocation.

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

Parameters3/5

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

The description implies parameters for card and column identification but doesn't add meaning beyond the input schema, which has 100% coverage with clear descriptions for 'card_id', 'column_id', and 'project_id'. No extra details on format, constraints, or relationships are provided, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Move') and resource ('a card'), specifying the destination ('to a new column'). It distinguishes from siblings like 'update_card' or 'move_column' by focusing on card relocation rather than modification or column movement. However, it doesn't explicitly differentiate from all siblings, such as 'complete_card', which might also change card status.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'update_card' for status changes or 'move_column' for column relocation. It lacks context on prerequisites, such as needing valid IDs from 'get_cards' or 'get_columns', or exclusions like not using it for archiving.

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

move_columnC

Move a column to a new position

ParametersJSON Schema
NameRequiredDescriptionDefault
card_table_idYesThe card table ID
column_idYesThe column ID
positionYesThe new 1-based position
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('move') but doesn't cover critical aspects like whether this is a destructive operation (likely yes, as it modifies column order), permission requirements, error conditions (e.g., invalid position), or what happens to other columns. This leaves significant gaps for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action ('move a column') and specifies the outcome ('to a new position'). There is no wasted verbiage or redundancy, making it easy to parse quickly.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavior (e.g., how positions shift, error handling), return values, or integration with sibling tools (e.g., 'get_columns' to check current order). The high schema coverage helps with parameters but doesn't compensate for missing operational context.

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

Parameters3/5

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

Schema description coverage is 100%, with all parameters clearly documented in the schema (e.g., 'card_table_id', 'position' as '1-based'). The description adds no additional parameter semantics beyond implying 'position' is the target location. This meets the baseline for high schema coverage but doesn't enhance understanding.

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

Purpose4/5

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

The description clearly states the action ('move') and resource ('column'), specifying the target ('to a new position'). It distinguishes from siblings like 'create_column' or 'update_column' by focusing on repositioning, though it doesn't explicitly contrast with 'move_card' which is a similar operation on a different resource.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a column to exist), exclusions, or comparisons to similar tools like 'update_column' or 'move_card', leaving the agent to infer usage context 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.

search_basecampC

Search across Basecamp projects, todos, and messages

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoOptional project ID to limit search scope
queryYesSearch query

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but only states the search scope without details on permissions, rate limits, pagination, or response format. It fails to address key operational aspects like result ordering or error handling.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly conveys the tool's purpose without unnecessary words. It is front-loaded and appropriately sized, earning full marks for conciseness.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is insufficient for a search tool with two parameters. It omits details on return values, error conditions, and behavioral traits, leaving gaps in understanding how the tool operates in practice.

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

Parameters3/5

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

The input schema has 100% description coverage, documenting both parameters clearly. The description adds no additional semantic context beyond what the schema provides, such as query syntax or project ID examples, meeting the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Search') and the resources ('Basecamp projects, todos, and messages'), making the purpose evident. However, it does not differentiate from the sibling tool 'global_search', which appears to serve a similar function, preventing a score of 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'global_search' or other search-related tools. It lacks context on prerequisites, exclusions, or specific scenarios for application, offering minimal usage direction.

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

trash_documentC

Move a document to trash

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesDocument ID
project_idYesProject ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Move a document to trash' implies a destructive mutation (trashing), but it doesn't specify whether this is reversible, what permissions are required, or what happens to related data (e.g., associated comments or files). For a mutation tool with zero 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.

Conciseness5/5

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

The description is a single, efficient sentence ('Move a document to trash') that front-loads the core action. It wastes no words and is appropriately sized for a simple tool, earning a perfect score for conciseness.

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

Completeness2/5

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

Given the tool's complexity (a destructive mutation), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like reversibility, error conditions, or return values. For a tool that modifies state, this leaves critical gaps for an agent to operate safely and effectively.

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

Parameters3/5

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

The description adds no parameter semantics beyond what the input schema provides. Schema description coverage is 100%, with both parameters ('document_id' and 'project_id') documented in the schema. The baseline is 3 when the schema does the heavy lifting, and the description doesn't compensate with additional context like format examples or interdependencies.

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

Purpose4/5

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

The description 'Move a document to trash' clearly states the verb ('move') and resource ('document'), with the destination ('to trash') specifying the action. It distinguishes from siblings like 'delete_webhook' or 'update_document' by focusing on trashing rather than permanent deletion or modification. However, it doesn't explicitly differentiate from all siblings (e.g., 'create_document' is clearly different), so it's not a perfect 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., document must exist), exclusions (e.g., cannot trash already-trashed documents), or alternatives (e.g., permanent deletion tools if available). This leaves the agent without context for decision-making.

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

update_cardC

Update a card

ParametersJSON Schema
NameRequiredDescriptionDefault
assignee_idsNoArray of person IDs to assign to the card
card_idYesThe card ID
contentNoThe new card content/description
due_onNoDue date (ISO 8601 format)
project_idYesThe project ID
titleNoThe new card title

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Update a card' implies a mutation operation but doesn't specify whether it requires specific permissions, if changes are reversible, what happens to unmentioned fields (partial vs. full updates), or error conditions. For a mutation tool with zero annotation coverage, this leaves critical behavioral traits unexplained.

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

Conciseness5/5

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

The description is extremely concise with just three words, front-loading the core action ('Update a card'). There is zero wasted language or redundancy, making it efficient for quick scanning, though this brevity contributes to gaps in other dimensions like purpose clarity and guidelines.

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

Completeness2/5

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

Given the tool's complexity (a mutation with 6 parameters, no annotations, and no output schema), the description is incomplete. It doesn't explain the update behavior (e.g., partial updates allowed?), return values, or error handling. For a tool that modifies data, more context is needed to ensure safe and correct usage by an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, with all 6 parameters well-documented in the input schema (e.g., assignee_ids as 'Array of person IDs to assign to the card'). The description adds no parameter information beyond what the schema provides, so it meets the baseline of 3 where the schema does the heavy lifting, but doesn't compensate with additional context like format examples or constraints.

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

Purpose2/5

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

The description 'Update a card' is a tautology that restates the tool name without adding specificity. It doesn't distinguish this tool from sibling tools like 'move_card' or 'complete_card' that also modify cards, nor does it specify what aspects of a card can be updated (title, content, assignees, etc.). While the verb 'update' is clear, the description lacks the resource details that would make it fully informative.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a project_id and card_id), contrast with siblings like 'move_card' (for changing location) or 'complete_card' (for marking as done), or specify use cases (e.g., editing card details versus other operations). The description assumes context without providing it.

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

update_columnC

Update a column title

ParametersJSON Schema
NameRequiredDescriptionDefault
column_idYesThe column ID
project_idYesThe project ID
titleYesThe new column title

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Update' implies a mutation, but the description doesn't state whether this requires specific permissions, what happens on success/failure, or if changes are reversible. For a mutation tool with zero 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.

Conciseness5/5

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

The description is extremely concise at just three words, with zero wasted language. It's front-loaded with the core action and resource, making it easy to parse quickly. This is an example of efficient communication.

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

Completeness2/5

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

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, error conditions, or behavioral aspects like side effects. For a tool that modifies data, more context is needed to use it effectively.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters (column_id, project_id, title) documented in the schema. The description adds no additional parameter semantics beyond implying that 'title' is the attribute being updated. This meets the baseline of 3 when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Update') and resource ('a column title'), making the tool's purpose understandable. It distinguishes from sibling tools like 'update_column_color' by focusing on title changes rather than color. However, it doesn't specify the scope (e.g., within a project) which could make it slightly less specific than a perfect 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when not to use it, or differentiate from similar tools like 'update_column_color' or 'move_column'. This lack of context leaves the agent to infer usage based on the name alone.

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

update_column_colorC

Update a column color

ParametersJSON Schema
NameRequiredDescriptionDefault
colorYesThe hex color code (e.g., #FF0000)
column_idYesThe column ID
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Update' implies a mutation, but the description doesn't state whether this requires specific permissions, if changes are reversible, what happens to existing column settings, or what the response looks like. For a mutation tool with zero 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero waste: 'Update a column color'. It's front-loaded and appropriately sized for the tool's scope, though it could benefit from more detail given the lack of annotations and output schema.

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

Completeness2/5

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

Given the complexity of a mutation tool with no annotations, no output schema, and 3 parameters, the description is incomplete. It doesn't explain return values, error conditions, or behavioral traits like side effects. The schema covers parameters well, but overall context is inadequate for safe and effective use by an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for 'color' (hex code), 'column_id', and 'project_id'. The description adds no additional meaning beyond the schema, such as format examples for IDs or color constraints. Baseline 3 is appropriate since the schema does the heavy lifting, but the description doesn't compensate with extra context.

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

Purpose4/5

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

The description 'Update a column color' clearly states the action (update) and the target resource (column color). It distinguishes from siblings like 'update_column' (general column updates) and 'update_card' (card updates), though it doesn't explicitly mention these distinctions. The purpose is specific but could be more precise about what 'color' refers to.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'update_column' or 'create_column'. The description doesn't mention prerequisites, such as needing an existing column, or exclusions, like whether color changes affect other column properties. 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.

update_documentC

Update a document

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoNew HTML content
document_idYesDocument ID
project_idYesProject ID
titleNoNew title

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states 'Update a document' without disclosing behavioral traits like required permissions, whether changes are reversible, rate limits, or what happens to unspecified fields. It lacks critical context for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste—'Update a document' is front-loaded and appropriately sized for the tool's purpose, though it could benefit from more detail given the lack of annotations.

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

Completeness2/5

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

For a mutation tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral nuances, leaving significant gaps for an AI agent to operate effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are documented in the schema. The description adds no meaning beyond what the schema provides (e.g., doesn't explain parameter interactions or defaults), meeting the baseline for high coverage without extra value.

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

Purpose3/5

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

The description 'Update a document' states the verb and resource but is vague about what aspects can be updated. It distinguishes from siblings like 'create_document' and 'trash_document' by specifying update rather than create or delete, but doesn't clarify scope beyond the basic action.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'update_card' or 'update_column', nor prerequisites such as needing existing document/project IDs. The description implies usage for document updates but offers no context on exclusions or specific scenarios.

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. Dates show when Glama detected each change.

  1. 33 tool updatesv1.0.0
    • Removedcomplete_card
    • Removedcomplete_card_step
    • Removedcreate_card
    • Removedcreate_card_step
    • Removedcreate_column
    • Removedcreate_document
    • Removedcreate_webhook
    • Removeddelete_webhook
    • Removedget_campfire_lines
    • Removedget_card
    • Removedget_card_steps
    • Removedget_card_table
    • Removedget_cards
    • Removedget_columns
    • Removedget_comments
    • Removedget_daily_check_ins
    • Removedget_documents
    • Removedget_project
    • Removedget_projects
    • Removedget_question_answers
    • Removedget_todolists
    • Removedget_todos
    • Removedget_uploads
    • Removedget_webhooks
    • Removedglobal_search
    • Removedmove_card
    • Removedmove_column
    • Removedsearch_basecamp
    • Removedtrash_document
    • Removedupdate_card
    • Removedupdate_column
    • Removedupdate_column_color
    • Removedupdate_document
  2. 33 tool updates
    • First observedcomplete_card
    • First observedcomplete_card_step
    • First observedcreate_card
    • First observedcreate_card_step
    • First observedcreate_column
    • First observedcreate_document
    • First observedcreate_webhook
    • First observeddelete_webhook
    • First observedget_campfire_lines
    • First observedget_card
    • First observedget_card_steps
    • First observedget_card_table
    • First observedget_cards
    • First observedget_columns
    • First observedget_comments
    • First observedget_daily_check_ins
    • First observedget_documents
    • First observedget_project
    • First observedget_projects
    • First observedget_question_answers
    • First observedget_todolists
    • First observedget_todos
    • First observedget_uploads
    • First observedget_webhooks
    • First observedglobal_search
    • First observedmove_card
    • First observedmove_column
    • First observedsearch_basecamp
    • First observedtrash_document
    • First observedupdate_card
    • First observedupdate_column
    • First observedupdate_column_color
    • First observedupdate_document

TDQS

B3/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific Basecamp resources (e.g., cards, columns, documents, webhooks), but there is some overlap between 'global_search' and 'search_basecamp' which could cause confusion as both appear to handle search functionality across projects. Otherwise, the tool set is well-differentiated.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout (e.g., create_card, get_cards, update_column). All tools use snake_case with clear, descriptive verbs, making the naming predictable and easy to understand.

Tool Count3/5

With 33 tools, the count is borderline high for a project management server, potentially overwhelming for agents. While Basecamp has many features, this many tools might indicate over-fragmentation (e.g., separate tools for similar operations like get_card and get_cards).

Completeness5/5

The tool set provides comprehensive coverage for Basecamp's domain, including CRUD operations for cards, columns, documents, webhooks, and search, along with specific features like campfire messages and daily check-ins. No obvious gaps are present; agents can perform full lifecycle management.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jhliberty/basecamp-mcp-server'

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