Missive MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Missive MCP ServerList my inbox conversations"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Missive MCP Server
An MCP (Model Context Protocol) server that interfaces with the Missive API, enabling Claude to manage email conversations, contacts, and team collaboration.
Prerequisites
Node.js 18+
Missive account with Productive plan (required for API access)
Missive API token
Related MCP server: icloud-mcp
Installation
npm install
npm run buildModes
The server runs in two modes: stdio for local single-user use, and remote for hosted multi-user deployments.
Stdio Mode (Local)
Set the MISSIVE_API_TOKEN environment variable:
export MISSIVE_API_TOKEN="your_api_token_here"
npm startTo get your API token: open Missive, go to Settings > API, click "Create a new token".
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"missive": {
"command": "/path/to/node",
"args": ["/path/to/missive-mcp/dist/index.js"],
"env": {
"MISSIVE_API_TOKEN": "your_api_token_here"
}
}
}
}Important: Use the full path to node (run which node to find it). Claude Desktop has a restricted PATH and may not find node otherwise.
Remote Mode (Hosted)
Runs an HTTP server with OAuth. Each user provides their own Missive PAT through a browser-based authorization flow.
export ENCRYPTION_KEY="$(openssl rand -hex 32)"
export BASE_URL="https://missive-mcp.example.com"
npm run remoteVariable | Required | Description |
| Yes | 32-byte hex string for AES-256-GCM PAT encryption |
| Yes | Public URL of the server |
| No | HTTP port (default 3000) |
| No | Directory for storage files (default |
Point MCP clients at {BASE_URL}/mcp. The server handles OAuth automatically:
Client discovers endpoints via
/.well-known/oauth-authorization-serverClient registers dynamically via
/registerUser is redirected to a form to paste their Missive API token
Server validates the token, encrypts and stores it, issues OAuth tokens
Client uses bearer tokens to call
/mcp
PATs are encrypted at rest with AES-256-GCM. OAuth tokens expire after 1 hour (refresh tokens last 30 days).
Tools
Reference Data
Tool | Description |
| List organizations you belong to |
| List teams (for assignments) |
| List users (for assignments) |
| List contact books (required before creating contacts) |
| List labels (for filtering and tagging) |
Conversations
Tool | Description |
| List conversations with filters (inbox, assigned, closed, team, label, email, domain) |
| Get a single conversation by ID |
Messages
Tool | Description |
| Get all messages, posts, and comments as a unified chronological timeline |
| Get full message content (with body truncation options) |
Drafts
Tool | Description |
| List drafts in a conversation |
| Create a draft (not sent) |
| Send a message immediately (rate limited) |
| Delete an unsent draft |
Contacts
Tool | Description |
| List contacts in a book (with search) |
| Get a single contact |
| Create a new contact |
| Update an existing contact |
Management
Tool | Description |
| Add a post to a conversation; close, label, assign, or move to team |
Examples
Read inbox
Use list_conversations with inbox=true to see recent conversations.Reply to an email
1. Use list_conversations to find the conversation
2. Use get_conversation_timeline to see the full thread (messages + team activity)
3. Use send_message with the conversation ID to replySearch for emails from a domain
Use list_conversations with domain="example.com"Assign a conversation
1. Use list_users to find the user ID
2. Use list_organizations to get the org ID
3. Use create_post with add_assignees=[user_id]Rate Limits
send_message: 10 per minute, 100 per hour (client-enforced)Missive API rate limits are undocumented; the client handles 429 responses
Security
API tokens are validated on startup (stdio) or on authorization (remote)
Tokens are never logged or included in error messages
In remote mode, PATs are encrypted at rest with AES-256-GCM
Email body content is never logged
Input validation on all tool parameters
License
MIT
Available Tools
19 toolscreate_contactCreate ContactA
Creates a new contact in a contact book. At least one name field (first_name or last_name) is required.
Use list_contact_books first to get the contact_book ID.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_book | Yes | Contact book ID (required) | |
| first_name | No | First name | |
| last_name | No | Last name | |
| middle_name | No | Middle name | |
| nickname | No | Nickname | |
| notes | No | Notes about the contact | |
| starred | No | Star/favorite the contact | |
| infos | No | Contact information (emails, phones, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It mentions creation and the name constraint but lacks details on return value, permissions, or error conditions. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The first sentence states purpose and constraint, the second gives a prerequisite. Extremely concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and no output schema, the description covers the essential: what the tool does, required condition, and how to get the book ID. It could mention return value but is fairly complete for a create tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already described. The description adds the critical constraint that at least one of first_name or last_name is required, which is not in the schema. This adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Creates a new contact in a contact book' with a specific verb and resource, and it includes a constraint (at least one name field). This distinguishes it from siblings like update_contact or list_contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a prerequisite: 'Use list_contact_books first to get the contact_book ID.' It does not explicitly contrast with alternatives but the context is clear enough for a create tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_draftCreate DraftA
Creates a draft message that is NOT sent. Use this when the user wants to compose a message and review it before sending.
The draft will be saved and can be viewed in Missive or sent later using send_message.
For replies, provide the conversation ID and the from/to addresses. For new messages, omit the conversation ID and use any from/to addresses specified by the user.
| Name | Required | Description | Default |
|---|---|---|---|
| to_fields | Yes | Primary recipients (required) | |
| cc_fields | No | CC recipients | |
| bcc_fields | No | BCC recipients | |
| subject | Yes | Email subject line | |
| body | Yes | Email body (HTML supported) | |
| conversation | No | Conversation ID to reply to (omit for new conversation) | |
| from_field | No | Sender address (uses default if omitted) | |
| attachments | No | File attachments (max 25, total payload max 10MB) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses core behavior: draft is not sent, saved, and can be sent later. No annotations provided, so description carries burden. However, lacks details on side effects like overwriting existing drafts. Still, essential behavior is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two paragraphs, front-loaded with purpose and usage. Every sentence adds value without redundancy. Well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main scenarios (new/reply), parameter usage, and outcome (draft saved). Lacks return value description, but given good schema coverage and no output schema, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions, but the description adds value: explains usage of conversation and from_field for replies vs new messages, mentions HTML support for body, and adds total payload max 10MB beyond schema's maxItems.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Creates a draft message that is NOT sent,' specifying the exact verb and resource. It distinguishes this tool from sending actions and manages both reply and new message scenarios.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use this when the user wants to compose a message and review it before sending.' Provides guidance on using conversation ID for replies vs omitting for new messages, and mentions send_message as alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_postCreate PostA
Adds a post to a conversation and optionally changes its state.
This tool can:
Close a conversation: set close=true
Add labels: set add_shared_labels=[label_ids]
Remove labels: set remove_shared_labels=[label_ids]
Assign users: set add_assignees=[user_ids]
Move to team: set team=team_id (use force_team=true to override existing team)
Add a visible note: set text="your message"
Posts leave a visible trace showing what triggered the action.
Required: conversation and organization IDs. Use list_organizations to get org ID, list_users for user IDs, list_shared_labels for label IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation | Yes | Conversation ID (required) | |
| organization | Yes | Organization ID (required) | |
| close | No | Set to true to close the conversation | |
| add_shared_labels | No | Label IDs to add to the conversation | |
| remove_shared_labels | No | Label IDs to remove from the conversation | |
| add_assignees | No | User IDs to assign to the conversation | |
| team | No | Team ID to move conversation to | |
| force_team | No | Force team change even if already in another team | |
| text | No | Post body text (visible in conversation) | |
| notification | No | Optional notification to display |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Explains that posts leave a visible trace and lists resulting effects (closing, labeling, etc.). Lacks detail on error behavior, permissions, or rate limits, but adequately describes primary effects for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Starts with core purpose, uses bullet list for capabilities, notes an important behavioral side effect, and ends with prerequisite IDs. Every sentence adds value; no extraneous content. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, no output schema, and no annotations, the description covers all parameters through action bullets and mentions required IDs. Minor shortcoming: no mention of response format or error handling, but sufficient for a well-understood mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description goes beyond by mapping parameters to concrete actions (e.g., 'set close=true', 'use force_team=true to override existing team') and clarifies the notification parameter's purpose, adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Adds a post to a conversation and optionally changes its state.' It enumerates specific capabilities (close, labels, assign, team, note) and differentiates from siblings which are other create/update actions for different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit instructions for obtaining required IDs (list_organizations, list_users, list_shared_labels). Does not specify when not to use or compare to alternatives like send_message, but context makes it clear this is for adding posts with state changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_draftDelete DraftA
Deletes an unsent draft or scheduled message. This action cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | The draft ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds the crucial behavioral trait 'This action cannot be undone,' which is beyond what the schema provides. However, it does not disclose other potential side effects or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the action and include the irreversible warning. No unnecessary words or information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (one parameter, no output schema) and no annotations, the description covers the essential purpose and behavioral note. It is complete for a straightforward deletion tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds no additional meaning beyond 'draft_id' being the ID to delete. The baseline is 3, and the description does not justify a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it deletes an unsent draft or scheduled message, identifying the verb and resource clearly. It distinguishes from sibling tools like create_draft, draft_reply, and list_drafts by specifying the action and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites or limitations. It implies usage for deleting unsent drafts or scheduled messages, but lacks explicit guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_replyDraft ReplyA
Creates a draft reply to an existing message. Automatically sets:
Subject: Adds "Re: " prefix to original subject
To: Uses the original sender's address
Conversation: Links to the original conversation
Use reply_all=true to include original CC recipients.
Only the body content is required. The draft can be reviewed in Missive or sent with send_message.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | The message ID to reply to | |
| body | Yes | Reply body (HTML supported) | |
| reply_all | No | Include original CC recipients | |
| cc_fields | No | Additional CC recipients (merged with original if reply_all) | |
| from_field | No | Override sender (uses default if omitted) | |
| attachments | No | File attachments (max 25, total payload max 10MB) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It discloses automatic behaviors (subject prefix, to, conversation linking) and that the draft can be reviewed or sent. But it omits potential side effects, authentication needs, or whether the original message is modified, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with no wasted words. It uses bullet points for automatic settings and clear sentences for usage. Every sentence adds value, fitting in two short paragraphs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description covers main functionality and automatic behaviors. It mentions that only body is required, explains draft lifecycle (review/send). Minor omissions: doesn't mention max attachment size (in schema) or permissions. Overall sufficient for context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 6 properties have descriptions). The description adds value by explaining automatic defaults (subject, To, Conversation) and the purpose of reply_all, but the schema already describes cc_fields and from_field adequately. Extra context is minor, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a draft reply to an existing message, specifying the action (draft reply) and the resource (existing message). It distinguishes from siblings like create_draft (blank draft) and send_message (sending), as the draft is a reply that auto-populates fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context: it says only body is required and hints at when to use reply_all. However, it lacks explicit guidelines on when not to use (e.g., for non-reply drafts use create_draft) or comparison with alternatives, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contactGet ContactB
Gets a single contact by ID with all details.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The contact ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavioral traits. It mentions 'all details' but does not explain what that includes, nor does it address permissions, rate limits, error cases, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no extraneous words. Efficient but could be more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one parameter and no output schema, the description is minimally adequate. It does not clarify return format, error handling, or behavior for missing IDs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (contact_id described as 'The contact ID to retrieve'). The description adds 'with all details' hinting at output but provides no additional parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get), resource (contact), and qualifier (by ID, with all details). It distinguishes from sibling tools like list_contacts and update_contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There are many sibling tools for retrieving different resources, but the description offers no context on selection criteria or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversationGet ConversationA
Gets a single conversation by ID. Returns conversation details including assignees, labels, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | The conversation ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes what is returned (assignees, labels, metadata), which adds behavioral context beyond the schema. However, no annotations are provided, and the description does not mention read-only nature, permissions, or error states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the core action and resource. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple GET with one parameter and no output schema, the description adequately explains the purpose and return content. Could mention the format of the returned object, but not strictly necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a parameter description. The tool description adds no additional meaning beyond the schema's parameter description. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Gets', the resource 'a single conversation by ID', and mentions the return content (assignees, labels, metadata). Differentiates from sibling tools like list_conversations and get_conversation_timeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly indicates use when you need a specific conversation by ID, but no explicit guidance on when not to use or alternatives. Could benefit from contrasting with list_conversations or get_message.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversation_timelineGet Conversation TimelineA
Returns all messages, posts, and comments in a conversation as a unified chronological timeline.
This matches how Missive displays conversations - emails, internal notes, state changes, and team comments interleaved by time.
Each item has a "type" field ("message", "post", or "comment") to identify what it is.
Uses smart caching: stops fetching when hitting cached data.
To paginate backwards: pass older_than with the oldest_timestamp from the previous response.
Use get_message with a specific message ID if you need the full body content.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | The conversation ID | |
| page_size | No | Maximum total items to return | |
| older_than | No | Fetch items older than this timestamp (for pagination) | |
| body_format | No | How to process message bodies (preview=500 chars, truncated=max_body_length) | preview |
| strip_html | No | Convert HTML body to plain text | |
| max_body_length | No | Maximum body length for truncated format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses caching behavior, pagination mechanism, and the structure of returned items (type field). However, it does not mention error handling or rate limits, which would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with 6 sentences. It front-loads the main purpose, then structure, caching, pagination, and alternative tool. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, no output schema, and no annotations, the description is remarkably complete. It covers the result structure, caching, pagination, and alternative tool usage. An agent can use this tool correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining how older_than relates to pagination (oldest_timestamp from previous response) and clarifying body_format options (preview=500 chars, truncated=max_body_length).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns all messages, posts, and comments in a conversation as a chronological timeline. It distinguishes itself from siblings like get_message (individual messages) and get_conversation (metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use the tool (for timeline view) and when to use the sibling get_message (for full body content). Also provides pagination instructions for backward navigation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messageGet MessageA
Gets a single message by ID with full body content. Supports body processing options to manage size.
Body format options:
full: Returns complete body (may be large for HTML emails)
truncated: Truncates body to max_body_length (default)
preview: Returns first 500 characters only
Use strip_html=true (default) to convert HTML to plain text.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | The message ID to retrieve | |
| body_format | No | How to process the message body | truncated |
| strip_html | No | Convert HTML body to plain text | |
| max_body_length | No | Maximum body length for truncated format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behaviors: body can be large, options to manage size (truncation, preview, strip_html). Without annotations, this is valuable context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, well-structured with bullet-style options. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides enough context (body options, HTML handling) for an agent to select and invoke correctly. No output schema needed given clarity of description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond the 100% covered schema: clarifies body_format values (e.g., preview returns 500 chars), and explains strip_html effect (converts HTML to plain text).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes precisely 'Gets a single message by ID with full body content', clearly distinguishing it from sibling tools like list_conversations or send_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides detailed guidance on body format options (full, truncated, preview) and when to use each, but lacks explicit when-not-to-use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contact_booksList Contact BooksA
Lists all contact books the authenticated user has access to. Required before creating contacts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of contact books to return | |
| offset | No | Offset for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Mentions that it returns only contact books the user has access to, implying read-only behavior. Missing details on pagination or rate limits, but adequate for a simple list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines purpose, second provides a usage hint. No unnecessary words, front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and low complexity (2 optional params), the description is fairly complete. Includes a key usage dependency. Lacks mention of return format (array of contact books) but that is inferable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for limit and offset. Description does not add additional parameter context beyond the schema, resulting in baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool lists all contact books accessible to the authenticated user, using a specific verb and resource. Differentiates from sibling tools like create_contact and list_contacts by focusing on contact books.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the tool is 'Required before creating contacts', providing clear usage context. Does not specify when not to use or alternatives, but the context is strong enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsList ContactsC
Lists contacts in a contact book. Use the search parameter to find contacts by name or email.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_book | Yes | Contact book ID (required - use list_contact_books to find) | |
| search | No | Search contacts by name or email | |
| limit | No | Maximum contacts to return | |
| offset | No | Offset for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It omits any mention of read-only nature, authentication requirements, rate limits, error behavior, or pagination details beyond what the schema already provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core purpose, and avoids fluff. While it lacks behavioral depth, the brevity is appropriate for a straightforward list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity (4 params, no output schema), the description fails to explain pagination, result set structure, or that contact_book is required. It relies heavily on the schema, leaving the agent without important usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter comments. The description adds no new semantic detail; it merely repeats the search parameter's purpose already covered in the schema. Thus it meets the baseline without exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Lists contacts in a contact book,' which clearly identifies the action and resource. It distinguishes from sibling tools like get_contact and create_contact, though it does not explicitly scope to all contacts or mention the exclusion of other filtering tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only advises using the search parameter for name/email queries but provides no guidance on when to use this tool versus alternatives like get_contact for individual contacts or list_contact_books for book listing. No when-not-to-use context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversationsList ConversationsA
Lists conversations visible to the authenticated user. Supports multiple filters and search by email/domain.
Common filter combinations:
inbox=true: Shows inbox conversations
assigned=true: Shows assigned conversations
closed=true: Shows closed conversations
email="user@example.com": Search by exact email address
domain="example.com": Search by email domain
Note: email and domain are mutually exclusive.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox | No | Filter to inbox conversations | |
| all | No | Show all conversations | |
| assigned | No | Filter to assigned conversations | |
| closed | No | Filter to closed conversations | |
| snoozed | No | Filter to snoozed conversations | |
| flagged | No | Filter to flagged conversations | |
| trashed | No | Filter to trashed conversations | |
| junked | No | Filter to junked conversations | |
| drafts | No | Filter to conversations with drafts | |
| shared_label | No | Filter by shared label ID | |
| team | No | Filter by team ID | |
| team_inbox | No | Filter by team inbox | |
| team_closed | No | Filter by team closed | |
| team_all | No | Filter by team (all conversations) | |
| organization | No | Filter by organization ID | |
| No | Search by exact email address (mutually exclusive with domain) | ||
| domain | No | Search by email domain (mutually exclusive with email) | |
| limit | No | Maximum conversations to return (max 50) | |
| until | No | Cursor for pagination (last_activity_at timestamp) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It mentions mutual exclusivity but lacks details on pagination behavior, rate limits, or authentication. The until parameter suggests cursor-based pagination but is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with a main sentence, bullet points for common filters, and a final note. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should explain return values or pagination. It mentions until as cursor but does not describe the output structure or how pagination works. For a list tool with 19 parameters, more completeness is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by providing common filter combinations and highlighting mutual exclusivity, but does not significantly augment the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Lists conversations visible to the authenticated user' and supports multiple filters. It distinguishes from sibling tools like list_contacts and list_teams by focusing on conversations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides common filter combinations and notes mutual exclusivity of email and domain. However, it does not explicitly direct when to use this tool versus other list tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_draftsList DraftsA
Lists drafts in a conversation. Use this to see drafts before sending or to review unsent messages.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | The conversation ID to get drafts from | |
| limit | No | Maximum drafts to return | |
| until | No | Cursor for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, so description must bear full burden. It implies read-only behavior ('see drafts', 'review') but does not explicitly disclose traits like idempotency, auth requirements, or pagination behavior beyond a cursor parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first states purpose, second adds usage context. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing critical information: sort order of drafts, whether full content is returned, and if there are any rate limits or prerequisites. For a tool with no output schema, description should clarify return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description repeats the same parameter descriptions as the schema (e.g., 'The conversation ID to get drafts from'). Adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Lists drafts in a conversation' with specific verb and resource. Adds usage context 'to see drafts before sending or to review unsent messages', distinguishing it from sibling tools like create_draft or delete_draft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use ('to see drafts before sending or to review unsent messages'). However, does not explicitly mention when not to use or suggest alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_organizationsList OrganizationsA
Lists all organizations the authenticated user belongs to. Organizations are the top-level entity in Missive.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden for behavioral disclosure. It clarifies that the operation lists all organizations and implies it is a read operation (no mention of side effects). However, it does not disclose potential behaviors like pagination, ordering, or error conditions. For a zero-parameter tool, this is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two succinct sentences. The first sentence conveys the core function, and the second adds essential context. Every sentence is valuable, and there is no redundancy or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters and no output schema, the description is complete. It explains what the tool does (list organizations), the scope (for the authenticated user), and the role of organizations (top-level entity). No further details are necessary given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% coverage, so the description does not need to explain parameters. The baseline for zero-parameter tools is 4, and the description does not add any parameter-related information beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists organizations for the authenticated user, using the verb 'lists' and specifying the resource 'organizations'. It differentiates from sibling tools (e.g., list_contacts, list_conversations) by noting organizations are the top-level entity, making its purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('lists all organizations the authenticated user belongs to') and provides context ('Organizations are the top-level entity in Missive'). However, it does not explicitly mention situations where this tool should be avoided or alternatives, though no alternatives exist for listing organizations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamsList TeamsB
Lists all teams the authenticated user has access to. Filter by organization if needed.
| Name | Required | Description | Default |
|---|---|---|---|
| organization | No | Filter by organization ID | |
| limit | No | Maximum number of teams to return | |
| offset | No | Offset for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states the function is a list and mentions user access, but omits details like pagination behavior, rate limits, or any side effects. The parameters suggest pagination but the description does not confirm or explain it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences with no unnecessary words. Front-loads the core purpose and adds one optional use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should explain what the returned team objects contain. It fails to describe the structure or fields of the returned data. For a list tool, this is a significant gap that could lead to incorrect usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters. The description adds minimal extra value by restating the organization filter, but does not deepen semantic understanding beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Lists all teams the authenticated user has access to', specifying the verb and resource with a defined scope. It distinguishes from sibling tools like list_organizations and list_users by explicitly naming 'teams'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through scope ('authenticated user') and optional filtering ('Filter by organization if needed'), but does not provide explicit guidance on when to use this tool versus alternatives among the listed sibling tools, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersList UsersA
Lists all users in organizations the authenticated user belongs to. Use this to find user IDs for assignments.
| Name | Required | Description | Default |
|---|---|---|---|
| organization | No | Filter by organization ID | |
| limit | No | Maximum number of users to return | |
| offset | No | Offset for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses authentication scope ('authenticated user belongs to') but does not detail pagination behavior, rate limits, or other facets beyond what the schema implies. The description is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the core function, second provides usage guidance. No wasted words, front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with three optional parameters and no output schema, the description covers the essential purpose, scope, and a typical use case. No additional context is necessary given the sibling tools and schema richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the schema (100% coverage). The tool description adds no additional parameter information, so it meets the baseline without adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'lists', resource 'users', and scope 'in organizations the authenticated user belongs to'. It also provides a specific use case ('find user IDs for assignments'), which distinguishes it from sibling tools like list_contacts or list_organizations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context ('Use this to find user IDs for assignments'), which helps the agent understand when to invoke it. However, it does not explicitly mention when not to use it or compare to alternatives, though the sibling set makes the purpose fairly obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageSend MessageA
Sends an email message. WARNING: This action is IRREVERSIBLE.
The email will be delivered immediately. Before calling:
Confirm recipient addresses are correct
Verify message content is appropriate
Never send to addresses not explicitly provided by the user
Rate limited to 10 sends/minute, 100 sends/hour.
For replies, provide the conversation ID. For new messages, omit it.
| Name | Required | Description | Default |
|---|---|---|---|
| to_fields | Yes | Primary recipients (required) | |
| cc_fields | No | CC recipients | |
| bcc_fields | No | BCC recipients | |
| subject | Yes | Email subject line | |
| body | Yes | Email body (HTML supported) | |
| conversation | No | Conversation ID to reply to (omit for new conversation) | |
| from_field | No | Sender address (uses default if omitted) | |
| attachments | No | File attachments (max 25, total payload max 10MB) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses irreversible action, immediate delivery, and rate limits. This covers key behavioral traits beyond what schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with front-loaded purpose, followed by structured warnings and usage notes. Every sentence adds value, though slightly verbose with bullet points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and good schema coverage, the description provides sufficient context for an agent to call the tool correctly, including rate limits and usage patterns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing thorough parameter descriptions. The description adds minor value by reiterating conversation ID usage but does not significantly expand on schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Sends an email message,' which is a specific verb+resource pair. It distinguishes from siblings like create_draft and draft_reply.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to include or omit conversation ID, includes warnings about irreversible action and rate limits. Lacks explicit mention of alternatives but implies usage patterns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contactUpdate ContactA
Updates an existing contact. Only provided fields will be updated.
WARNING: When updating infos array, you must include ALL items you want to keep. Missing items will be deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The contact ID to update | |
| first_name | No | First name | |
| last_name | No | Last name | |
| middle_name | No | Middle name | |
| nickname | No | Nickname | |
| notes | No | Notes about the contact | |
| starred | No | Star/favorite the contact | |
| infos | No | Contact information - must include ALL items to keep (missing items deleted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses partial update semantics and the destructive behavior of the infos array (missing items deleted). It does not cover permissions or response, but the provided details are relevant and clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-structured sentences. The warning is bolded and placed after the main action. No unnecessary words. Every sentence provides essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers core behavior and a critical usage gotcha. It lacks return value or error details, but for a partial update tool with clear schema, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by explaining the partial update behavior for all optional fields and reinforcing the infos array warning, which goes beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states clearly 'Updates an existing contact', which is a specific verb-resource pairing. It distinguishes from the sibling 'create_contact' by implying mutation of an existing entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains partial update behavior ('Only provided fields will be updated') and includes a critical warning about the infos array, guiding correct usage. However, it does not explicitly state when to prefer this tool over alternatives like create_contact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
19 tool updates
v1.0.0- First observed
create_contact - First observed
create_draft - First observed
create_post - First observed
delete_draft - First observed
draft_reply - First observed
get_contact - First observed
get_conversation - First observed
get_conversation_timeline - First observed
get_message - First observed
list_contact_books - First observed
list_contacts - First observed
list_conversations - First observed
list_drafts - First observed
list_organizations - First observed
list_shared_labels - First observed
list_teams - First observed
list_users - First observed
send_message - First observed
update_contact
TDQS
Scored across 19 tools
Each tool has a clearly distinct purpose, targeting different resources (contacts, drafts, posts, messages, conversations, etc.) with specific actions. The only potential overlap between create_draft and draft_reply is clearly differentiated by descriptions.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_contact, list_conversations, send_message). The pattern is uniform and predictable across all 19 tools.
With 19 tools covering contacts, conversations, messages, drafts, posts, and organizational entities, the count is well-scoped for a comprehensive email collaboration platform. Each tool serves a distinct function without unnecessary redundancy.
Core workflows (messaging, drafting, replying, managing contacts) are well-covered, but some CRUD operations are missing, e.g., delete_contact, update_draft, and administrative operations for organizations, labels, teams, and users. These are minor gaps that agents can typically work around.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
An MCP server that provides email capabilities, hosted on Alpic platform
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceAn MCP server that integrates with Missive App allowing users to create, manage, and send email drafts through AI tools like Claude Desktop or N8N.-
- AlicenseBqualityDmaintenanceAn MCP server that connects Claude to iCloud Mail for reading, searching, sending, and organizing emails through natural language. It supports advanced management tasks like bulk operations, mailbox organization, and automated rules for inbox maintenance.6947 npmMIT
- AlicenseBqualityFmaintenanceMCP server that connects Claude with Gmail to read, send, delete, and manage messages and labels via the Google Gmail API.3MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables Claude to manage Outlook emails, including reading, sending, organizing, drafting, and bulk operations via Microsoft Graph API.15 npm1MIT