Basecamp MCP Server
Provides comprehensive integration with Basecamp 3, offering 46 tools for managing projects, todo lists, campfire messages, card tables, documents, webhooks, and daily check-ins. Supports full CRUD operations for cards, columns, and card steps, along with search functionality across projects and messages.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Basecamp MCP Servershow me my active todos in the Marketing project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
NPX Installation (Recommended)
# 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 IDEPrerequisites
Node.js 18+ (required for ES modules)
A Basecamp 3 account
A Basecamp OAuth application (create one at https://launchpad.37signals.com/integrations)
Related MCP server: Basecamp MCP Server
Local Development Setup
For Development
Clone and build the project:
git clone <repository-url> cd basecamp-mcp-server npm install npm run buildRun setup script:
npm run setupThe setup script automatically:
ā Installs all TypeScript dependencies
ā Builds the project to
dist/ā Creates
.envtemplate fileā Tests MCP server functionality
Configure OAuth credentials: Edit the generated
.envfile: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)"Authenticate with Basecamp:
npm run authVisit http://localhost:8000 and complete the OAuth flow.
Generate configurations:
npm run config:cursor # For Cursor IDE npm run config:claude # For Claude DesktopRestart your AI assistant completely (quit and reopen)
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:uiFor Claude Desktop Users
Based on the official MCP quickstart guide, Claude Desktop integration follows these steps:
Setup Steps
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 authGenerate Claude Desktop configuration:
npm run config:claudeRestart Claude Desktop completely (quit and reopen the application)
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.jsonWindows:
~/AppData/Roaming/Claude/claude_desktop_config.jsonLinux:
~/.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.logCommon 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.jsonexists)
Available MCP Tools
Once configured, you can use these tools in Cursor:
get_projects- Get all Basecamp projectsget_project- Get details for a specific projectget_todolists- Get todo lists for a projectget_todos- Get todos from a todo listsearch_basecamp- Search across projects, todos, and messagesget_comments- Get comments for a Basecamp itemget_campfire_lines- Get recent messages from a Basecamp campfireget_daily_check_ins- Get project's daily check-in questionsget_question_answers- Get answers to daily check-in questionscreate_attachment- Upload a file as an attachmentget_events- Get events for a recordingget_webhooks- List webhooks for a projectcreate_webhook- Create a webhookdelete_webhook- Delete a webhookget_documents- List documents in a vaultget_document- Get a single documentcreate_document- Create a documentupdate_document- Update a documenttrash_document- Move a document to trash
Card Table Tools
get_card_table- Get the card table details for a projectget_columns- Get all columns in a card tableget_column- Get details for a specific columncreate_column- Create a new column in a card tableupdate_column- Update a column titlemove_column- Move a column to a new positionupdate_column_color- Update a column colorput_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 columnunwatch_column- Unsubscribe from notifications for a columnget_cards- Get all cards in a columnget_card- Get details for a specific cardcreate_card- Create a new card in a columnupdate_card- Update a cardmove_card- Move a card to a new columncomplete_card- Mark a card as completeuncomplete_card- Mark a card as incompleteget_card_steps- Get all steps (sub-tasks) for a cardcreate_card_step- Create a new step (sub-task) for a cardget_card_step- Get details for a specific card stepupdate_card_step- Update a card stepdelete_card_step- Delete a card stepcomplete_card_step- Mark a card step as completeuncomplete_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:
MCP Server (
src/index.ts) - Official MCP SDK with 46 tools, compatible with both Cursor and Claude DesktopOAuth App (
src/lib/oauth-app.ts) - Handles OAuth 2.0 flow with BasecampToken Storage (
src/lib/token-storage.ts) - Securely stores OAuth tokensBasecamp Client (
src/lib/basecamp-client.ts) - Basecamp API client libraryType Definitions (
src/types/basecamp.ts) - Complete TypeScript interfacesConfiguration 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 setupto 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
.envfile, 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 buildProblem: Wrong Node.js version
node --version # Must be 18+
# If too old, install newer Node.js and re-run setupProblem: Authentication fails
# Check OAuth flow:
npm run auth
# Visit http://localhost:8000 and complete loginManual 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:
Log into Basecamp in your browser
Look at the URL - it will be like
https://3.basecamp.com/4389629/projectsThe number (4389629 in this example) is your account ID
Security Notes
Keep your
.envfile secure and never commit it to version controlThe OAuth tokens are stored locally in
oauth_tokens.jsonThis 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 toolscomplete_cardC
Mark a card as complete
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes | The card ID | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID | |
| step_id | Yes | The step ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| column_id | Yes | The column ID | |
| content | No | Optional card content/description | |
| due_on | No | Optional due date (ISO 8601 format) | |
| notify | No | Whether to notify assignees (default: false) | |
| project_id | Yes | The project ID | |
| title | Yes | The card title |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| assignee_ids | No | Array of person IDs to assign to the step | |
| card_id | Yes | The card ID | |
| due_on | No | Optional due date (ISO 8601 format) | |
| project_id | Yes | The project ID | |
| title | Yes | The step title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| card_table_id | Yes | The card table ID | |
| project_id | Yes | The project ID | |
| title | Yes | The column title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Document HTML content | |
| project_id | Yes | Project ID | |
| title | Yes | Document title | |
| vault_id | Yes | Vault ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| payload_url | Yes | Payload URL | |
| project_id | Yes | Project ID | |
| types | No | Event types |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID | |
| webhook_id | Yes | Webhook ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| campfire_id | Yes | The campfire/chat room ID | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes | The card ID | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| column_id | Yes | The column ID | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes | The card ID | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a 'Get' operation, implying 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| card_table_id | Yes | The card table ID | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID | |
| recording_id | Yes | The item ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for paginated response | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID | |
| vault_id | Yes | Vault ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for paginated response | |
| project_id | Yes | The project ID | |
| question_id | Yes | The question ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID | |
| todolist_id | Yes | The todo list ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID | |
| vault_id | No | Optional vault ID to limit to specific vault |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 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.
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.
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.
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.
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.
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.
global_searchC
Search projects, todos and campfire messages across all projects
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool searches but doesn't describe how results are returned (format, pagination, sorting), what happens with no matches, or any limitations (rate limits, permissions needed). This leaves significant gaps for a search operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with no wasted words. It's appropriately sized for a simple search 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the return format looks like (e.g., structured results vs raw text), how to interpret results, or any behavioral nuances. Given the complexity of searching across multiple resource types, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents the single 'query' parameter adequately. The description doesn't add any meaningful semantic context beyond what's in the schema (e.g., search syntax, examples, or special operators), so it meets the baseline but doesn't enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search') and resources ('projects, todos and campfire messages'), making the purpose immediately understandable. However, it doesn't distinguish this from the sibling 'search_basecamp' tool, which appears to serve a similar function, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'search_basecamp' or other get_* tools. It mentions 'across all projects' which hints at scope but doesn't explicitly state when this is preferred over more specific search or retrieval tools.
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
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes | The card ID | |
| column_id | Yes | The destination column ID | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| card_table_id | Yes | The card table ID | |
| column_id | Yes | The column ID | |
| position | Yes | The new 1-based position | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Optional project ID to limit search scope | |
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | Document ID | |
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| assignee_ids | No | Array of person IDs to assign to the card | |
| card_id | Yes | The card ID | |
| content | No | The new card content/description | |
| due_on | No | Due date (ISO 8601 format) | |
| project_id | Yes | The project ID | |
| title | No | The new card title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| column_id | Yes | The column ID | |
| project_id | Yes | The project ID | |
| title | Yes | The new column title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | The hex color code (e.g., #FF0000) | |
| column_id | Yes | The column ID | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | New HTML content | |
| document_id | Yes | Document ID | |
| project_id | Yes | Project ID | |
| title | No | New title |
TDQS
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.
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.
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.
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.
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.
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.
33 tool updates
v1.0.0- Removed
complete_card - Removed
complete_card_step - Removed
create_card - Removed
create_card_step - Removed
create_column - Removed
create_document - Removed
create_webhook - Removed
delete_webhook - Removed
get_campfire_lines - Removed
get_card - Removed
get_card_steps - Removed
get_card_table - Removed
get_cards - Removed
get_columns - Removed
get_comments - Removed
get_daily_check_ins - Removed
get_documents - Removed
get_project - Removed
get_projects - Removed
get_question_answers - Removed
get_todolists - Removed
get_todos - Removed
get_uploads - Removed
get_webhooks - Removed
global_search - Removed
move_card - Removed
move_column - Removed
search_basecamp - Removed
trash_document - Removed
update_card - Removed
update_column - Removed
update_column_color - Removed
update_document
33 tool updates
- First observed
complete_card - First observed
complete_card_step - First observed
create_card - First observed
create_card_step - First observed
create_column - First observed
create_document - First observed
create_webhook - First observed
delete_webhook - First observed
get_campfire_lines - First observed
get_card - First observed
get_card_steps - First observed
get_card_table - First observed
get_cards - First observed
get_columns - First observed
get_comments - First observed
get_daily_check_ins - First observed
get_documents - First observed
get_project - First observed
get_projects - First observed
get_question_answers - First observed
get_todolists - First observed
get_todos - First observed
get_uploads - First observed
get_webhooks - First observed
global_search - First observed
move_card - First observed
move_column - First observed
search_basecamp - First observed
trash_document - First observed
update_card - First observed
update_column - First observed
update_column_color - First observed
update_document
TDQS
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.
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.
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).
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
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
Carbon Voice MCP serves as a bridge that connects AI assistants like ChatGPT, Claude, and Cursor to a user's Carbon Voice account, turning voice messages and conversations into a private, on-demand knowledge base. It provides 28 specialized tools for comprehensive voice messaging management, including creating and sending messages, accessing conversation history with instant transcription, running AI actions (summarization, TLDR generation, meeting notes), and managing workspace collaboration through folders, contacts, and team communications.
- AurentiaOAuthfr.aurentia
Your Aurentia workspace ā projects, CRM, tasks, deliverables ā in Claude, Cursor or any MCP client.
One workspace of tools for Claude and ChatGPT: connect 600+ apps, generate media, build tools.
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to iā¦
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Basecamp projects through natural language commands. Supports managing projects, to-do lists, messages, and creating tasks with full content rendering capabilities.660ISC
- AlicenseBqualityDmaintenanceConnects Basecamp workspaces to AI tools, enabling management of projects, messages, todos, and schedules through natural language interactions. Features persistent caching and supports both reading workspace data and performing actions like creating messages and updating todos.10MIT
- AlicenseAqualityBmaintenanceEnables LLMs to interact with Basecamp projects, managing messages, todos, comments, people, and kanban boards through natural language. Supports comprehensive Basecamp operations including creating, reading, updating content with flexible output formats and URL parsing capabilities.47603MIT
- AlicenseNot gradedqualityAmaintenanceEnables interaction with Basecamp 3 projects through 46 tools for managing todos, card tables, campfire messages, documents, comments, and webhooks through natural language.99MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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