Carbon Voice
The Carbon Voice MCP server enables AI assistants to interact with the Carbon Voice platform for voice messaging, conversations, folder management, user operations, and AI-powered actions.
Message Management
List messages with flexible filtering by date range, user, conversation, folder, workspace, or language
Get a specific message by ID, with optional enrichment (conversation, creator, labels)
Send a message to a conversation (with transcript or link attachments, supports threaded replies)
Send a Direct Message (DM) to one or more users by email or user ID
Create a VoiceMemo message with a transcript or link attachments
Add link attachments to existing messages
User Operations
Get detailed user profile by ID (name, languages, voice settings, workspace roles, notification preferences)
Search for users by phone number, email, ID, or name (single or multiple)
Get the current authenticated user's information
Conversation Management
List all conversations, retrieve specific conversation details, and get participants within a conversation
Summarize a conversation using an AI prompt, with optional date range and message filters
Folder Operations
List, create, retrieve, rename, delete, and move folders
Move messages into folders or workspaces
⚠️ Deleting a folder also deletes nested folders and all messages
Workspace Administration
Retrieve basic workspace information
AI Actions
List available AI prompts (filterable by owner type: user, workspace, or system)
Run AI actions on one or more messages or shared links
Retrieve previously generated AI action responses filtered by prompt, message, or conversation
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., "@Carbon Voiceshow my recent voice memos"
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.
Carbon Voice MCP Server
A Model Context Protocol (MCP) server implementation for integrating with Carbon Voice's API, providing AI assistants with comprehensive tools for voice messaging, conversations, and workspace management.
Carbon Voice: https://getcarbon.app
API: https://api.carbonvoice.app/docs
Features
Message Management: Create, list, and retrieve voice messages, conversation messages, and direct messages
User Operations: Search and retrieve user information
Conversation Management: Access and manage conversations and their participants
Folder Operations: Create, organize, move, and manage folders and their contents
Workspace Administration: Get workspace information
AI Actions: Run AI prompts and retrieve AI-generated responses
Attachment Support: Add link attachments to messages
Related MCP server: iMessage Max
Security & Compliance
This server fully complies with MCP Security Best Practices:
OAuth 2.1 Authentication: Secure authorization flow with proper token handling
HTTPS Enforcement: All remote endpoints served over HTTPS
Session Security: Cryptographically secure session management
Input Validation: Comprehensive validation of all user inputs
Rate Limiting: Built-in protection against abuse
For security concerns, please contact: devsupport@phononx.com
Prerequisites
For Stdio Transport (Local Installation)
Required:
Carbon Voice API Key - Contact the Carbon Voice development team to request your API key:
📧 Contact: devsupport@phononx.com
📧 Subject: "Request API key for MCP Server"
npx Installation - You must have
npxinstalled on your system. npx comes bundled with Node.js (version 14.8.0 or later). If you don't have Node.js installed, you can download it from nodejs.org.To verify your installation, run:
npx --version
For HTTP Transport (Remote)
Required:
Nothing! - No additional prerequisites are required. The HTTP transport version runs entirely in the cloud and uses OAuth2 authentication, so you don't need an API key or npx installed.
Configuration
Quick Overview
Client | HTTP Transport (Remote) | Stdio Transport (Local) |
Cursor | ✅ Recommended | ✅ Available |
Claude Desktop | ✅ Recommended | ✅ Available |
HTTP Transport is recommended for easier setup and enhanced security.
For Cursor
HTTP Transport (Remote)
Open Cursor
Go to Cursor Settings > Features > Model Context Protocol
Add a new MCP server configuration:
{
"mcpServers": {
"Carbon Voice": {
"url": "https://mcp.carbonvoice.app"
}
}
}Save and restart Cursor
The first time you use it, Cursor will guide you through the OAuth2 authentication process.
Stdio Transport (Local Installation)
If you prefer to run the MCP server locally with API key authentication:
Open Cursor
Go to Cursor Settings > Features > Model Context Protocol
Add a new MCP server configuration:
{
"mcpServers": {
"Carbon Voice": {
"command": "npx",
"env": {
"CARBON_VOICE_API_KEY": "your_api_key_here"
},
"args": ["-y", "@carbonvoice/cv-mcp-server"]
}
}
}Replace
"your_api_key_here"with your actual Carbon Voice API keySave and restart Cursor
For Claude Desktop
HTTP Transport (Remote)
Setting up Carbon Voice in Claude Desktop is straightforward! Here's how to do it:
Open Claude Desktop and navigate to Search and Tools
Go to Manage Connectors and click "Add custom connector"
Fill in the connector details:
Name: Give it a friendly name like "Carbon Voice"
Remote MCP Server URL: Enter
https://mcp.carbonvoice.app
Save your connector
Click Connect:
The first time you use it, Claude will guide you through the OAuth2 authentication process. You'll just need to sign in with your Carbon Voice account and grant permissions. After that, you're all set!
Stdio Transport (Local Installation)
If you prefer to run the MCP server locally with API key authentication:
Open your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add the Carbon Voice MCP server configuration:
{
"mcpServers": {
"Carbon-Voice": {
"command": "npx",
"env": {
"CARBON_VOICE_API_KEY": "your_api_key_here"
},
"args": ["-y", "@carbonvoice/cv-mcp-server"]
}
}
}Replace
"your_api_key_here"with your actual Carbon Voice API keySave the file and restart Claude Desktop
Environment Variables (Only available for Stdio Version)
When using the stdio version of the MCP server, you can configure additional environment variables:
LOG_LEVEL
Controls the verbosity of logging output. Available options:
info(default) - Standard logging informationdebug- Most verbose logging, shows detailed request/response datawarn- Only warning and error messageserror- Only error messages
Example:
{
"mcpServers": {
"Carbon-Voice": {
"command": "npx",
"env": {
"CARBON_VOICE_API_KEY": "your_api_key_here",
"LOG_LEVEL": "debug"
},
"args": ["-y", "@carbonvoice/cv-mcp-server"]
}
}
}LOG_DIR
Specifies the directory where log files will be stored. Defaults to: /tmp/cv-mcp-server/logs
The server will create two log files in this directory:
combined.log- Contains all log messageserror.log- Contains only error messages
Example:
{
"mcpServers": {
"Carbon-Voice": {
"command": "npx",
"env": {
"CARBON_VOICE_API_KEY": "your_api_key_here",
"LOG_DIR": "/Users/USER_NAME/Documents/cv-mcp-server/logs"
},
"args": ["-y", "@carbonvoice/cv-mcp-server"]
}
}
}Complete Example with Both Variables:
{
"mcpServers": {
"Carbon-Voice": {
"command": "npx",
"env": {
"CARBON_VOICE_API_KEY": "your_api_key_here",
"LOG_LEVEL": "debug",
"LOG_DIR": "/Users/USER_NAME/Documents/cv-mcp-server/logs"
},
"args": ["-y", "@carbonvoice/cv-mcp-server"]
}
}
}Available Tools
Messages
list_messages- List messages with date filtering (max 31-day range)get_message- Retrieve a specific message by IDget_recent_messages- Get the 10 most recent messages with full contextcreate_conversation_message- Send a message to a conversationcreate_direct_message- Send direct messages to users or groupscreate_voicememo_message- Create voice memo messagesadd_attachments_to_message- Add link attachments to existing messages
Users
get_user- Retrieve user information by IDsearch_user- Find a user by phone number or emailsearch_users- Search multiple users by various identifiers
Conversations
list_conversations- Get all conversations from the last 6 months, with optional filtering by user IDsget_conversation- Retrieve conversation details by IDget_conversation_users- Get all users in a conversation
Folders
get_workspace_folders_and_message_counts- Get folder and message statisticsget_root_folders- List root folders for a workspacecreate_folder- Create new foldersget_folder- Retrieve folder informationget_folder_with_messages- Get folder with its messagesupdate_folder_name- Rename foldersdelete_folder- Delete folders (⚠️ destructive operation)move_folder- Move folders between locationsmove_message_to_folder- Organize messages into folders
Workspace
get_workspaces_basic_info- Get basic workspace information
AI Actions
list_ai_actions- List available AI prompts/actionsrun_ai_action- Execute AI actions on messagesrun_ai_action_for_shared_link- Run AI actions on shared contentget_ai_action_responses- Retrieve AI-generated responses
Usage Examples
Getting Started
After configuration, you can interact with Carbon Voice through your AI assistant. Here are some example requests:
"Show me my recent messages"
"Create a voice memo about today's meeting"
"Search for user john@example.com"
"Show me my workspace information"
"List my conversations from this week"Working with Folders
"Create a folder called 'Project Updates'"
"Move message ID 12345 to the Project Updates folder"
"Show me all messages in the Marketing folder"AI Actions
"Run a summary AI action on message ID 67890"
"List all available AI prompts"
"Get AI responses for conversation ID 123"Error Handling
The server includes comprehensive error handling and logging. Errors are returned in a structured format that includes:
Error messages
HTTP status codes
Request context
Debugging information
Development
This section is for developers who want to contribute, implement new features, or fix issues.
Development Commands
Building and Development
npm run build # Build the project
npm run auto:build # Watch mode with auto-rebuild (recommended for development)
npm run lint:fix # Fix linting issuesAPI Generation
npm run generate:api # Generate TypeScript types from Carbon Voice APIRunning the Server
npm run dev:http # Start HTTP server in development mode with hot reload
npm run start:http # Start HTTP server in production modeTesting with MCP Inspector
Setup: Copy .env.sample to .env and configure your development environment variables.
npm run mcp:inspector:stdio # Test stdio transport with MCP Inspector
npm run mcp:inspector:http # Test HTTP transport with MCP InspectorFor stdio transport testing:
Open the generated URL with token (e.g.,
http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=46bfbd8938955be26da7f2089a8cccb7be57ed570e65d8d2d68e95561ed9b79e)Set Transport Type:
STDIOSet Command:
nodeClick Connect
Should see Connected info.
For HTTP transport testing:
Open the generated URL with token
Set Transport Type:
Streamable HTTPSet URL:
http://localhost:3005Click Auth, then Quick Oauth Flow.
Will be redirected to Carbon Voice Auth Page. After Login, Bearer token should be auto added to Authorization Request headers.
Click Connect
Should see Connected info.
Version Management
Note: Only code merged to main branch with a different version from the current one will create a new Git tag and trigger a new npm package release. The CI/CD pipeline automatically checks if the version in package.json has changed before deploying and publishing.
Version Commands
npm run version:patch # Bump patch version (1.0.0 → 1.0.1)
npm run version:minor # Bump minor version (1.0.0 → 1.1.0)
npm run version:major # Bump major version (1.0.0 → 2.0.0)Release Commands
npm run release:patch # Build, test, version patch, and merge to main
npm run release:minor # Build, test, version minor, and merge to main
npm run release:major # Build, test, version major, and merge to main
npm run deploy:release # Build, test, and merge to main (no version bump)Development Workflow Examples
Commit to Develop
# 1. Make your changes and test locally
npm run build
npm run lint:fix
# 2. Commit and push to develop
git add .
git commit -m "feat: add new message filtering feature"
git push origin developRelease Bug Fix
# 1. Test your changes
npm run build
npm run mcp:inspector:http
# 2. Release patch version
npm run release:patchRelease New Feature
# 1. Test your changes
npm run build
npm run mcp:inspector:stdio
npm run mcp:inspector:http
# 2. Release minor version
npm run release:minorDevelopment Tips
Use
auto:buildduring development for automatic rebuilding when files changeTest both transports with MCP Inspector before releasing
Run
generate:apiwhen Carbon Voice API changesUse semantic versioning: patch for fixes, minor for features, major for breaking changes
Always test with both stdio and HTTP transports before releasing
MCP Compliance
This server is fully compliant with the Model Context Protocol specification and follows all security best practices outlined in the official documentation. The implementation supports both stdio and HTTP transports as defined in the MCP specification.
Support
Issues: GitHub Issues
API Key Requests: devsupport@phononx.com
Carbon Voice Platform: https://getcarbon.app
API Documentation: https://api.carbonvoice.app/docs
License
ISC License - See LICENSE file for details.
Note: This MCP server requires a valid Carbon Voice API key to function with stdio transport. For HTTP transport, OAuth2 authentication is handled automatically through the web interface. Please ensure you have the appropriate credentials before attempting to use the server.
Available Tools
28 toolsadd_attachments_to_messageB
Add attachments to a message. In order to add attachments to a message, you must provide a message id and the attachments.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| links | Yes | Array of links to be attached to the message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-destructive operation, which the description aligns with by implying a mutation ('add attachments'). The description adds minimal behavioral context beyond annotations, specifying required inputs but not detailing effects like whether attachments are appended or replaced, or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core purpose, using two sentences efficiently. However, the second sentence is somewhat redundant, restating prerequisites already implied, which slightly reduces 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?
For a mutation tool with no output schema and 50% schema coverage, the description is incomplete. It lacks details on return values, error conditions, or how attachments are handled (e.g., file types, size limits). Given the complexity and sibling tools, more context is needed 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?
Schema description coverage is 50%, with only the 'links' parameter described. The description mentions 'message id' and 'attachments', which map to 'id' and 'links' parameters, adding some meaning but not compensating fully for the coverage gap. It doesn't explain parameter formats or constraints beyond 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 action ('add attachments') and target resource ('to a message'), which is specific and unambiguous. However, it doesn't distinguish this tool from sibling tools like 'create_conversation_message' or 'create_direct_message' that might also handle attachments, missing explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions prerequisites (message id and attachments) but doesn't clarify scenarios like adding attachments to existing messages versus creating new ones with attachments, nor does it reference sibling tools for context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_conversation_messageC
Sends a message to an existing conversation or any type with a conversation_id. To reply as a thread, included a message_id for "parent_id". You must provide a transcript or attachment.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| links | No | Array of links to be attached to the message | |
| transcript | No | The Message transcript will be used to generate audio using text-to-speech | |
| from_message_id | No | Message ID to be used as a base for the new message. (Optional only when from_message_type is NewMessage) | |
| from_message_type | No | From Message type | NewMessage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-destructive write operation. The description adds the requirement of a transcript or attachment, but does not disclose additional side effects, permissions, or error handling. With annotations present, the description's transparency is adequate but not enhanced.
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 concise with three sentences, but the structure is somewhat jumbled. The threading tip could be integrated better, and the requirement statement feels abrupt. It is not verbose but could be clearer.
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 5 parameters, no output schema, and the need to explain required fields, the description is incomplete. It does not explain the 'id' field, the 'links' array, or the 'from_message_type' enum. The high schema coverage partially compensates, but overall context is lacking.
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 coverage is 80%, baseline 3, but the description fails to add meaning for the required 'id' parameter (likely the conversation_id) and misaligns by referring to 'parent_id' while the actual parameter is 'from_message_id'. This confusion reduces semantic 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 it sends a message to an existing conversation, differentiating from siblings like create_direct_message. However, the phrase 'or any type with a conversation_id' is somewhat vague and could be clarified.
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 includes a threading tip (using a parent_id) but does not provide explicit guidance on when to use this tool versus alternatives (e.g., create_direct_message). No when-not-to-use or prerequisites beyond 'must provide transcript or attachment'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_direct_messageB
Send a Direct Message (DM) to a User or a Group of Users. In order to create a Direct Message, you must provide transcript or link attachments.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| links | No | Array of links to be attached to the message | |
| transcript | No | The Message transcript will be used to generate audio using text-to-speech | |
| workspace_id | No | The workspace ID to send the message to | personal |
| from_message_id | No | Message ID to be used as a base for the new message. (Optional only when from_message_type is NewMessage) | |
| from_message_type | No | From Message type | NewMessage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-destructive. The description adds that it sends a DM and requires attachments, which is useful beyond annotations. However, it omits side effects, permissions, or response 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 brief with two sentences, front-loading the main action. It is efficient but could benefit from structuring key points (e.g., requirements, optional fields).
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 6 parameters (including nested objects and complex features like from_message_type) and no output schema, the description is insufficient. It does not explain how recipients are resolved, return values, or behavior for different from_message_type values.
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 coverage is high (83%), so the schema provides clear descriptions for most parameters. The description reiterates the need for transcript or links but does not clarify complex parameters like 'from_message_id' or nested 'to' object beyond schema info.
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 it sends a Direct Message to a user or group, specifying the verb 'Send' and resource 'Direct Message'. It distinguishes from sibling tools like create_conversation_message by focusing on DM specifically.
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 mentions a requirement (must provide transcript or link attachments) but provides no guidance on when to use this tool versus alternatives like create_conversation_message or add_attachments_to_message. No contextual examples or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderB
Create a new folder.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the Folder | |
| type | Yes | Folder type | |
| workspace_id | Yes | Workspace ID | |
| parent_folder_id | No | Parent Folder ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-destructive write operation (readOnlyHint=false, destructiveHint=false), which the description doesn't contradict. However, the description adds minimal behavioral context beyond what annotations provide—it doesn't mention permissions needed, rate limits, or what happens when creating duplicate folders, leaving room for improvement.
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 action and resource, making it easy to parse quickly, which is ideal 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 moderate complexity (4 parameters, no output schema) and rich annotations, the description is minimally adequate. It covers the basic purpose but lacks details on usage context, parameter nuances, or behavioral traits that would make it more complete 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 parameters are well-documented in the schema itself. The description adds no additional meaning about parameters, such as explaining the 'type' enum options ('voicememo' vs 'prerecorded') or how 'parent_folder_id' affects folder hierarchy. This 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 ('create') and resource ('folder'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'update_folder_name' or explain how it relates to other folder operations like 'move_folder' or 'delete_folder', 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 (like needing a workspace_id), when not to use it, or how it compares to sibling tools like 'update_folder_name' for modifying existing folders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_voicememo_messageB
Create a VoiceMemo Message. In order to create a VoiceMemo Message, you must provide a transcript or link attachments.
| Name | Required | Description | Default |
|---|---|---|---|
| links | No | Array of links to be attached to the message | |
| folder_id | No | Folder ID (not allowed when workspace_id specified is different from the folder_id) | |
| audio_file | No | Audio file upload on multipart requests. Supported Formats: .mp3, .m4a, .wav, .aac, .ogg, .flac, .wma, .opus, .webm. (Overwrites transcript) | |
| transcript | No | The Message transcript will be used to generate audio using text-to-speech | |
| workspace_id | No | Workspace ID (not allowed when folder_id specified is different from the folder_id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, signaling a non-destructive write operation. The description merely restates the creation action without additional behavioral details like permissions, side effects, or response behavior, adding minimal value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences: the first states the purpose, and the second adds a key requirement. It is front-loaded and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks explanation for the audio_file, folder_id, and workspace_id parameters, and does not clarify what a VoiceMemo message is or how it differs from other message types. Given 5 parameters and no output schema, the description fails to provide sufficient context for correct tool usage.
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 coverage is 100%, so parameters are individually documented. The description adds an important constraint not present in the schema: that at least one of 'transcript' or 'links' must be provided. This clarifies a conditional requirement, enhancing parameter semantics despite omitting audio_file and folder/workspace 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 clearly states the action 'Create a VoiceMemo Message' with a specific resource type. However, it does not distinguish this tool from siblings like create_conversation_message or create_direct_message beyond the name, leaving ambiguity about what makes a VoiceMemo unique.
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 a conditional requirement ('you must provide a transcript or link attachments'), which helps guide usage. However, it does not offer guidance on when to use this tool versus alternatives, such as when to create a voice memo instead of a regular message.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_folderADestructive
Delete a folder by its ID. Deleting a folder will also delete nested folders and all the messages in referenced folders. (This is a destructive action and cannot be undone, so please be careful.)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond annotations: it explains that deletion affects nested folders and messages, and warns that it's irreversible. Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description reinforces this without contradiction, providing extra behavioral insight like cascading 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 front-loaded with the core action, followed by critical details (scope and warning) in a logical flow. Every sentence adds value—no redundancy or fluff—making it efficient 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?
For a destructive tool with no output schema and minimal annotations, the description is fairly complete: it covers purpose, parameter semantics, and behavioral risks. However, it lacks details on error cases or response format, which could be useful given the tool's high-stakes nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and only one parameter ('id'), the description compensates by specifying 'by its ID', clarifying that the parameter is a folder identifier. This adds meaning beyond the bare schema, though it doesn't detail ID format or constraints, keeping it slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete a folder by its ID') and distinguishes it from siblings like 'move_folder' or 'update_folder_name' by emphasizing the permanent removal. It also specifies the scope of deletion (nested folders and messages), making the purpose unambiguous and distinct.
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 implies usage by specifying 'by its ID' and warning about destructiveness, which helps differentiate from non-destructive siblings like 'get_folder'. However, it does not explicitly state when to use this tool versus alternatives like 'move_folder' for relocation or provide prerequisites, leaving some guidance gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ai_action_responsesBRead-only
Retrieve previously generated AI Action (Prompt) responses by filtering for a specific prompt, message, or conversation ID. Combine filters to narrow results and view all AI-generated responses related to a particular prompt, message, or conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| limit | No | ||
| direction | No | ||
| prompt_id | No | ||
| channel_id | No | ||
| message_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds useful context about filtering capabilities and the scope of retrieval (previously generated responses), but doesn't disclose behavioral traits like rate limits, authentication needs, pagination behavior, or response format details beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences that are front-loaded with the main purpose. The first sentence establishes the core functionality, and the second adds useful detail about filtering combinations. There's minimal waste, though it could be slightly more structured with bullet points for clarity.
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 (6 parameters, no output schema) and annotations covering safety, the description provides a basic understanding of purpose and filtering. However, with 0% schema coverage and no output schema, it lacks sufficient detail on parameters and return values. The description is adequate but has clear gaps in parameter explanation and behavioral 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 0%, so the schema provides no parameter documentation. The description mentions filtering for 'prompt, message, or conversation ID' and 'combine filters to narrow results', which hints at parameters like message_id, prompt_id, and possibly channel_id, but doesn't explain the 6 parameters (including limit, direction, date) or their semantics. The description adds some value but doesn't adequately compensate for the complete lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves previously generated AI Action responses by filtering for specific IDs (prompt, message, or conversation). It uses the verb 'retrieve' with the resource 'AI Action responses' and mentions filtering capabilities. However, it doesn't explicitly differentiate from sibling tools like 'list_ai_actions' or 'get_message', which could provide similar functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning filtering to narrow results and view responses related to prompts, messages, or conversations. However, it doesn't explicitly state when to use this tool versus alternatives like 'list_ai_actions' or 'get_message', nor does it provide exclusions or prerequisites for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversationBRead-only
Get a conversation by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no behavioral context beyond this, such as error handling, permissions, or rate limits, but it doesn't contradict the annotations either.
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, making it highly efficient and front-loaded. Every word contributes directly to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema) and annotations covering safety, the description is minimally adequate. However, it lacks details on return values or error cases, which could be helpful despite the annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 1 parameter, the description doesn't add any semantic details about the 'id' parameter (e.g., format, source, or examples). However, the baseline is 3 since the schema fully defines the parameter, and the description doesn't 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 clearly states the verb ('Get') and resource ('a conversation by its ID'), making the purpose immediately understandable. However, it doesn't distinguish this tool from similar siblings like 'get_conversation_users' or 'get_message', which also retrieve conversation-related data, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'list_conversations' for multiple conversations and 'get_message' for individual messages, the agent must infer usage from the name alone, which is insufficient for optimal tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversation_usersCRead-only
Get users in a conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description doesn't add behavioral context beyond this (e.g., rate limits, authentication needs, or what 'Get' entails like pagination or format), but it doesn't contradict the annotations. With annotations covering safety, the description adds minimal value.
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's front-loaded and directly states the tool's purpose, making it easy to parse quickly. Every word earns its place, adhering to best practices 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 has annotations for safety but no output schema and low parameter coverage, the description is incomplete. It doesn't explain the return values (e.g., list of users, their roles) or provide enough context for effective use, especially with sibling tools that might overlap. For a read operation with one parameter, more detail 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 one parameter 'id' with 0% description coverage, and the tool description doesn't explain what 'id' refers to (e.g., conversation ID, user ID). Since schema coverage is low, the description should compensate but doesn't, leaving the parameter undocumented. However, with only one parameter, the baseline is slightly higher, but the lack of detail limits the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get users in a conversation' clearly states the verb ('Get') and resource ('users in a conversation'), but it's vague about scope (e.g., all users, active users, or participants) and doesn't distinguish it from sibling tools like 'get_conversation' or 'search_users', which might overlap in functionality. It's adequate but lacks specificity.
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_conversation' (which might include user data) or 'search_users' (for broader user queries). There's no mention of prerequisites, context, or exclusions, leaving 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.
get_current_userBRead-only
Get the current user information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no behavioral context beyond what annotations provide, such as authentication needs, rate limits, or return format, but it doesn't contradict annotations either.
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 with no wasted words. It's appropriately sized for a simple tool with no parameters, 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 tool's simplicity (0 parameters, annotations covering safety, no output schema), the description is minimally adequate. However, it lacks details on what 'current user information' includes or how it differs from sibling tools, which could help the agent use it more effectively in 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?
With 0 parameters and 100% schema description coverage, the schema fully documents the input structure (none required). The description doesn't need to add parameter details, and it appropriately doesn't mention any, earning a baseline score for tools with no parameters.
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 ('current user information'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_user' or 'search_user', which could retrieve user information in different contexts, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_user' or 'search_user'. There's no mention of context, prerequisites, or exclusions, leaving the agent to infer usage based on 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.
get_folderBRead-only
Get a folder by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| date | No | Return only Subfolders updated based on the date and direction (must inform include_first_level_tree = true) | |
| direction | No | Direction of the results (newer or older) | newer |
| include_first_level_tree | No | Defines if the first level of the folder tree should be returned |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no behavioral context beyond this (e.g., rate limits, authentication needs, or what 'Get' entails). With annotations covering safety, a 3 is appropriate as the description doesn't contradict them but adds minimal value.
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 ('Get a folder by its ID'). There's no wasted verbiage, 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 no output schema and annotations covering safety, the description is minimally adequate but lacks details on return values or usage context. For a tool with 4 parameters and sibling alternatives, it should provide more guidance on what the tool returns and when to use it, leaving gaps in 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?
Schema description coverage is 75%, with three of four parameters documented. The description mentions 'by its ID' which aligns with the required 'id' parameter but adds no further semantics. Since schema coverage is high, the baseline 3 applies, as the description doesn't compensate for the 25% gap or enhance understanding of parameters like 'direction' or 'date'.
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 a folder by its ID' clearly states the verb ('Get') and resource ('folder'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_folder_with_messages' or 'get_root_folders', which would require more specificity about what exactly is retrieved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_folder_with_messages' (which might include messages) or 'get_root_folders' (which lists root folders), leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_folder_with_messagesARead-only
Get a folder including its messages by its ID. (Only messages at folder level are returned.)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only and non-destructive behavior, which the description doesn't contradict. The description adds context about the scope of returned messages ('Only messages at folder level are returned'), which is useful beyond annotations. However, it lacks details on permissions, rate limits, or error handling, leaving some 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 two concise sentences that directly state the tool's function and a key limitation. It's front-loaded with the main purpose and avoids unnecessary words, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (fetching a folder with messages), annotations cover safety, but the description lacks details on output format, pagination, or error cases. Without an output schema, this leaves gaps in understanding what the tool returns, making it minimally adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and only one parameter ('id'), the description compensates by clarifying that 'id' refers to the folder ID to fetch. This adds meaningful context beyond the bare schema, though it doesn't specify format (e.g., numeric, string) or constraints, keeping it from a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), resource ('a folder including its messages'), and identifier ('by its ID'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_folder' (which likely returns folder metadata without messages) or 'get_message' (which gets individual messages), missing full 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 implies usage by stating 'Only messages at folder level are returned,' which suggests a limitation compared to other message-fetching tools. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_folder' or 'list_messages,' leaving the context somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messageBRead-only
Get a message by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| fields | No | Fields (optional) - Additional fields to include in the response. Possible values: conversation, creator, labels. | |
| language | No | Language (optional) - Original language will be used if not provided or not found. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description doesn't add any behavioral context beyond what annotations provide—no mention of authentication requirements, rate limits, error conditions, or response format. However, it doesn't contradict the annotations either.
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 zero wasted words. It's front-loaded with the core purpose and appropriately sized for a simple retrieval tool. Every word earns its place without being overly terse.
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 simple read operation with good annotations (readOnlyHint, destructiveHint) and moderate schema coverage, the description is minimally adequate. However, without an output schema, the description doesn't explain what the tool returns (message content, metadata, etc.), leaving a gap in understanding the result. The context signals suggest this is a straightforward tool, but the description could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (2 out of 3 parameters have descriptions). The description doesn't add any parameter semantics beyond what's in the schema—it mentions the 'id' parameter implicitly but provides no additional context about format, validation, or usage. With moderate schema coverage, the baseline 3 is appropriate as the description doesn't 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 clearly states the action ('Get') and resource ('a message by its ID'), making the purpose immediately understandable. It distinguishes from siblings like 'list_messages' by focusing on retrieval of a single message rather than listing multiple messages. However, it doesn't explicitly differentiate from other get_* tools like 'get_conversation' or 'get_folder' beyond the resource type.
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 this tool is appropriate (e.g., for retrieving a specific known message) versus when to use 'list_messages' (for browsing) or 'get_conversation' (for conversation context). There are no explicit exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_messagesBRead-only
Get most recent messages, including their associated Conversation, Creator, and Labels information. Returns a maximum of 10 messages.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Language (optional) - Original language will be used if not provided or not found. | |
| conversation_id | No | Conversation ID (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds useful behavioral context: it specifies the maximum return count (10 messages) and indicates what related data is included (Conversation, Creator, Labels). However, it doesn't describe pagination behavior, sorting order, or what 'most recent' means temporally.
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 - just two sentences that efficiently convey the core functionality and key limitation. Every word earns its place: the first sentence explains what the tool does and what data it returns, the second specifies the important constraint. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with good annotations and full schema coverage, the description provides adequate but minimal context. It explains what data is returned and the 10-message limit, but doesn't address important aspects like how 'most recent' is determined, whether results are paginated, or how this tool differs from similar siblings. Without an output schema, more detail about return format would be 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?
Schema description coverage is 100%, so the schema already fully documents both optional parameters (conversation_id and language). The description doesn't add any parameter-specific information beyond what's in the schema. The baseline score of 3 is appropriate when the schema provides complete parameter documentation.
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 most recent messages') and specifies what information is included ('Conversation, Creator, and Labels information'), which goes beyond just the name. However, it doesn't explicitly differentiate from sibling tools like 'list_messages' or 'get_message', which likely have different scopes or filtering capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_messages' or 'get_message'. It mentions a maximum return of 10 messages, but doesn't explain when this limitation is appropriate or what scenarios warrant using this tool over others with potentially different pagination or filtering options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_root_foldersBRead-only
Lists all root folders for a given workspace, including their names, IDs, and basic structure, but does not provide aggregate counts.(Required to inform message type:voicememo,prerecorded)
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Folder Type | |
| sort_by | No | Field to sort by | |
| workspace_id | No | Workspace ID | |
| sort_direction | No | Sort order direction | ASC |
| include_all_tree | No | Return all folders tree |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds value by specifying output includes names, IDs, basic structure, and explicitly states it does not return aggregate counts. It does not mention rate limits or authorization beyond what annotations imply.
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 two sentences, concise, and front-loaded with the main action. The parenthetical seems slightly out of place but does not harm clarity significantly. Efficient with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no output schema, the description states what is returned and a key limitation (no aggregate counts). However, it does not mention pagination, sorting behavior, or the significance of include_all_tree beyond the schema. Adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 5 parameters with 100% description coverage, so baseline is 3. The tool description does not add additional parameter semantics beyond what the schema already provides. It does not explain parameter interactions or defaults beyond 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 tool lists root folders with names, IDs, and basic structure, and distinguishes itself by noting it does not provide aggregate counts. It also provides a context hint about message types. However, it does not explicitly differentiate from siblings like get_folder or get_folder_with_messages.
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 implies usage when needing top-level folder structure and mentions it lacks aggregate counts, but does not explicitly state when to use or not use this tool versus alternatives. No alternatives or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userARead-only
Get detailed information about a specific user by their ID. Returns the full user profile — name, languages, voice settings, workspace memberships and roles, notification preferences, and timestamps. This is richer than search_user (which only finds users by phone, email, or name). Use this when you already have a user ID and need their complete information.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate safety. It adds behavioral context by listing the specific fields returned (name, languages, voice settings, etc.), which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence states purpose and action. The second provides comparison and usage guidance. Efficient and front-loaded.
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 one parameter and no output schema, the description adequately explains what the tool returns (full profile with specific fields) and contrasts with siblings. This allows an agent to determine if the tool meets the need.
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 only parameter 'id' has no description in the schema (0% coverage). The description only says 'by their ID' without specifying format, length, or source. Minimal added value beyond 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 'Get' and resource 'detailed information about a specific user', and explicitly distinguishes from the sibling tool 'search_user' by noting that this tool returns richer information and requires a user ID.
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?
Explicit guidance: 'Use this when you already have a user ID and need their complete information.' It also contrasts with 'search_user' which is for finding users by phone/email/name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspaces_basic_infoBRead-only
Get basic information about a workspace.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no behavioral context beyond what annotations provide—no information about what 'basic information' includes, authentication needs, rate limits, or response format. With annotations covering safety, a baseline 3 is appropriate as the description adds minimal value.
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 appropriately sized for a simple tool and front-loads the core 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 tool's simplicity (0 parameters, read-only annotations), the description is minimally adequate. However, without an output schema and with no details on what 'basic information' includes or how it differs from other retrieval tools, there are clear gaps that could hinder 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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline 4 since it 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 'basic information about a workspace', making the purpose understandable. However, it doesn't distinguish this from potential sibling tools like 'get_folder' or 'get_conversation' which also retrieve workspace-related information, 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. With sibling tools like 'get_folder' and 'get_conversation' that might retrieve workspace data in different contexts, there's no indication of when this basic info retrieval is preferred or what its scope limitations are.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ai_actionsARead-only
List AI Actions (Prompts). Optionally, you can filter by owner type and workspace id. Filtering by owner type, Possible values: "user", "workspace", "system". Do not use unless the user explicitly requests it.
| Name | Required | Description | Default |
|---|---|---|---|
| owner_type | No | ||
| workspace_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds useful context about filtering behavior and the caution against automatic filtering, but doesn't provide additional behavioral details like pagination, rate limits, or what constitutes an 'AI Action' beyond the parenthetical '(Prompts)'. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized at three sentences, with the core purpose stated first. The second sentence explains optional filtering, and the third provides important usage guidance. No wasted words, though the structure could be slightly improved by combining the filtering explanation into one smoother sentence.
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 optional parameters, no output schema), the description covers the basics adequately but has gaps. It explains what the tool does and provides filtering guidance, but doesn't describe the return format, pagination, or how results are ordered. With annotations covering safety, this is minimally complete but could benefit from more behavioral 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?
With 0% schema description coverage, the description carries the full burden of explaining parameters. It successfully explains both parameters: 'owner_type' (with enum values) and 'workspace_id' (implied by 'filter by workspace id'). The description adds meaningful context about when to use these filters, though it doesn't specify format requirements for workspace_id.
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 'AI Actions (Prompts)', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_ai_action_responses' or 'run_ai_action', which could cause confusion about when to use each. The parenthetical '(Prompts)' adds useful clarification about what AI Actions are.
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 explicit guidance on when to use the optional filters ('Do not use unless the user explicitly requests it'), which is helpful for agent decision-making. However, it doesn't explain when to use this tool versus similar sibling tools like 'get_ai_action_responses' or 'run_ai_action', leaving some ambiguity about tool selection in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversationsARead-only
List all conversations. Returns a simplified view of user conversations that have had messages sent or received within the last 6 months.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and destructiveHint=false, indicating this is a safe read operation. The description adds valuable behavioral context beyond annotations: it specifies that the view is 'simplified' (implying limited details compared to other tools) and that it filters conversations to those with activity in the last 6 months. This helps the agent understand the tool's scope and output characteristics, though it doesn't cover aspects like pagination or rate limits.
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 two concise sentences that are front-loaded with the core purpose ('List all conversations') followed by clarifying details about the output format and filtering. Every word adds value without redundancy, making it easy for an agent to parse and understand quickly. There's no wasted space 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 tool's low complexity (0 parameters, read-only operation) and the presence of annotations covering safety, the description is reasonably complete. It explains what the tool does, the simplified nature of the output, and the time-based filtering. However, without an output schema, it could benefit from more detail on the structure of the returned conversations (e.g., what fields are included in the 'simplified view'), which slightly limits completeness for an agent invoking the tool.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, and instead focuses on the tool's behavior and output. This meets the baseline of 4 for tools with no parameters, as it efficiently uses space to convey other useful information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'List all conversations' with a specific verb and resource. It distinguishes from siblings by specifying it returns 'a simplified view' and limits to conversations with activity 'within the last 6 months', which differentiates it from tools like 'get_conversation' (single conversation) and 'list_messages' (messages rather than conversations). However, it doesn't explicitly contrast with all sibling tools, 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 implies usage context by stating it returns conversations with recent activity (last 6 months), suggesting this tool is for getting current/recent conversations rather than historical ones. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_conversation' (for a specific conversation) or 'list_messages' (for messages within conversations), nor does it mention exclusions or prerequisites. The guidance is present but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_messagesARead-only
List Messages. By default returns latest 20 messages. The maximum allowed range between dates is 183 days (6 months). All presigned URLs returned by this tool are ready to use. Do not parse, modify, or re-encode them—always present or use the URLs exactly as received.If you want to get messages from a specific date range, you can use the "start_date" and "end_date" parameters. If you want to get messages from a specific date, you can use the "date" parameter. If you want to get messages from a specific user, you can use the "user_ids" parameter. If you want to get messages from a specific conversation, you can use the "conversation_id" parameter. If you want to get messages from a specific folder, you can use the "folder_id" parameter. If you want to get messages from a specific workspace, you can use the "workspace_id" parameter. If you want to get messages for a particular language, you can use the "language" parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | Max number of results per page is: **50** | |
| type | No | Type (optional) | |
| end_date | No | End Date range | |
| language | No | Language (optional) | |
| user_ids | No | User IDs (optional). List of user IDs to filter messages by. If not provided, all users will be included. | |
| folder_id | No | Folder ID (optional) | |
| start_date | No | Start Date range | |
| workspace_id | No | Workspace ID (optional) | |
| sort_direction | No | The field used to sort results is **Creation Date** | DESC |
| conversation_id | No | Conversation ID (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds valuable behavioral context beyond annotations: default pagination (latest 20), date range limit (183 days), and critical handling instructions for presigned URLs ('Do not parse, modify, or re-encode them'). It doesn't mention rate limits or authentication needs, but provides useful operational details.
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 overly verbose and repetitive with eight consecutive 'If you want...' sentences that duplicate schema information. While front-loaded with important behavioral details, the parameter listing adds unnecessary length without corresponding value. The structure could be significantly streamlined.
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 (11 parameters) and lack of output schema, the description provides good coverage of key behavioral aspects (pagination defaults, date limits, URL handling). With annotations covering safety and high schema coverage for parameters, the description adds necessary context about operational constraints, though it could better explain the return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 91% schema description coverage, the schema already documents most parameters thoroughly. The description adds minimal semantic value by listing parameter purposes in a repetitive 'If you want...' format, but doesn't provide syntax examples, format details, or constraints beyond what's in the schema. The baseline 3 is appropriate given 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 tool's purpose as 'List Messages' with specific details about default behavior (latest 20 messages) and date range limitations. It distinguishes from siblings by focusing on listing rather than creating, deleting, or getting specific messages, though it doesn't explicitly name alternatives like 'get_message' or 'get_recent_messages'.
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 implied usage guidance through parameter explanations (e.g., 'If you want to get messages from a specific date range...'), but lacks explicit when-to-use vs. when-not-to-use statements or named alternatives. It doesn't clarify when to choose this over 'get_recent_messages' or 'get_message' from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_folderA
Move a folder by its ID. Move a Folder into another Folder or into a Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| folder_id | No | Folder ID | |
| workspace_id | No | Workspace ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, confirming this is a mutation tool but not destructive. The description adds context by specifying that movement can be into folders or workspaces, which clarifies the tool's behavior beyond the annotations. However, it doesn't disclose additional traits like permission requirements, rate limits, or what happens to nested content during the move.
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 two concise sentences with zero waste: the first states the core action, and the second specifies destination options. It is front-loaded and efficiently communicates essential information 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 a mutation tool with annotations covering safety but no output schema, the description is minimally complete. It explains what the tool does but lacks details on return values, error conditions, or side effects. For a tool that modifies data, more context on outcomes would be beneficial, though annotations provide basic behavioral hints.
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 67%, with 'id' lacking a description but 'workspace_id' and 'folder_id' described. The description adds minimal semantic value by implying 'id' is the folder to move and that 'workspace_id' or 'folder_id' are destinations, but doesn't clarify parameter relationships or constraints beyond what the schema provides. With moderate coverage, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'move' and the resource 'folder by its ID', specifying the action and target. It distinguishes the tool by describing folder movement, which differentiates it from sibling tools like 'move_message_to_folder' (which moves messages) and 'update_folder_name' (which renames). However, it doesn't explicitly contrast with 'delete_folder' or other folder operations 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?
The description implies usage by stating 'Move a Folder into another Folder or into a Workspace', suggesting contexts where folder relocation is needed. However, it lacks explicit guidance on when to use this tool versus alternatives like 'update_folder_name' for renaming or 'delete_folder' for removal, and doesn't mention prerequisites such as needing folder IDs or workspace permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_message_to_folderB
Move a message to a folder by its ID. Move a Message into another Folder or into a Workspace. Only allowed to move messages of type: voicememo,prerecorded.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | No | Folder ID | |
| message_id | Yes | Only allowed to add messages of type: voicememo,prerecorded | |
| workspace_id | No | Workspace ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, which the description doesn't contradict. The description adds context by specifying allowed message types (voicememo, prerecorded), which is useful behavioral information not covered by annotations. However, it lacks details on permissions, error handling, or side effects beyond the move 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 front-loaded with the core action and includes necessary constraints in two sentences. It avoids unnecessary details, but could be slightly more structured by separating the move action from the constraints for clarity.
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 (mutation with constraints), annotations cover safety, and schema covers parameters well. However, without an output schema, the description doesn't explain return values or success/failure behavior. It adequately covers the move operation but lacks completeness for error cases or result interpretation.
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 parameters. The description adds minimal semantics by reiterating the allowed message types for 'message_id', but this is redundant with the schema. No additional parameter meaning or usage context is provided beyond what's in the structured data.
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 'move' and resource 'message to a folder by its ID', specifying the action and target. It distinguishes from siblings like 'move_folder' by focusing on messages rather than folders. However, it doesn't explicitly differentiate from other message-related tools like 'create_conversation_message' beyond the move 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?
The description implies usage by stating 'Only allowed to move messages of type: voicememo,prerecorded', which provides some context for when to use this tool. However, it doesn't explicitly mention when not to use it or name alternatives among siblings, such as when dealing with other message types or operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_ai_actionC
Run an AI Action (Prompt) for a message. You can run an AI Action for a message by its ID or a list of message IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | The language of the response. Defaults to original message. | |
| prompt_id | Yes | ||
| channel_id | No | ||
| message_ids | Yes | ||
| workspace_id | No | ||
| ignore_existing_response | No | Whether to ignore existing response and generate a new one. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the basic action. Annotations indicate non-read-only and non-destructive, but the description adds no context about what 'run' entails (e.g., potentially mutating state, generating a response, or requiring specific permissions).
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 concise with two sentences that front-load the purpose. No unnecessary information, though it could be slightly expanded to cover key parameters without becoming verbose.
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 complex tool with 6 parameters and no output schema, the description is insufficient. It fails to explain the AI Action concept, return format, or behavior with multiple messages, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema description coverage, the description should explain the remaining parameters. It only mentions message_ids, leaving prompt_id, channel_id, workspace_id, language, and ignore_existing_response unexplained, adding little value beyond 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 tool runs an AI Action on a message or list of messages, using their IDs. It distinguishes from siblings like run_ai_action_for_shared_link by specifying message IDs as input.
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 on when to use this tool vs alternatives (e.g., get_ai_action_responses, run_ai_action_for_shared_link). No prerequisites or context for appropriate use are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_userARead-only
Search for a User by their phone number, email address, id or name. (In order to search for a User, you must provide a phone number, email address, id or name.)When searching by name, only users that are part of your contacts will be returned
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The name of the user to search for (Only users that are part of your contacts will be returned) | |
| No | Email Address | ||
| phone | No | Phone Number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds useful context about search constraints (e.g., name searches only return contacts) and clarifies that at least one parameter is required ('you must provide...'), which isn't in the schema. However, it lacks details on response format, pagination, or error handling, leaving behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences that are front-loaded with key information (search purpose and required parameters). However, the second sentence could be more concise, and there's minor redundancy (e.g., repeating search criteria). Overall, it's efficient with little waste.
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 (search with constraints), 100% schema coverage, and annotations covering safety, the description is adequate but incomplete. It lacks output details (no schema provided), doesn't explain how multiple parameters interact, and omits error cases (e.g., no matches). For a search tool, this leaves gaps in contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters (email, phone, name). The description adds minimal semantics by reiterating the searchable fields and noting the contacts limitation for name searches, but doesn't provide additional syntax, format, or usage details beyond what's in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Search for a User') and resources ('phone number, email address, id or name'), distinguishing it from sibling tools like 'get_user' (which likely retrieves a single user by ID) and 'search_users' (which may have broader search capabilities). It precisely defines what the tool does and its scope.
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 clear context for when to use this tool by specifying search criteria (phone, email, id, or name) and noting that name searches are limited to contacts. However, it does not explicitly state when not to use it or name alternatives (e.g., 'get_user' for ID-based retrieval or 'search_users' for broader searches), leaving some ambiguity compared to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_usersARead-only
Search multiple Users by their phone numbers, email addresses, ids or names. (In order to search Users, you must provide phone numbers, email addresses, ids or names.)When searching by name, only users that are part of your contacts will be returned
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | User IDs | |
| names | No | The names of the users to search for (Only users that are part of your contacts will be returned) | |
| emails | No | Email Addresses | |
| phones | No | Phone Numbers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds useful behavioral context about the name-based search limitation (only returns contacts), which isn't captured in annotations. However, it doesn't describe other behavioral aspects like pagination, rate limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences that each add value. The first sentence states the purpose and search criteria, while the second adds important behavioral context. However, the parenthetical repetition in the first sentence is slightly redundant.
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 read-only search tool with full schema coverage and clear annotations, the description provides adequate context. It covers the purpose, search criteria, and an important behavioral constraint. The main gap is the lack of output format information, but since there's no output schema, this is a minor limitation.
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 fully documents all 4 parameters. The description adds minimal value beyond the schema by mentioning the same search criteria and the name-based search constraint (which is already in the 'names' parameter description). Baseline 3 is appropriate 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 verb ('search') and resource ('Users'), specifying the search criteria (phone numbers, email addresses, ids, or names). It distinguishes from the sibling tool 'search_user' (singular) by emphasizing 'multiple Users' and the ability to search by multiple criteria types.
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 clear context for when to use this tool (searching users by specific identifiers) and includes an important constraint for name-based searches (only returns contacts). However, it doesn't explicitly state when NOT to use it or mention alternatives like 'get_user' or 'search_user' for different use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_conversationD
Summarize a conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| end_date | No | ||
| language | No | ||
| prompt_id | Yes | ||
| start_date | No | ||
| message_ids | No | ||
| conversation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, but the description does not add behavioral context beyond this. It fails to explain what 'summarize' entails operationally—such as whether it generates new content, modifies data, or has side effects like rate limits or authentication needs. With annotations covering basic safety, the description adds minimal value.
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 a single sentence, 'Summarize a conversation.', which is front-loaded and wastes no words. However, this brevity comes at the cost of informativeness.
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 7 parameters, 0% schema coverage, no output schema, and annotations providing only basic hints, the description is severely incomplete. It does not address parameter meanings, output format, or behavioral details needed for effective tool 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 0%, meaning none of the 7 parameters are documented in the schema. The description does not mention any parameters, their purposes, or how they affect summarization, leaving the agent with no semantic understanding beyond raw schema structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Summarize a conversation' restates the tool name 'summarize_conversation' almost verbatim, making it tautological. While it indicates the general action (summarize) and resource (conversation), it lacks specificity about what aspects are summarized or how it differs from sibling tools like 'get_conversation' or 'list_conversations'.
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 prerequisites, context for summarization, or any sibling tools that might be relevant, leaving the agent with no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_folder_nameB
Update a folder name by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | Yes | New Folder Name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a mutable (readOnlyHint: false) but non-destructive (destructiveHint: false) operation. The description adds that it updates a folder name, which aligns with annotations and provides basic context. However, it doesn't disclose additional behavioral traits like permission requirements, rate limits, or what happens on failure (e.g., invalid ID). With annotations covering safety, the description adds minimal but not rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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, and there's no 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 a mutation tool with annotations (readOnlyHint: false, destructiveHint: false) but no output schema and partial parameter coverage, the description is minimally adequate. It states what the tool does but lacks details on usage, error handling, or return values. For a simple update operation, it's functional but leaves gaps in guidance and semantics.
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 50% (only 'name' has a description). The description mentions updating 'by its ID', which hints at the 'id' parameter's purpose but doesn't add meaningful semantics beyond the schema. It doesn't explain parameter constraints (e.g., ID format, name length) or interactions. With partial schema coverage, the description compensates slightly but not fully.
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 ('folder name'), specifying it's done 'by its ID'. It distinguishes from siblings like 'create_folder' (creation) and 'delete_folder' (deletion), but doesn't explicitly differentiate from 'move_folder' (which might involve name changes). The purpose is specific and actionable.
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 folder ID), exclusions, or comparisons to siblings like 'move_folder' (which might rename during relocation). Usage is implied from the name and description alone, with no explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Tools are mostly distinct with clear purposes. Some overlap exists between get_recent_messages and list_messages, and between various create message tools, but descriptions help differentiate. Overall, an agent can reliably select the correct tool.
All tools follow a consistent verb_noun pattern with underscores (e.g., create_folder, get_message, list_conversations). No mixing of styles or irregular naming, making it predictable for both agents and humans.
With 28 tools, the server is on the heavy side for a typical MCP server. While each tool serves a specific purpose, the count feels slightly excessive for the scope of a voice messaging platform, potentially overwhelming for agents.
Core messaging and folder operations are covered, but missing update/delete message tools and explicit conversation creation are notable gaps. AI actions are well-covered, but the surface lacks some lifecycle operations, limiting agent workflows.
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.
Unified inbox MCP for WhatsApp, Telegram, Email, voice — read/send messages, search, AI agents.
Send and schedule SMS and WhatsApp messages, manage contacts and templates, and track delivery.
Send SMS/MMS, manage contacts, and read campaigns, messages and media on SimpleTexting.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to read iMessage history and send messages on macOS. Supports conversation listing, message search with keyword and semantic modes, contact lookup, and sending messages to existing conversations.1311MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to read, search, and send iMessages with features like contact name resolution, session grouping, and attachment listing. It provides intent-aligned tools to efficiently navigate conversation history and manage messages through natural language queries.6MIT
- AlicenseCqualityDmaintenanceEnables AI agents to send, receive, schedule, and manage SMS and MMS messages using the Twilio Programmable Messaging API. It provides comprehensive tools for handling bulk messaging, conversation threads, and real-time inbox monitoring through a secure, production-grade architecture.161MIT
- AlicenseAqualityDmaintenanceManage voice AI agents, make calls, run campaigns, and control phone numbers through natural language.58181MIT
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/PhononX/cv-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server