Skip to main content
Glama
PhononX

Carbon Voice

by PhononX

Carbon Voice MCP Server

MCP Compatible npm version

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:

  1. Carbon Voice API Key - Contact the Carbon Voice development team to request your API key:

  2. npx Installation - You must have npx installed 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:

  1. 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)

  1. Open Cursor

  2. Go to Cursor Settings > Features > Model Context Protocol

  3. Add a new MCP server configuration:

{
  "mcpServers": {
    "Carbon Voice": {
      "url": "https://mcp.carbonvoice.app"
    }
  }
}
  1. 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:

  1. Open Cursor

  2. Go to Cursor Settings > Features > Model Context Protocol

  3. 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"]
    }
  }
}
  1. Replace "your_api_key_here" with your actual Carbon Voice API key

  2. Save and restart Cursor

For Claude Desktop

HTTP Transport (Remote)

Setting up Carbon Voice in Claude Desktop is straightforward! Here's how to do it:

  1. Open Claude Desktop and navigate to Search and Tools

  2. Go to Manage Connectors and click "Add custom connector"

  3. Fill in the connector details:

    • Name: Give it a friendly name like "Carbon Voice"

    • Remote MCP Server URL: Enter https://mcp.carbonvoice.app

  4. Save your connector

  5. 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:

  1. Open your Claude Desktop configuration file:

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

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

  2. 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"]
    }
  }
}
  1. Replace "your_api_key_here" with your actual Carbon Voice API key

  2. Save 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 information

  • debug - Most verbose logging, shows detailed request/response data

  • warn - Only warning and error messages

  • error - 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 messages

  • error.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 ID

  • get_recent_messages - Get the 10 most recent messages with full context

  • create_conversation_message - Send a message to a conversation

  • create_direct_message - Send direct messages to users or groups

  • create_voicememo_message - Create voice memo messages

  • add_attachments_to_message - Add link attachments to existing messages

Users

  • get_user - Retrieve user information by ID

  • search_user - Find a user by phone number or email

  • search_users - Search multiple users by various identifiers

Conversations

  • list_conversations - Get all conversations from the last 6 months, with optional filtering by user IDs

  • get_conversation - Retrieve conversation details by ID

  • get_conversation_users - Get all users in a conversation

Folders

  • get_workspace_folders_and_message_counts - Get folder and message statistics

  • get_root_folders - List root folders for a workspace

  • create_folder - Create new folders

  • get_folder - Retrieve folder information

  • get_folder_with_messages - Get folder with its messages

  • update_folder_name - Rename folders

  • delete_folder - Delete folders (⚠️ destructive operation)

  • move_folder - Move folders between locations

  • move_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/actions

  • run_ai_action - Execute AI actions on messages

  • run_ai_action_for_shared_link - Run AI actions on shared content

  • get_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 issues

API Generation

npm run generate:api   # Generate TypeScript types from Carbon Voice API

Running the Server

npm run dev:http       # Start HTTP server in development mode with hot reload
npm run start:http     # Start HTTP server in production mode

Testing 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 Inspector

For stdio transport testing:

  1. Open the generated URL with token (e.g., http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=46bfbd8938955be26da7f2089a8cccb7be57ed570e65d8d2d68e95561ed9b79e)

  2. Set Transport Type: STDIO

  3. Set Command: node

  4. Click Connect

  5. Should see Connected info.

For HTTP transport testing:

  1. Open the generated URL with token

  2. Set Transport Type: Streamable HTTP

  3. Set URL: http://localhost:3005

  4. Click Auth, then Quick Oauth Flow.

  5. Will be redirected to Carbon Voice Auth Page. After Login, Bearer token should be auto added to Authorization Request headers.

  6. Click Connect

  7. 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 develop

Release Bug Fix

# 1. Test your changes
npm run build
npm run mcp:inspector:http

# 2. Release patch version
npm run release:patch

Release 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:minor

Development Tips

  • Use auto:build during development for automatic rebuilding when files change

  • Test both transports with MCP Inspector before releasing

  • Run generate:api when Carbon Voice API changes

  • Use 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

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 tools
add_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
linksYesArray of links to be attached to the message

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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

For a mutation tool with no 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
linksNoArray of links to be attached to the message
transcriptNoThe Message transcript will be used to generate audio using text-to-speech
from_message_idNoMessage ID to be used as a base for the new message. (Optional only when from_message_type is NewMessage)
from_message_typeNoFrom Message typeNewMessage

TDQS

C2.8/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
linksNoArray of links to be attached to the message
transcriptNoThe Message transcript will be used to generate audio using text-to-speech
workspace_idNoThe workspace ID to send the message topersonal
from_message_idNoMessage ID to be used as a base for the new message. (Optional only when from_message_type is NewMessage)
from_message_typeNoFrom Message typeNewMessage

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the Folder
typeYesFolder type
workspace_idYesWorkspace ID
parent_folder_idNoParent Folder ID

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core 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.

Completeness3/5

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

Given the tool's moderate complexity (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.

Parameters3/5

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

Schema description coverage is 100%, so parameters are 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.

Purpose4/5

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

The description clearly states the action ('create') and resource ('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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
linksNoArray of links to be attached to the message
folder_idNoFolder ID (not allowed when workspace_id specified is different from the folder_id)
audio_fileNoAudio file upload on multipart requests. Supported Formats: .mp3, .m4a, .wav, .aac, .ogg, .flac, .wma, .opus, .webm. (Overwrites transcript)
transcriptNoThe Message transcript will be used to generate audio using text-to-speech
workspace_idNoWorkspace ID (not allowed when folder_id specified is different from the folder_id)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the action 'Create 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.

Usage Guidelines3/5

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_folderA
Destructive

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.)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the specific action ('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.

Usage Guidelines4/5

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_responsesB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
limitNo
directionNo
prompt_idNo
channel_idNo
message_idNo

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

Given the tool's moderate complexity (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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_conversationB
Read-only

Get a conversation by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

Given the tool's low complexity (1 parameter, 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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like '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_usersC
Read-only

Get users in a conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It'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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'get_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_userB
Read-only

Get the current user information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose 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.

Completeness3/5

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

Given the tool's simplicity (0 parameters, 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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like '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_folderB
Read-only

Get a folder by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dateNoReturn only Subfolders updated based on the date and direction (must inform include_first_level_tree = true)
directionNoDirection of the results (newer or older)newer
include_first_level_treeNoDefines if the first level of the folder tree should be returned

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose ('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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like '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_messagesA
Read-only

Get a folder including its messages by its ID. (Only messages at folder level are returned.)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

Given the tool's moderate complexity (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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the action ('Get'), 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.

Usage Guidelines3/5

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_messageB
Read-only

Get a message by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
fieldsNoFields (optional) - Additional fields to include in the response. Possible values: conversation, creator, labels.
languageNoLanguage (optional) - Original language will be used if not provided or not found.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the action ('Get') and resource ('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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when 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_messagesB
Read-only

Get most recent messages, including their associated Conversation, Creator, and Labels information. Returns a maximum of 10 messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoLanguage (optional) - Original language will be used if not provided or not found.
conversation_idNoConversation ID (optional)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already 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.

Purpose4/5

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

The description clearly states the action ('Get 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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like '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_foldersB
Read-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)

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesFolder Type
sort_byNoField to sort by
workspace_idNoWorkspace ID
sort_directionNoSort order directionASC
include_all_treeNoReturn all folders tree

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_userA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters2/5

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.

Purpose5/5

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

The description clearly states the verb 'Get' and resource 'detailed information about a 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.

Usage Guidelines5/5

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_infoB
Read-only

Get basic information about a workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's 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.

Completeness3/5

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

Given the tool's simplicity (0 parameters, 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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the verb 'Get' and resource '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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like '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_actionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
owner_typeNo
workspace_idNo

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

Given the tool's moderate complexity (2 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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the verb 'List' and resource '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.

Usage Guidelines4/5

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_conversationsA
Read-only

List all conversations. Returns a simplified view of user conversations that have had messages sent or received within the last 6 months.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

Given the tool's low complexity (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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose as '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.

Usage Guidelines3/5

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_messagesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sizeNoMax number of results per page is: **50**
typeNoType (optional)
end_dateNoEnd Date range
languageNoLanguage (optional)
user_idsNoUser IDs (optional). List of user IDs to filter messages by. If not provided, all users will be included.
folder_idNoFolder ID (optional)
start_dateNoStart Date range
workspace_idNoWorkspace ID (optional)
sort_directionNoThe field used to sort results is **Creation Date**DESC
conversation_idNoConversation ID (optional)

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness2/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the tool's purpose as '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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
folder_idNoFolder ID
workspace_idNoWorkspace ID

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idNoFolder ID
message_idYesOnly allowed to add messages of type: voicememo,prerecorded
workspace_idNoWorkspace ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

Given the tool's complexity (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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoThe language of the response. Defaults to original message.
prompt_idYes
channel_idNo
message_idsYes
workspace_idNo
ignore_existing_responseNoWhether to ignore existing response and generate a new one. Defaults to false.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_userA
Read-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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe name of the user to search for (Only users that are part of your contacts will be returned)
emailNoEmail Address
phoneNoPhone Number

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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

Given the tool's moderate complexity (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.

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents 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.

Purpose5/5

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

The description clearly states the tool's purpose 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.

Usage Guidelines4/5

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_usersA
Read-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

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoUser IDs
namesNoThe names of the users to search for (Only users that are part of your contacts will be returned)
emailsNoEmail Addresses
phonesNoPhone Numbers

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
end_dateNo
languageNo
prompt_idYes
start_dateNo
message_idsNo
conversation_idYes

TDQS

D1.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose2/5

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.

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. It 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameYesNew Folder Name

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse. Every word earns its place, 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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the action ('Update') and resource ('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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing 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

B3.1/5.0
Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness3/5

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

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    13
    11
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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.
    6
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Enables 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.
    16
    1
    MIT

Latest Blog Posts

MCP directory API

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

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

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