Skip to main content
Glama
kanjidoc
by kanjidoc

Missive MCP

An MCP server that connects AI assistants — Claude Desktop and Claude Code — to your Missive team inbox. It gives the assistant 36 tools for contacts, conversations, messages, drafts, posts, shared labels, teams, tasks, and canned responses.

Safe by design. This server can read your inbox, organize it, post internal team comments, and merge conversations — but it cannot send an email or text to anyone outside your team, and it cannot delete anything. missive_create_draft always saves a draft in Missive for a person to review and send; there is no "send" tool and no send parameter.

New here? Follow the friendly step-by-step in SETUP.md — it assumes no prior experience. The rest of this page is the quick reference.


Why it feels turnkey

  • The assistant gets usage instructions at connect time. The server ships MCP instructions (the same channel Claude Desktop uses for built-in tools), so the assistant already knows the rules — which list calls need a mailbox filter, that contacts need a contact_book, that drafts never send, and so on.

  • Every tool is documented at the call site, grounded in the Missive API docs.

  • It documents itself. Ask it to call missive_help (topics: usage, tools, safety, authentication, …) any time.

Related MCP server: IMAP Email MCP Server

Requirements

  • Node.js 18+

  • A Missive personal access token. In Missive: Preferences → API → Create a new token. (Requires an organization on the Missive Productive plan.)

Install

git clone https://github.com/kanjidoc/missive-mcp.git
cd missive-mcp
npm install
cp .env.example .env        # paste your MISSIVE_API_TOKEN
npm run setup               # validates the token, lists your resource IDs
npm run build

npm run setup confirms the token works and prints your organizations, contact books, teams, and users — handy for filling the optional defaults below — then prints a ready-to-paste launcher config.

Configure your client

The launcher config carries only the start command — never your token (the token lives only in .env). Replace the path with your absolute checkout path.

Claude Desktop — add to claude_desktop_config.json:

{
  "mcpServers": {
    "missive": {
      "command": "node",
      "args": ["/absolute/path/to/missive-mcp/dist/index.js"]
    }
  }
}

Claude Code:

claude mcp add-json missive '{"type":"stdio","command":"node","args":["/absolute/path/to/missive-mcp/dist/index.js"]}'

Restart the client, and the missive tools appear.

Configuration (.env)

Only the token is required; the rest are optional defaults so you don't repeat IDs. Find IDs in Missive → Settings → API → Resource IDs, or run npm run setup.

Variable

Required

Purpose

MISSIVE_API_TOKEN

yes

Your missive_pat-… personal access token.

MISSIVE_DEFAULT_ORGANIZATION

no

Default org; org-scoped tools use it when you omit organization.

MISSIVE_DEFAULT_CONTACT_BOOK

no

Default contact book; contact tools use it when you omit contact_book.

MISSIVE_DEFAULT_TEAM

no

Default team for drafts/tasks/posts/messages that omit team.

MISSIVE_DEFAULT_FROM_ADDRESS

no

Default "from" address for drafts (must be one of your Missive aliases).

MISSIVE_DEFAULT_FROM_NAME

no

Display name paired with the default from address.

MISSIVE_DEFAULT_ACCOUNT

no

Default custom-channel account for missive_create_message.

Private roster (optional)

Drop a missive-roster.json next to .env to teach the assistant who your people and teams are, so "assign this to Anj" or "route it to TwoFabianos" resolves to the right Missive IDs with no missive_list_* call. The names and IDs are injected into the server instructions the client reads at connect time. Copy the shape from missive-roster.example.json:

{
  "users": [{ "name": "Ada Lovelace", "id": "00000000-…-000000000001" }],
  "teams": [{ "name": "Engineering", "id": "00000000-…-0000000000a1" }]
}

Each entry is a bare name + id (from Settings → API → Resource IDs, or npm run setup). The file is gitignored — it holds real names and IDs, so it never gets committed. It's entirely optional: with no file, nothing changes. A missing, empty, or malformed file is ignored (logged to stderr), never fatal.


What's not included (and why)

The Missive API can do a few things this server deliberately leaves out. In plain terms:

  • Sending emails or texts to people outside your team. The assistant can write a draft and save it in Missive, but you press send. This is the main safety guardrail — an AI can't fire off a real email on your behalf. (Technically: the drafts endpoint's send / send_at / auto_followup options are not exposed.)

  • Deleting things. There is no tool to delete a contact, draft, post, canned response, or label. The only irreversible action offered is merging two conversations, and it's clearly marked as such.

  • Analytics reports. Missive can generate inbox/team analytics; those are slow, report-style requests that don't fit a back-and-forth assistant, so they're out.

  • Webhooks (real-time event subscriptions). Missive can notify an external app when something happens — that's infrastructure plumbing to set up once, not something an assistant does mid-conversation.

  • A few niche send-time options that only matter when actually sending: scheduled send, automated follow-up sequences, and WhatsApp message templates.

Everything else in the Missive REST API — reading and organizing conversations, contacts, tasks, labels, teams, drafts, and internal posts — is available. Any of the above is a small, self-contained addition if you want it later.


Tools (36)

Read-only tools are marked (ro); safely-repeatable updates (idem); irreversible ones (!). See docs/TOOLS.md for the full parameter reference, and call missive_help with topic: "usage" for recipes.

Contacts

Tool

Does

missive_list_contacts (ro)

List contacts in a contact book (search, order, pagination).

missive_get_contact (ro)

Fetch one contact by UUID.

missive_create_contacts

Create one or more contacts (infos, memberships).

missive_update_contacts (idem)

Update contacts by UUID. ⚠️ infos/memberships replace the whole array.

Contact books & groups

Tool

Does

missive_list_contact_books (ro)

List accessible contact books (find the contact_book id).

missive_list_contact_groups (ro)

List groups/organizations in a contact book (kind = group/organization).

Conversations

Tool

Does

missive_list_conversations (ro)

List conversations — needs a mailbox filter (inbox/all/assigned/… or a label/team id).

missive_get_conversation (ro)

Fetch one conversation by id.

missive_update_conversations (idem)

Close/reopen, move, assign, label, recolor, or rename — without posting.

missive_merge_conversations (!)

Merge one conversation into another. Irreversible.

missive_list_conversation_messages (ro)

List a conversation's messages.

missive_list_conversation_comments (ro)

List a conversation's comments.

missive_list_conversation_drafts (ro)

List a conversation's drafts.

missive_list_conversation_posts (ro)

List a conversation's posts.

Messages

Tool

Does

missive_get_message (ro)

Fetch one or many messages by id (batch with several ids).

missive_list_messages (ro)

Find messages by RFC Message-ID.

missive_create_message

Advanced — inject an incoming custom-channel message (never sends externally).

Drafts & posts

Tool

Does

missive_create_draft

Save a draft (email/SMS/etc.) with optional attachments for manual review — does not send.

missive_create_post

Post an internal comment/note into a conversation (visible to your team). ⚠️ Permanent, notifies the team.

Shared labels

Tool

Does

missive_list_shared_labels (ro)

List shared labels (team-shared conversation tags).

missive_create_shared_labels

Create shared labels.

missive_update_shared_labels (idem)

Update shared labels.

Teams, users & organizations

Tool

Does

missive_list_teams (ro)

List teams.

missive_create_teams

Create teams (org admin/owner only).

missive_update_teams (idem)

Update teams (org admin/owner only).

missive_list_users (ro)

List users across your organizations.

missive_list_organizations (ro)

List your organizations (find the organization id).

Responses (canned replies)

Tool

Does

missive_list_responses (ro)

List canned reply / template responses.

missive_get_response (ro)

Fetch one response by id.

missive_create_responses

Create responses — scoped to an organization xor a user.

missive_update_responses (idem)

Update responses.

Tasks

Tool

Does

missive_list_tasks (ro)

List tasks (filter by state/team/assignee/due; until cursor).

missive_get_task (ro)

Fetch one task by id.

missive_create_task

Create a task, tasked conversation, or subtask.

missive_update_task (idem)

Update a task's fields.

Help

Tool

Does

missive_help (ro)

Self-documentation: overview, usage, tools, safety, authentication, and more.


How the assistant calls it

A few rules the server teaches the model (and worth knowing yourself):

  • missive_list_conversations needs a mailbox filter — a boolean like inbox: true, or an id like shared_label / team_inbox. To filter by who's involved, add exactly one of email / domain / contact_organization.

  • Contacts need a contact_book; org-scoped writes need an organization (set the MISSIVE_DEFAULT_* vars to avoid repeating them).

  • missive_update_contacts replaces the whole infos/memberships array you send — fetch first, then send the full merged array.

  • Replying? Pass conversation or references to missive_create_draft and set subject to "Re: …". If you set MISSIVE_DEFAULT_FROM_ADDRESS, the draft uses it automatically; otherwise the assistant takes the from-address from the thread.

Example recipes (the assistant chains these for you):

  • Triage: missive_list_conversations(inbox: true)missive_update_conversations(close: true, …)

  • Internal note: missive_create_post(markdown: "…") — posts to the team; no email is sent.

  • Draft a reply: missive_get_conversation + missive_list_conversation_messagesmissive_create_draft(conversation, to_fields, subject: "Re: …", body)

  • Merge duplicates: missive_merge_conversations(source_conversation_id, target_conversation_id)

  • Tasks: missive_list_tasks(state: "todo") / missive_create_task / missive_update_task

Rate limits

Missive allows 5 concurrent requests, 300/minute, and 900/15 minutes. The client caps concurrency and automatically retries HTTP 429 honoring Retry-After. For bulk reads, prefer the batch endpoints (e.g. missive_get_message with several ids).

Development

npm run dev     # run with ts-node (no build)
npm run build   # compile to dist/
npm run lint    # eslint
npm test        # vitest
npm run format  # prettier

See CONTRIBUTING.md to add a tool, CLAUDE.md for the architecture and conventions, and SECURITY.md for credential handling. The design rationale lives in docs/superpowers/specs/.

License

MIT © kanjidoc

Available Tools

36 tools
missive_create_contactsA

Create one or more contacts. Body shape { contacts: [...] }. Each contact's contact_book falls back to MISSIVE_DEFAULT_CONTACT_BOOK. Supports names, starred, gender, infos[] (emails/phones/socials/addresses/custom), and memberships[] (organizations/groups).

ParametersJSON Schema
NameRequiredDescriptionDefault
contactsYesOne or more contacts to create.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint: false, indicating non-destructive. The description adds useful behavioral details: the default contact_book fallback and supported subfields (starred, gender, infos, memberships). It does not discuss rate limits or auth, but the annotations reduce the burden.

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 efficient sentences cover the core purpose, key behaviors, and parameter hints. No wasted words; front-loaded with the primary action.

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?

The description is thorough for input details, but it does not mention what the tool returns (e.g., the created contacts or IDs). Since there is no output schema, the description has a gap. A complete description would at least indicate the return type.

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 the schema documents the contacts array. The description adds meaning beyond the schema by explaining the body shape, the default contact_book, and listing supported subfields (infos types, memberships). This helps the agent understand the structure without reading every property.

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 'Create one or more contacts,' a specific action on a specific resource. It distinguishes from siblings like missive_get_contact, missive_update_contacts, etc., by focusing on creation.

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 when to use this tool (for creating contacts), but lacks explicit guidance on when not to use it or alternatives. However, the sibling tool names provide context for choosing between create and update operations.

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

missive_create_draftA

Creates a draft saved in Missive for manual review/sending — it does NOT send. Builds a draft email/SMS/WhatsApp/custom-channel message (in a new conversation, or appended to an existing one via conversation or references) that a human reviews and sends from the Missive app. The send-related parameters (send, send_at, auto_followup) are intentionally NOT available, so this tool can never transmit a message.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoHTML or text body of the message. Note: for paragraph spacing in Missive use <div>…</div> blocks separated by <div><br></div> rather than <p> tags.
teamNoTeam ID to link the draft's conversation to. Ignored if the conversation is already linked to a team.
closeNoClose the draft's conversation for everyone.
accountNoAccount ID for custom channel, Missive Live Chat, Messenger or Instagram drafts (Settings > API > Resource IDs).
subjectNoEmail subject, passed verbatim to the outgoing email. When replying, set to 'Re: [original subject]' so recipient clients thread it correctly.
add_usersNoUser IDs to grant access. Requires `organization` (explicit or MISSIVE_DEFAULT_ORGANIZATION).
cc_fieldsNoCC recipients (email only). Array of {address, name?} objects.
to_fieldsNoPrimary recipients. Array of recipient objects (shape depends on channel).
bcc_fieldsNoBCC recipients (email only). Array of {address, name?} objects.
force_teamNoWhen true, force the `team` even if the conversation is already in another team.
from_fieldNo
referencesNoMessage-ID/References header strings used to locate and append this draft to an existing conversation (chevrons optional). If none match, a new conversation is created.
attachmentsNoFiles to attach (up to 25). Each: base64_data (base64-encoded contents) and filename.
add_to_inboxNoWhen true, move the draft's conversation to Inbox for everyone with access.
conversationNoID of an existing Missive conversation to append this draft to (alternative to `references`).
organizationNoOrganization UUID. Scopes the conversation search and links new conversations to that organization. Defaults to MISSIVE_DEFAULT_ORGANIZATION. REQUIRED when `add_shared_labels` is used.
add_assigneesNoUser IDs to assign. Requires `organization` (explicit or MISSIVE_DEFAULT_ORGANIZATION).
remove_assigneesNoUser IDs to unassign. Requires `organization` (explicit or MISSIVE_DEFAULT_ORGANIZATION).
add_shared_labelsNoShared label IDs to apply to the draft's conversation. Requires `organization` (explicit or MISSIVE_DEFAULT_ORGANIZATION).
add_to_team_inboxNoWhen true, move the conversation to a team inbox. Requires `team`.
conversation_colorNoConversation color: a HEX code (e.g. '#000') or one of 'good', 'warning', 'danger'.
conversation_subjectNoSubject for the conversation in Missive (the internal conversation title).
remove_shared_labelsNoShared label IDs to remove from the draft's conversation.
quote_previous_messageNoWhen true, include a quoted copy of the conversation's last message in the draft. DANGER: when appending to an existing conversation (via `conversation`/`references`) this embeds the previous message's body and can leak sensitive content. Leave false unless you fully control and have visibility into the conversation. Defaults to false.

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses that the tool never sends messages, warns about sensitive content leakage with quote_previous_message, and explains how conversations are created or appended. This adds value beyond the annotations (destructiveHint: false) by providing safety context. However, it does not cover all potential behaviors like error handling 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.

Conciseness4/5

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

The description is a single, well-structured paragraph that front-loads the key point (does not send). It is concise given the tool's complexity (24 parameters) and includes essential warnings and usage notes without being verbose.

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?

The description covers key behaviors: draft creation, non-sending, channel support, new vs existing conversations, attachment limits, and important warnings. While it lacks output details (no output schema), it provides sufficient context for an AI agent to use the tool correctly.

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 96% schema coverage, the schema already describes most parameters. The description adds meaningful context, such as the warning for quote_previous_message and the explanation of references and conversation. This supplements the schema without redundancy.

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 creates a draft for manual review/sending and explicitly says it does NOT send. It distinguishes from sending tools by noting send-related parameters are unavailable, and it supports multiple channels, making the purpose specific and unambiguous.

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 for drafts that require human review, and explicitly states that it cannot transmit messages. However, it does not directly compare to sibling tools like missive_create_message, which sends messages, leaving some ambiguity about when to use each. A brief contrast would improve clarity.

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

missive_create_messageA

ADVANCED — custom channels only. Creates an INCOMING message record (a simulated inbound message) inside a Missive custom channel; it NEVER transmits anything externally and is NOT an email send. To actually send an email, use the Drafts endpoint with send (not exposed by this server). from_field is required; account (the custom-channel account ID) falls back to MISSIVE_DEFAULT_ACCOUNT.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoMessage body — HTML or plain text depending on the channel message type.
teamNoTeam ID to link the conversation to (ignored if the conversation already has a team).
closeNoClose the message's conversation for everyone with access.
accountNoCustom-channel account ID (found in the custom channel settings). Falls back to MISSIVE_DEFAULT_ACCOUNT.
subjectNoEmail-channel only: message subject.
add_usersNoUser IDs to grant access to the conversation. Requires `organization`.
cc_fieldsNoEmail-channel only: CC recipients ([{ address, name }]).
to_fieldsNoRecipients. Email channel: [{ address, name }]. Text/HTML channel: [{ id, username, name }].
bcc_fieldsNoEmail-channel only: BCC recipients ([{ address, name }]).
force_teamNoForce a new team even if the conversation is already in another team.
from_fieldYesRequired. The message sender. Email channel: { address, name }. Text/HTML channel: { id, username, name }.
referencesNoReference strings used to append this message to an existing conversation (matched against prior external_id/references). If none match, a new conversation is created.
attachmentsNoFiles to attach. Total request payload must not exceed 10 MB.
external_idNoUnique ID identifying non-email messages (SMS, Instagram DMs, etc.).
add_to_inboxNoMove the conversation to Inbox for everyone with access.
conversationNoID of an existing conversation to append this message to (alternative to references).
delivered_atNoDelivery timestamp (Unix seconds). If omitted, delivered-at is set to request time.
organizationNoOrganization ID. Scopes the conversation search and links a newly created conversation. REQUIRED when using add_users / add_assignees / remove_assignees.
add_assigneesNoUser IDs to assign to the conversation (existing assignees remain). Requires `organization`.
remove_assigneesNoUser IDs to unassign from the conversation. Requires `organization`.
add_shared_labelsNoShared-label IDs to apply to the message's conversation.
add_to_team_inboxNoMove the conversation to a team inbox. Requires `team`.
conversation_colorNoConversation color: a HEX code (e.g. "#000") or one of "good" / "warning" / "danger".
conversation_subjectNoSubject to set on the conversation.
remove_shared_labelsNoShared-label IDs to remove from the message's conversation.

TDQS

A4.5/5.0
Behavior4/5

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

The description adds transparency beyond the annotation (destructiveHint=false) by explaining that the tool creates a simulated inbound message, never transmits externally, and is not an email send. It also notes the fallback behavior for the 'account' parameter.

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, conveying essential information in three sentences. It avoids unnecessary fluff, though could be slightly more structured by separating the warning from the usage notes.

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 complexity (25 parameters, no output schema), the description covers the core purpose, usage constraints, and key parameter details. It does not describe the return value, but the schema and context signals compensate. Overall, it provides sufficient context for correct invocation.

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?

While the input schema already covers all 25 parameters with descriptions (100% coverage), the description adds extra context for key parameters like 'from_field' (required) and 'account' (fallback to default), and clarifies channel-type variations for message fields.

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 creates an INCOMING message record in a Missive custom channel, and explicitly distinguishes it from sending an email. It names the alternative endpoint (Drafts) and specifies it never transmits externally.

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?

The description starts with 'ADVANCED — custom channels only', providing immediate usage context. It explicitly says when to use (custom channels) and when not to (not for email sending), and directs to the correct alternative for sending emails.

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

missive_create_postA
Destructive

Creates a post in a Missive conversation (POST /posts). A post is the recommended way for an automation to inject content and manage conversation state (close/reopen, move to inbox, assign users, add labels, set color) while leaving a visible trace. WARNING: the post is PERMANENT and VISIBLE to everyone with access to the conversation, creating it can send NOTIFICATIONS to those people, and it CANNOT be undone through this server (no delete tool is exposed). At least one of text, markdown, or attachments is required. If no conversation or matching references is given, a new conversation is created.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoTeam ID to link the conversation to. Required when add_to_team_inbox is true.
textNoMain message of the post as plain text (max 8000 chars). At least one of text, markdown, or attachments is required.
closeNoIf true, close the conversation for everyone with access.
reopenNoIf true, keep a closed conversation closed even after adding this post (prevents auto-reopen).
markdownNoMain message of the post formatted with Markdown (max 8000 chars). At least one of text, markdown, or attachments is required.
usernameNoName of the post author, used instead of the API token owner's name.
add_usersNoUser IDs to grant access to the conversation. Requires `organization`.
force_teamNoIf true, move the conversation to `team` even if it is already in another team.
referencesNoReference strings (e.g. email Message-ID values) used to append the post to an existing conversation; chevrons are optional. If none match, a new conversation is created.
attachmentsNoArray of attachment objects: either formatted blocks (color/title/text/fields/etc.) or binary file attachments ({ base64_data, filename }). At least one of text, markdown, or attachments is required.
add_to_inboxNoIf true, move the conversation to Inbox (unarchive) for everyone with access.
conversationNoID of an existing conversation to append this post to. If omitted (and no matching references), a new conversation is created.
notificationNoOptional notification object with `title` and `body`, used to render the notification shown to recipients.
organizationNoOrganization ID. Required when using add_users, add_assignees, or remove_assignees. Also scopes conversation search and links a newly created conversation to the organization.
add_assigneesNoUser IDs to assign to the conversation (existing assignees remain). Requires `organization`.
username_iconNoImage URL of the post author, used instead of the API token owner's avatar.
remove_assigneesNoUser IDs to unassign from the conversation. Requires `organization`.
add_shared_labelsNoShared label IDs to apply to the post's conversation.
add_to_team_inboxNoIf true, move the conversation to a team inbox for everyone with access. Requires `team`.
conversation_iconNoImage URL used as the icon in the conversation list.
conversation_colorNoConversation color: a HEX code (e.g. "#000") or one of "good", "warning", "danger".
conversation_subjectNoSubject for the conversation, e.g. "New user!".
remove_shared_labelsNoShared label IDs to remove from the post's conversation.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description details that posts are permanent, visible to all, send notifications, cannot be undone (no delete tool), and can create new conversations. This provides critical behavioral context beyond the binary flag.

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, starting with the core purpose, followed by the warning and requirement, all in short, clear sentences. Every sentence adds necessary information without redundancy.

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 complexity of 23 parameters, no output schema, and side effects like permanence and notifications, the description covers key behavioral aspects, constraints, and creation logic. It is complete for an agent to understand the tool's impact and requirements.

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 100% schema description coverage, the schema already documents all parameters. The description adds a summary of the text/markdown/attachments requirement and conditional new conversation creation, but does not significantly enrich individual parameter understanding 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 it creates a post in a Missive conversation, uses specific verbs like 'inject content and manage conversation state', and distinguishes itself from sibling creation tools by emphasizing its role as the recommended automation method for state changes while leaving a visible trace. The warning about permanence further clarifies its unique purpose.

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 explicitly says when to use this tool ('recommended way for automation to inject content and manage conversation state') and warns about permanence and notifications, implying avoidance for reversible actions. It also states that missing conversation/references creates a new conversation. However, it does not name specific alternative tools for reversible cases.

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

missive_create_responsesA

Creates one or more responses (reusable canned reply / email templates). Body shape { responses: [...] }. Each response must be scoped to EITHER an organization (shared) OR a user (personal) — exactly one, never both; organization falls back to MISSIVE_DEFAULT_ORGANIZATION only when no user is given. Title is optional. Provide body, subject, default recipients, attachments, and external sync IDs as needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
responsesYesThe responses to create (at least one).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only include destructiveHint: false. Description adds important behavioral context: exclusive scoping rule and fallback to default organization. No mention of authorization or side effects, but acceptable for a create tool.

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

Conciseness5/5

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

Two concise sentences. First sentence states purpose, second adds critical scoping details. No fluff.

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?

Tool has one parameter (array) and no output schema. Description covers input structure, scoping, and optional fields adequately. Could mention return value, but not required.

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 baseline is 3. Description adds value by clarifying the scoping constraint and optionality of title, which goes beyond what the schema provides.

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?

Description clearly states it creates responses (reusable canned replies/email templates), which distinguishes it from other create tools like missive_create_contacts. Verb 'creates' and resource 'responses' are specific.

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?

Provides clear scoping rules (organization vs user) and fallback behavior, guiding when to use this tool. However, does not explicitly say when not to use it compared to alternatives.

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

missive_create_shared_labelsA

Creates one or more shared labels (folder-like, team-shared conversation tags). Each label requires a name and an organization (organization falls back to MISSIVE_DEFAULT_ORGANIZATION). Optionally set color, a parent label, and sharing options.

ParametersJSON Schema
NameRequiredDescriptionDefault
shared_labelsYesThe shared labels to create (at least one).

TDQS

A4.2/5.0
Behavior3/5

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

Annotations only indicate destructiveHint: false. The description adds that creating labels is non-destructive and mentions the fallback for organization. However, it does not disclose other behavioral traits like rate limits, auth requirements, or behavior on duplicate labels.

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, well-structured sentence that covers the tool's purpose, required parameters, optional parameters, and a default value. Every part adds value without redundancy.

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 moderate complexity (array of objects with multiple optional fields), the description is fairly complete. It covers all key aspects but lacks details on return values or error handling, which are not provided by an output schema.

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 schema has high coverage for the outer array but lacks individual descriptions for nested properties. The description compensates by listing all optional fields (color, parent, sharing options) and noting the fallback for organization, adding meaning beyond the raw 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 creates one or more shared labels, specifying their nature as 'folder-like, team-shared conversation tags.' It lists required and optional fields, distinguishing it from sibling create tools.

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 explicitly says when to use the tool (creating shared labels) but does not provide guidance on when not to use it or alternatives. The context of sibling tools makes the purpose clear, but explicit exclusions would improve the score.

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

missive_create_taskA

Creates a task in Missive (standalone task, tasked conversation, or a subtask inside a conversation). Tasks created via the API appear in the Tasks view, not the Inbox. title is required; organization is required when using team, assignees, or add_users (defaults to MISSIVE_DEFAULT_ORGANIZATION); a subtask requires conversation or references.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoTeam ID to assign the task to. For a standalone task, either `team` or `assignees` is required.
stateNoInitial task state: 'todo', 'in_progress', or 'closed'. Defaults to 'todo'.
titleYesTask title (required, max 1000 characters).
due_atNoUnix timestamp for when the task is due.
subtaskNoSet true to create this task as a subtask inside a conversation. Requires `conversation` or `references`.
add_usersNoUser IDs to add to the parent conversation (subtasks only). Requires `organization`.
assigneesNoArray of user IDs to assign the task to. For a standalone task, either `team` or `assignees` is required.
referencesNoMessage references (e.g. email Message-IDs) used to find or create the parent conversation for a subtask, as an alternative to `conversation`.
descriptionNoTask description, plain text (max 10000 characters).
add_to_inboxNoSet true to move the parent conversation to the Inbox for everyone with access (subtasks only).
conversationNoParent conversation ID for a subtask (required when `subtask` is true).
organizationNoOrganization ID. Required when using `team`, `assignees`, or `add_users`. Defaults to MISSIVE_DEFAULT_ORGANIZATION if set.
conversation_subjectNoSubject for the parent conversation when creating it via `references` (only used when a new conversation is created).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only have destructiveHint: false. The description adds that tasks appear in Tasks view, not Inbox, and clarifies subtask requirements. It does not contradict annotations and provides useful 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?

Two sentences, no fluff. The first sentence establishes purpose, the second covers key constraints and defaults. Every sentence adds value and is well-structured.

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 no output schema, the description does not explain return values, but it covers all necessary behavioral and parameter context for a create tool. It is complete enough for an agent to use correctly.

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?

Input schema has 100% coverage, baseline 3. The description adds meaning beyond schema by explaining defaults (organization), dependencies (subtask requires conversation/references), and usage of parameters like add_users and conversation_subject, earning an extra point.

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 creates tasks in Missive, specifying three types (standalone task, tasked conversation, subtask). It uses a specific verb-resource combo and distinguishes from sibling tools like missive_create_draft and missive_create_message by focusing on task creation.

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?

Provides context on when to create a subtask vs standalone, and notes required parameters like organization. However, it does not explicitly compare to other create tools or state when not to use this tool, leaving some ambiguity.

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

missive_create_teamsA

Creates one or more teams in an organization. The API token must belong to an admin or owner of the organization. Each team requires name and organization (organization falls back to MISSIVE_DEFAULT_ORGANIZATION). Body shape: { teams: [...] }.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamsYesOne or more teams to create.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=false. Description adds token requirement but doesn't disclose other behavioral traits (e.g., what happens on duplicate team names, limits on number of teams).

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, first sentence states purpose, second adds prerequisite and high-level body shape. No unnecessary 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?

Given many optional nested parameters and no output schema, description does not cover important details like defaults, validation rules, or response format. Adequate but not complete for a complex 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?

Description adds meaning beyond schema by clarifying that 'organization' falls back to MISSIVE_DEFAULT_ORGANIZATION and that 'name' is required. Schema coverage is high but nested properties lack descriptions; this guidance aids agent usage.

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?

Description states 'Creates one or more teams in an organization' with a specific verb and resource. It clearly distinguishes from other 'create' tools like create_contacts or create_draft.

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?

Mentions prerequisite that API token must belong to admin/owner, and hints at when to use (creating teams). Does not explicitly state when not to use or compare to alternatives.

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

missive_get_contactA
Read-only

Fetch a single contact by its UUID. A deleted contact returns 404. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYesUUID of the contact to fetch.

TDQS

A4/5.0
Behavior4/5

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

The description clearly states it is read-only, matching the readOnlyHint annotation, and adds that a deleted contact returns 404, providing useful behavioral context beyond 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 two short sentences, front-loaded with the action, and every word adds value without redundancy.

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?

The description conveys the essential behavior and read-only nature, but lacks explicit mention of the return format (e.g., the contact object), which could be helpful given no output schema.

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 only parameter, contact_id, is described in the schema as 'UUID of the contact to fetch,' and the description adds 'by its UUID' which overlaps. With 100% schema coverage, baseline 3 is appropriate.

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 explicitly states 'Fetch a single contact by its UUID,' using a specific verb and resource, and distinguishes from sibling tools like missive_list_contacts which fetches multiple contacts.

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 a UUID is available but does not explicitly contrast with alternatives like missive_list_contacts or provide guidance on 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.

missive_get_conversationA
Read-only

Fetches a single conversation by ID (GET /conversations/:id). If the conversation was merged, the current (merged) conversation is returned and its id may differ from the one passed. Read-only. Conversations where you are only a guest return just id and last_activity_at.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesThe conversation UUID to fetch.

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description adds significant behavioral context: merged conversations return a different id, and guest access returns minimal fields. This helps the agent anticipate edge cases.

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?

Three concise sentences, each adding distinct value: core action, merged behavior, guest limitation. No redundant or filler content.

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?

Lacks output schema, but description covers key behaviors. However, for a retrieval tool, more detail on the full response structure 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 schema covers the parameter fully (100% coverage). The description adds no additional meaning to 'conversation_id' beyond what's in the schema, so baseline 3 is appropriate.

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 'Fetches', the resource 'single conversation', and the HTTP method. It explains key behaviors (merged conversation, guest access), making purpose unambiguous and distinguishing it from sibling tools like missive_get_message.

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 explicit guidance on when to use this tool vs alternatives. While the description hints at special cases (merged, guest), it lacks a direct statement of context or exclusions.

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

missive_get_messageA
Read-only

Fetch one or more Missive messages (headers, body, attachments, and parent conversation) by message id. Pass one id for a single message or several ids to batch-fetch them in one call. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idsYesOne or more message IDs to fetch. Multiple IDs are batched into a single request.

TDQS

A4.2/5.0
Behavior4/5

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

The description adds context beyond the readOnlyHint annotation by specifying exactly what data is fetched (headers, body, attachments, parent conversation). This aligns with and supplements the annotation.

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, front-loaded with the core purpose. Every word is valuable, and the structure is optimal.

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 simple one-parameter read-only tool, the description covers purpose, parameter usage, and content returned. While no output schema, the description is sufficiently 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?

With 100% schema description coverage, the description adds no new meaning beyond the schema. The baseline of 3 is appropriate as the schema already documents the parameter clearly.

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 'Fetch' and the resource 'Missive messages' with specific details (headers, body, attachments, parent conversation). It also mentions batch fetching, distinguishing it from listing tools.

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 usage guidance: pass one id for single message or several ids for batch. While it doesn't explicitly state when not to use, the context is clear enough given the sibling tools.

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

missive_get_responseA
Read-only

Fetches a single response (canned reply template) by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_idYesID of the response to fetch.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true. Description states 'Fetches', which is consistent. No additional behavioral traits are disclosed beyond what annotations provide, so 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?

Single sentence with no extraneous words. Front-loaded with verb and resource. Every word earns its place.

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 tool simplicity (1 param, no output schema), description is complete. It explains purpose and parameter sufficiently for correct selection and invocation.

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

Parameters3/5

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

Schema coverage is 100% with parameter description 'ID of the response to fetch.' Description adds context 'canned reply template' but adds no new syntax or constraints beyond schema. Baseline 3 as schema does the work.

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?

Description clearly states verb 'Fetches', resource 'single response (canned reply template)', and mechanism 'by its ID'. Distinguishes from sibling missive_list_responses which lists all responses.

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 explicit guidance on when to use this tool versus alternatives. While context implies use when a specific response ID is known, the description lacks any when-to-use or when-not-to-use information.

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

missive_get_taskA
Read-only

Gets a single task by ID, with full details including expanded assignee and team objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesID of the task to retrieve.

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true. The description adds value by detailing the expanded objects (assignee, team), which informs the agent about the response structure beyond the read-only nature.

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?

A single, concise sentence that front-loads the key action and distinguishing details, with no wasted words.

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 simplicity of the tool and the presence of sibling tools for listing tasks, the description adequately covers the tool's purpose. It mentions the expanded objects, though without an output schema, could be more explicit about 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?

Schema coverage is 100% with a clear description of task_id. The description does not add additional parameter 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.

Purpose5/5

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

The description clearly states the verb ('Gets'), resource ('a single task by ID'), and distinguishes from sibling tools like missive_list_tasks by emphasizing 'full details including expanded assignee and team objects'.

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?

No explicit directive on when to use this tool vs. alternatives like missive_list_tasks or missive_update_task. Usage is implied but not contrasted.

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

missive_helpA
Read-only

Returns embedded documentation about this Missive MCP server — overview, architecture, the full tool inventory, authentication, safety guarantees (it cannot send email or delete records), conventions, how to add tools, troubleshooting, and the installed version. Call this to understand the project or answer 'what version do I have?'.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoWhich documentation section to retrieve. 'index' lists all sections.index

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces this by noting safety guarantees: 'it cannot send email or delete records'. This adds context beyond the annotation, making the tool's behavior transparent. No other behavioral traits (e.g., rate limits, return format) are disclosed, but for a documentation tool this is sufficient.

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

Conciseness4/5

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

The description is a single, clear sentence that efficiently communicates purpose and content. It is front-loaded with the main action and then elaborates with specifics. It could be slightly more concise, but it avoids unnecessary verbosity. A 4 reflects good conciseness with minimal waste.

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 tool with one enum parameter, readOnly annotations, and no output schema, the description covers the purpose, topic range, safety guarantees, and typical use case. It does not detail the return format or structure of documentation, but that is reasonable for a help tool. Overall, it is adequately 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 coverage is 100% (the only parameter 'topic' is fully described with enum, default, and description). The description does not add additional meaning beyond what the schema provides; it merely lists some topics in the text. Baseline 3 is correct because the schema already carries the semantic load.

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 returns embedded documentation about the Missive MCP server, listing specific content areas like overview, architecture, tool inventory, and safety guarantees. It also gives a concrete use case: 'understand the project or answer what version do I have?' This fully distinguishes it from sibling tools that perform CRUD operations.

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 explicitly says to call this tool to understand the project or check the version, which provides clear guidance on when to use it. It does not explicitly state when not to use it, but given the sibling tools are all action-oriented, the context is sufficient. A 4 is appropriate as it lacks explicit exclusion phrases but still offers strong implicit guidance.

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

missive_list_contact_booksA
Read-only

Lists the contact books the API token owner can access (id, name, user, organization, sharing flags, description, and import status). Use this to find the contact_book id required when creating contacts. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of contact books to return. Default 50, max 200.
offsetNoOffset used to paginate results. Default 0.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description confirms 'Read-only.' Beyond that, it adds behavioral details about what fields are returned (id, name, user, etc.), which is valuable context for the agent.

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 consists of two concise sentences: the first states the action and output, the second provides usage guidance. No extraneous information.

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?

For a simple list operation with only pagination parameters and no output schema, the description covers purpose, use case, returned fields, and safety. It is fully adequate for the agent to use the tool correctly.

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 100% for both parameters (limit, offset) with clear descriptions. The tool description does not add any parameter-related information, so it meets the baseline for high schema coverage without enhancing it.

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 'lists' 'contact books' and specifies the returned fields (id, name, etc.). It differentiates from siblings like missive_list_contacts and missive_create_contacts by focusing on contact books specifically.

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 explicitly advises to use this tool 'to find the contact_book id required when creating contacts,' providing clear context. It does not list alternatives or when not to use, but the single explicit use case is sufficient given no sibling tool serves the same purpose.

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

missive_list_contact_groupsA
Read-only

Lists the contact groups or organizations linked to a contact book (GET /contact_groups). Provide kind = 'group' (labels for unrelated contacts) or 'organization' (related contacts such as a business). contact_book is required (or set MISSIVE_DEFAULT_CONTACT_BOOK). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesWhich kind to list: 'group' (labels grouping unrelated contacts) or 'organization' (related contacts, e.g. businesses). Required.
limitNoNumber of contact groups to return. Default 50, max 200.
offsetNoOffset used to paginate results. Default 0.
contact_bookNoContact book ID to list groups from. Required; falls back to MISSIVE_DEFAULT_CONTACT_BOOK when omitted.

TDQS

A4.2/5.0
Behavior3/5

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

The description is consistent with the readOnlyHint annotation, stating 'Read-only.' It adds the GET method and parameter distinctions but no additional behavioral traits such as authentication requirements or side effects. With annotations already covering safety, the description provides marginal extra transparency.

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

Conciseness5/5

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

The description is two efficient sentences with no redundancy. It front-loads the purpose and immediately provides actionable parameter details, making it easy for an agent to parse and use.

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?

The tool has 4 parameters, all described in the schema. The description covers the key distinctions and required fields. While pagination (limit, offset) is not mentioned, it is detailed in the schema, so the description is largely complete for a read-only listing tool. A mention of pagination behavior would improve completeness but is not critical.

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 description coverage is 100%, so baseline is 3. The description adds value by explaining the semantics of 'kind' (labels for unrelated contacts vs. related contacts) and the fallback mechanism for 'contact_book' (MISSIVE_DEFAULT_CONTACT_BOOK), 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.

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 action ('Lists'), resource ('contact groups or organizations'), and references the HTTP endpoint. It distinguishes between two kinds (group vs. organization), which differentiates usage and sets it apart from sibling tools like missive_list_contacts.

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 guidance on when to use each value of 'kind' and notes that 'contact_book' is required (or defaults). It does not explicitly state when not to use the tool, but given the absence of similar sibling tools for contact groups, the context is sufficient.

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

missive_list_contactsA
Read-only

List contacts in a contact book. Requires contact_book (or MISSIVE_DEFAULT_CONTACT_BOOK). Supports search, order, limit (max 200), offset, modified_since, and include_deleted. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of contacts to return. Default 50, max 200.
orderNoSort order: 'last_name' (default) or 'last_modified' (most recently updated first).last_name
offsetNoOffset for pagination (default 0).
searchNoText filter matched against all contact infos (name, email, phone, organization, custom fields, notes, etc.).
contact_bookNoContact book UUID to list from. Falls back to MISSIVE_DEFAULT_CONTACT_BOOK; required (errors if neither is set).
modified_sinceNoUnix epoch seconds; return only contacts created/modified since this time.
include_deletedNoWhen used with `modified_since`, include deleted contacts (they return only id, deleted, and modified_at). Default false.

TDQS

A3.7/5.0
Behavior4/5

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

The description discloses behavioral traits beyond the readOnlyHint annotation: it lists supported parameters like search, order, limit (max 200), offset, modified_since, include_deleted. This provides functional boundaries. No contradictions with 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: first sentence states purpose and requirement; second lists parameters and read-only hint. Very efficient, front-loaded, no fluff or redundancy.

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, the description does not indicate return structure (e.g., array of contact objects, pagination info). It also omits error cases (e.g., missing contact_book). For a list operation with 7 parameters, it is moderately complete but could add output 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 100%, so the description's parameter enumeration adds little new meaning. It restates the schema's field list without clarifying format, constraints, or interactions beyond what's already defined.

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', resource 'contacts', and context 'in a contact book'. It also mentions requirement for contact_book. However, it does not explicitly differentiate from sibling tools like missive_get_contact, though the list vs single distinction is implicit.

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 notes that a contact_book is required and that the operation is read-only, but lacks explicit guidance on when to use this tool versus alternatives (e.g., missive_get_contact for a single contact, missive_search_contacts if exists). No 'when not to use' or 'see also' references.

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

missive_list_conversation_commentsA
Read-only

Lists comments in a conversation (GET /conversations/:id/comments), newest first. Paginate with until = created_at of the oldest comment from the previous page. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of comments to return. Default 10, max 10.
untilNoUnix timestamp: the `created_at` of the oldest comment from the previous page.
conversation_idYesThe conversation UUID to list comments from.

TDQS

A4.4/5.0
Behavior4/5

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

Adds ordering ('newest first') and pagination behavior beyond the readOnlyHint annotation. No contradictions; reinforces safety.

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, no redundant words. Each piece of information is purposeful and front-loaded.

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?

Covers core action, pagination, and idempotency. A bit more detail on return format would be helpful but is not critical given the tool's simplicity.

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 covers all parameters; description adds practical pagination guidance for 'until' and 'limit' max 10, enhancing usability beyond raw 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 it lists comments in a conversation, specifying the exact HTTP endpoint. It distinguishes itself from sibling tools by focusing on comments, a distinct sub-resource.

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?

Provides pagination instructions using the 'until' parameter and notes the tool is read-only. Does not explicitly compare to alternatives, but the purpose is unambiguous.

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

missive_list_conversation_draftsA
Read-only

Lists draft messages in a conversation (GET /conversations/:id/drafts), newest first. Paginate with until = delivered_at of the oldest draft from the previous page. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of drafts to return. Default 10, max 10.
untilNoUnix timestamp: the `delivered_at` of the oldest draft from the previous page.
conversation_idYesThe conversation UUID to list drafts from.

TDQS

A4.4/5.0
Behavior4/5

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

Description adds pagination and ordering details beyond the readOnlyHint annotation. Discloses that operation is read-only, consistent with annotation.

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. Critical information (endpoint, ordering, pagination, read-only) is front-loaded and succinct.

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?

Adequate for a simple list tool with no output schema. Explains how to paginate and what parameters do. Slightly lacking in describing return format, but acceptable.

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 already describes all parameters (100% coverage). Description adds value by explaining the pagination pattern with `until` as a cursor, which is not fully clear from schema alone.

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?

Clearly states it lists draft messages in a conversation, specifies REST endpoint, ordering (newest first), and pagination. Distinguishes from sibling tools like missive_list_conversation_messages by focusing on drafts.

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?

Provides pagination instructions and notes read-only nature, which helps in proper invocation. However, does not explicitly guide when to use this vs other list-conversation tools.

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

missive_list_conversation_messagesA
Read-only

Lists messages in a conversation (GET /conversations/:id/messages), newest first; draft messages are excluded. Paginate with until = delivered_at of the oldest message from the previous page. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of messages to return. Default 10, max 10.
untilNoUnix timestamp: the `delivered_at` of the oldest message from the previous page.
conversation_idYesThe conversation UUID to list messages from.

TDQS

A4.2/5.0
Behavior4/5

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

Adds context beyond readOnlyHint annotation: specifies GET method, ordering, draft exclusion, pagination method. No contradictions with 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 front-loaded sentences with no redundant content. Efficiently conveys purpose, ordering, exclusion, and pagination.

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?

Covers ordering, draft exclusion, and pagination. Lacks error/rate limit info but sufficient for a simple read-only tool with good schema coverage.

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 covers all parameters with descriptions (100% coverage). Description restates pagination method for `until` but does not add new information beyond 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?

Clearly states it lists messages in a conversation, with ordering (newest first) and explicit exclusion of drafts. Distinguishes from sibling tools like missive_list_conversation_drafts.

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?

Specifies draft messages are excluded, guiding usage away from this tool for drafts. Mentions pagination with `until`. However, does not explicitly name alternatives or when not to use.

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

missive_list_conversation_postsA
Read-only

Lists posts in a conversation (GET /conversations/:id/posts), newest first. Paginate with until = created_at of the oldest post from the previous page. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of posts to return. Default 10, max 10.
untilNoUnix timestamp: the `created_at` of the oldest post from the previous page.
conversation_idYesThe conversation UUID to list posts from.

TDQS

A4.2/5.0
Behavior4/5

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

The annotation already indicates read-only, and the description adds pagination behavior ('Paginate with `until` = `created_at` of the oldest post from the previous page'). No contradictions; additional context beyond annotation is provided.

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, the second provides pagination detail. Front-loaded and efficient.

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 lack of output schema, the description is adequate for a list tool. However, it does not mention the structure of the returned posts (e.g., whether full objects or IDs), which could be inferred from sibling tools. Minor gap.

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%, but the description adds semantic meaning to the `until` parameter by explaining its role in pagination, which is not fully captured in the schema description alone.

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 lists posts in a conversation, specifies ordering (newest first), and provides the HTTP endpoint. This differentiates it from siblings like missive_list_conversation_comments and missive_list_conversation_messages by targeting 'posts' specifically.

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 pagination instructions but does not explicitly state when to use this tool versus alternatives (e.g., when to use missive_list_conversation_messages instead). Usage is implied but lacks exclusion guidance.

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

missive_list_conversationsA
Read-only

Lists conversations visible to the API-token user (GET /conversations), newest activity first. REQUIRES at least one mailbox filter: a boolean (inbox, all, assigned, closed, snoozed, flagged, trashed, junked, drafts) or an ID filter (shared_label, team_inbox, team_closed, team_all). organization is an optional filter (falls back to MISSIVE_DEFAULT_ORGANIZATION, omitted otherwise). email/domain/contact_organization are mutually exclusive. Paginate with until = last_activity_at of the oldest conversation from the previous page. Read-only. Conversations where you are only a guest return just id and last_activity_at.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoPass true to list conversations in the All mailbox.
emailNoFilter by a specific contact email address (e.g. user@example.com). Mutually exclusive with `domain` and `contact_organization` — pass at most one of the three.
inboxNoPass true to list conversations in the Inbox.
limitNoNumber of conversations to return. Default 25, max 50.
untilNoUnix timestamp used to paginate: the `last_activity_at` of the oldest conversation from the previous page.
closedNoPass true to list conversations in Closed.
domainNoFilter by contacts from an email domain (e.g. example.com, no leading @). Mutually exclusive with `domain` and `contact_organization` — pass at most one of the three.
draftsNoPass true to list conversations in Drafts.
junkedNoPass true to list conversations in Spam (a.k.a. Junk).
flaggedNoPass true to list conversations in Starred (flagged).
snoozedNoPass true to list conversations in Snoozed.
trashedNoPass true to list conversations in Trash.
assignedNoPass true to list conversations assigned to the user.
team_allNoTeam ID. List conversations in the team's All mailbox.
team_inboxNoTeam ID. List conversations in the team's Inbox.
team_closedNoTeam ID. List conversations in the team's Closed mailbox.
organizationNoOptional organization ID filter. Falls back to MISSIVE_DEFAULT_ORGANIZATION; omitted entirely when neither is set. No effect when a shared_label or team_ filter is used.
shared_labelNoShared label ID. List conversations carrying this shared label.
contact_organizationNoContact organization/group UUID to filter by. Mutually exclusive with `domain` and `contact_organization` — pass at most one of the three.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and description adds that guest users only get id and last_activity_at. Also states 'Read-only', reinforcing the annotation. No contradiction.

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?

Single paragraph but efficient, front-loading the main action and then detailing constraints. Every sentence adds value, though could be slightly more structured with bullet points.

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?

Covers filtering requirements, pagination, guest behavior, and fallbacks. No output schema exists, but the description adequately addresses what the agent needs to use the tool correctly.

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% with good descriptions. The tool description adds extra context: requirement for at least one filter, mutual exclusivity, and pagination technique using 'until'.

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?

Clearly states it lists conversations visible to the API-token user, newest activity first. Distinguishes from sibling list tools by specifying the resource (conversations) and the filter requirements.

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?

Explicitly requires at least one mailbox filter, lists all filter options, and notes mutual exclusivity among email/domain/contact_organization. Also explains pagination. Does not explicitly exclude scenarios but provides clear context for use.

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

missive_list_messagesA
Read-only

Fetch messages matching an email Message-ID (the RFC 5322 Message-ID header value). Normally returns a single message; non-compliant senders may produce up to the latest 10 matches. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_message_idYesRequired. The email `Message-ID` header value, e.g. "<0f1ab2d8-cd90-4dd1-a861-ef7e31fb3cdd@missiveapp.com>".

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. The description adds that normally a single message is returned, but non-compliant senders may yield up to 10. This provides useful behavioral context beyond 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, front-loaded with the core action. Every word serves a purpose; no fluff.

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's simplicity (1 param, no output schema), the description fully covers purpose, parameter format, and edge case behavior. No gaps remain.

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 schema has 100% coverage for the single parameter. The description adds meaning by referencing RFC 5322, providing an example, and clarifying the expected format. This elevates it above the 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 verb 'Fetch', the resource 'messages', and the criterion 'email Message-ID' (RFC 5322 header). It uniquely identifies this tool among siblings and explains typical return counts (single message, up to 10).

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 when you have an email Message-ID. It does not explicitly contrast with sibling list tools or provide when-not-to-use scenarios, but the specificity is sufficient for selection.

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

missive_list_organizationsA
Read-only

Lists the organizations the API token owner is part of (id, name). Use this to find the organization id used as a filter or default by other tools. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of organizations to return. Default 50, max 200.
offsetNoOffset used to paginate results. Default 0.

TDQS

A4.3/5.0
Behavior4/5

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

The description declares the tool as 'Read-only', which aligns with the annotation readOnlyHint=true. It adds context that it returns id and name, but no additional behavioral traits are needed given the annotation.

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 sentences, front-loaded with the core purpose, and contains no unnecessary words.

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?

For a simple list tool with no output schema, the description explains what is returned (id, name) and how to use the result (to get organization IDs). It is complete for the tool's complexity.

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 limit and offset. The description does not add any further meaning to the parameters, meeting the 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 verb 'lists' and resource 'organizations', and specifies the return fields (id, name). It distinguishes itself from sibling list tools by focusing on organizations.

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 explicitly tells the agent to use this tool to find organization IDs for filtering in other tools. It provides clear context for when to use it, though it does not state when not to use alternatives.

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

missive_list_responsesA
Read-only

Lists responses (reusable canned reply / email templates) for the authenticated user. organization is an optional filter; pagination via limit/offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of responses to return. Default 50, max 200.
offsetNoOffset used to paginate results. Default 0.
organizationNoOptional organization ID to filter by. Defaults to MISSIVE_DEFAULT_ORGANIZATION if set; otherwise lists across all accessible organizations.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true; description adds that it lists for the authenticated user, mentions optional filtering and pagination, providing extra context beyond annotations without contradiction.

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 clean sentences, no waste, front-loaded with purpose and key details.

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 list tool with good annotations and complete schema, the description adequately explains what is returned and basic filtering/pagination. No output schema, but not required for understanding.

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 already well-documented. Description adds extra value by noting the default behavior for organization (MISSIVE_DEFAULT_ORGANIZATION) and indicating pagination via limit/offset.

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?

Description clearly states it lists responses (canned replies/email templates) for the authenticated user, using a specific verb and resource. It distinguishes from sibling tools like create, get, update.

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?

Provides context on optional organization filter and pagination via limit/offset. No explicit when-not-to-use or alternatives, but clear enough for a list tool.

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

missive_list_shared_labelsA
Read-only

Lists shared labels (the folder-like, team-shared conversation tags) in the organizations you can access. organization is an optional filter; pagination via limit/offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of shared labels to return. Default 50, max 200.
offsetNoOffset used to paginate results. Default 0.
organizationNoOptional organization ID to filter by. Defaults to MISSIVE_DEFAULT_ORGANIZATION if set; otherwise lists across all accessible organizations.

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and the description reinforces this with a read operation. It adds context about the nature of shared labels ('folder-like, team-shared') and access scope ('in the organizations you can access'), going beyond the annotation.

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 front-loaded purpose. Every word adds value: defines shared labels, specifies action, highlights filter and pagination. No redundancy.

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 absence of an output schema, the description could mention the return format (e.g., array of label objects). However, it effectively covers access scope, optional filter, and pagination. With read-only annotation and full schema coverage, it is largely 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 100%, with detailed descriptions for all three parameters. The description summarizes organization as optional and pagination via limit/offset but adds no new parameter semantics beyond what the schema provides.

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 action ('lists') and the resource ('shared labels') with a clarifying explanation ('folder-like, team-shared conversation tags'). This distinguishes it from other list tools like missive_list_teams and missive_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 Guidelines3/5

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

The description mentions the optional organization filter and pagination parameters but does not provide explicit guidance on when to use this tool versus alternatives like missive_list_teams or missive_list_organizations. Usage is implied but not contrasted.

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

missive_list_tasksA
Read-only

Lists tasks you can access, ordered by last activity (most recent first). organization is an optional filter. Filter by state, type, team, assignee, parent conversation, or due-date range. Paginate with until (cursor on last_activity_at) — there is no offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoFilter by team ID.
typeNoFilter by type: 'task' (tasks only), 'conversation' (tasked conversations only), or 'all' (both; the API default).
limitNoNumber of tasks to return (min 2, max 50).
stateNoFilter by task state: 'todo', 'in_progress', or 'closed'.
untilNoUnix timestamp for cursor pagination: returns tasks with last_activity_at before (and including) this value. Pass the last task's last_activity_at minus 1 to fetch the next page without duplicates.
assigneeNoFilter by assignee user ID.
due_at_gteqNoFilter to tasks whose `due_at` is greater than or equal to this Unix timestamp.
due_at_lteqNoFilter to tasks whose `due_at` is less than or equal to this Unix timestamp.
conversationNoFilter by parent conversation ID (returns subtasks of that conversation).
organizationNoOptional organization ID to filter by. Defaults to MISSIVE_DEFAULT_ORGANIZATION if set; otherwise lists across all accessible organizations.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, which the description supports accurately. The description adds details about pagination behavior (cursor-based, no offset) and optional organization filtering, contributing beyond annotations. However, it does not disclose rate limits or auth requirements.

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 concise sentences that immediately state the purpose and ordering, then cover filtering and pagination. No wasted words; information is front-loaded.

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?

With 10 parameters and no output schema, the description covers ordering, filtering, and pagination well. However, it lacks details about the return structure (e.g., fields in each task object). Given complexity, this is a notable gap.

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 description coverage is 100%, so baseline is 3. The description adds value by clarifying pagination mechanics ('there is no offset') and noting that `organization` is optional with a default. This extra context raises the score above baseline.

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 tasks with ordering by last activity. It distinguishes from siblings like missive_get_task (single task) and missive_create_task. However, it does not explicitly differentiate from other list tools like missive_list_conversations, though the mention of task-specific filters helps.

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 explains filtering options and pagination with `until` and notes no offset. It provides some guidance on how to use the tool but does not specify when to use this tool versus alternative tools (e.g., missive_get_task for a single task) 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.

missive_list_teamsA
Read-only

Lists teams in the organizations the API token owner belongs to and has access to (id, name, organization, members, observers, behaviors). organization is an optional filter; when omitted (and no default is set) teams from all accessible organizations are returned. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of teams to return. Default 50, max 200.
offsetNoOffset used to paginate results. Default 0.
organizationNoOptional organization UUID to filter teams. Defaults to MISSIVE_DEFAULT_ORGANIZATION; if neither is set, lists teams across all accessible organizations.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true; the description adds contextual behavior: mentions the scope (teams the user has access to) and the optional filter's effects. The redundant 'Read-only' tag adds no new info but does not contradict 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 efficient sentences. First sentence states purpose and output fields; second covers filtering and read-only nature. No wasted words.

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 simple list tool with pagination (inferred from limit/offset params), the description covers the resource, filter, and access scope. It does not explicitly state that results are paginated, but the schema handles that. Minor missing context about the output structure beyond the field list.

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

Parameters3/5

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

Schema description coverage is 100% with detailed descriptions for each parameter. The description repeats the organization filter behavior already present in the schema, adding no new semantic 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 identifies the verb 'Lists' and the resource 'teams', and specifies the returned fields (id, name, organization, members, observers, behaviors). This distinguishes it from sibling tools like list_organizations or list_users.

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 explains the optional organization filter and its default behavior (default organization or all accessible organizations). However, it does not explicitly contrast this tool with alternatives, such as when to use it versus list_organizations.

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

missive_list_usersA
Read-only

Lists users across the organizations the API token owner belongs to (id, name, email, avatar_url, and me for the token owner). organization is an optional filter; when omitted (and no default is set) users from all accessible organizations are returned. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of users to return. Default 50, max 200.
offsetNoOffset used to paginate results. Default 0.
organizationNoOptional organization UUID to filter users. Defaults to MISSIVE_DEFAULT_ORGANIZATION; if neither is set, lists users across all accessible organizations.

TDQS

A4.2/5.0
Behavior4/5

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

Adds context beyond the readOnlyHint annotation by stating the tool lists users across organizations the token belongs to and explains the optional filter. No contradictions with 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 concise sentences, first summarizing purpose and returned fields, second clarifying filter. No extraneous information; front-loaded and easy to parse.

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?

Covers scope, filter, and read-only nature. Pagination details are in schema. No output schema, but description sufficiently explains what is returned. Slightly incomplete without mentioning the return format is a list, but schema implies it.

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 100% with detailed parameter descriptions. The description essentially restates the organization filter behavior, adding no new semantic value beyond what the schema already provides.

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 'lists' and the resource 'users', with specific fields returned (id, name, email, avatar_url, me). It distinguishes from sibling tools like list_contacts or list_teams by focusing on users and token owner 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?

Provides clear context on the optional organization filter and default behavior when omitted. Lacks explicit when-not-to-use or alternatives, but the guidance on filtering is sufficient.

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

missive_merge_conversationsA
Destructive

Merges one conversation INTO another (POST /conversations/:source/merge). The source_conversation_id is merged into target_conversation_id: the source conversation is replaced and all its messages, comments, and entries move to the target. IRREVERSIBLE — it CANNOT be un-merged through this server. Missive may swap the two conversations, so the returned conversation id may differ from either input. Optionally pass subject to rename the merged conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
subjectNoOptional new subject for the merged conversation.
source_conversation_idYesThe conversation to merge FROM (it is replaced/merged into the target).
target_conversation_idYesThe surviving destination conversation the source is merged into.

TDQS

A4.6/5.0
Behavior5/5

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

The description goes beyond the destructiveHint annotation by detailing what happens (messages, comments, entries move), stating it is irreversible, and noting that the returned conversation ID may differ due to potential swapping. This fully informs the agent of behavioral consequences.

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 (three sentences) with the purpose stated first, followed by essential details and caution. Every sentence adds value without fluff.

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?

The description covers the merge process, irreversibility, and possible ID swap, but lacks explicit mention of the return value structure. While the output schema is absent, describing the return format would improve completeness.

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 100% schema coverage, the description adds context by clarifying the roles of source and target IDs and explaining the optional subject parameter renames the merged conversation, enriching the semantic understanding beyond the schema alone.

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 explicitly states 'Merges one conversation INTO another', providing a specific verb+resource pair. It distinguishes this from sibling tools like 'missive_update_conversations' by emphasizing the merge action and irreversibility.

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 clearly indicates this tool is for merging conversations, but does not explicitly state when not to use it or mention alternative tools. However, the irreversibility warning serves as implicit guidance for cautious use.

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

missive_update_contactsA
DestructiveIdempotent

Update one or more contacts by UUID (PATCH /contacts/:id1,:id2,...). Each object in contacts[] must include its id; only the attributes you supply are changed. WARNING: passing infos or memberships REPLACES the whole array — omitted items are deleted, so read-merge before writing. Idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
contactsYesOne or more contacts to update; each must include its `id`.

TDQS

A4.6/5.0
Behavior5/5

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

The description adds significant behavioral context beyond annotations, such as partial update behavior and the array replacement warning, which aligns with the destructiveHint annotation. No contradictions.

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 three well-structured sentences, front-loading the purpose and method, followed by important behavioral warnings. No unnecessary information.

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?

The description covers key aspects like partial updates, array replacement, and idempotency, but does not mention the response format or error conditions. Given the complexity and no output schema, it is mostly complete.

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%, but the description adds value by explaining the id requirement and the semantics of partial updates and array replacement, enhancing understanding of the single parameter.

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 updates one or more contacts by UUID, with a specific verb and resource, and distinguishes itself from sibling tools like missive_create_contacts and missive_list_contacts.

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 updating contacts, including the requirement for IDs and warning about array replacement. It does not explicitly list alternatives or when not to use, but the purpose is well-defined.

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

missive_update_conversationsA
Idempotent

Updates conversation state WITHOUT creating a post or sending anything (PATCH /conversations/:ids) — close/reopen, move to inbox/team, assign/unassign, add/remove shared labels, recolor, or rename. Pass ids (the conversation IDs to update) and conversations with exactly one object per id, each carrying its matching id. organization is required on any item that uses add_users, add_assignees, remove_assignees, or add_shared_labels. Idempotent. Missive's API has no archive action — close is the closest, and add_to_inbox un-archives.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesConversation IDs to update; comma-joined into the request path.
conversationsYesOne update object per id in `ids`. Each object must include its own matching `id`.

TDQS

A4.4/5.0
Behavior4/5

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

Discloses idempotency and non-destructive nature, consistent with annotations. Adds conditional requirement for 'organization' and explains the API method and behavior (no post/send). Does not contradict annotations.

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?

Concise yet informative, front-loaded with main purpose. Uses structured list of actions and clear parameter guidance. Minor redundancy (e.g., idempotent repeated) but no wasted sentences.

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 no output schema and only two parameters, the description covers essential context: operations, parameter structure, conditional requirements, and an API caveat. No gaps that would hinder correct invocation.

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%, but the description adds meaning beyond schema by explaining the one-object-per-id structure, the conditional need for organization, and the idempotent property. Helps agent construct correct requests.

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 'Updates conversation state' and enumerates specific actions (close/reopen, move, assign, etc.), distinguishing it from siblings like missive_create_post by explicitly saying it does NOT create a post or send anything.

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?

Provides clear context on when to use (update state without creating a post) and notes the absence of an archive action, suggesting alternatives. However, it does not explicitly exclude other tools or provide a comprehensive when-not list.

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

missive_update_responsesA
DestructiveIdempotent

Updates one or more existing responses (canned reply templates). Provide one object per response, each with its id; only the attributes you include (title, body, subject, recipients, shared_labels, attachments, external IDs) are changed. Passing attachments replaces the whole set — omitted attachments are removed. Responses created by external integrations (e.g. WhatsApp templates) cannot be updated.

ParametersJSON Schema
NameRequiredDescriptionDefault
responsesYesThe responses to update (at least one, each with its `id`).

TDQS

A4.3/5.0
Behavior4/5

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

Disclosure beyond annotations: attachments replacement destroys omitted attachments, and external integration responses are immutable. Annotations provide idempotent and destructive hints, but description adds concrete behavioral details.

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?

Three sentences, front-loaded with main action, no fluff. Every sentence adds value.

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?

Covers update behavior, constraints, and attachment logic well. But no output schema and description does not mention return value or response format, leaving a gap for a mutation 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?

With 100% schema coverage, description adds meaning: partial update semantics (only included attributes change) and attachment replacement behavior. Clearly explains how the responses array parameter works.

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?

Clearly states verb (update), resource (responses/canned reply templates), and scope (one or more by id). Distinguishes from create_responses sibling.

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?

Provides specific guidance: must include id per response, partial update behavior, attachment replacement warning, and explicit constraint that externally created responses cannot be updated. Lacks explicit when-to-use vs alternatives but is clear within its own context.

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

missive_update_shared_labelsA
Idempotent

Updates one or more existing shared labels. Provide one object per label, each with its id; only the attributes you include (name, color, parent, sharing options, visibility) are changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
shared_labelsYesThe shared labels to update (at least one, each with its `id`).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare the tool idempotent and non-destructive. The description adds context by explaining the partial update behavior ('only the attributes you include are changed'), which aligns with the annotations and provides additional clarity.

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 sentences long, front-loaded with the action, and every word provides value without redundancy.

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?

The description covers input well but does not mention the output or return value. For an update tool, knowing what is returned (e.g., updated labels or a success indicator) would improve completeness.

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 description elaborates on the single parameter 'shared_labels', clarifying the requirement for an 'id' and the optional nature of other fields. This adds meaning beyond the schema, which only specifies structure.

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 'Updates' and the resource 'existing shared labels', distinguishing it from create operations. It specifies the action precisely.

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 explains how to provide objects with 'id' and that only included attributes are changed, indicating partial update behavior. It implies when to use but lacks explicit when-not-to-use or alternatives.

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

missive_update_taskA
Idempotent

Updates a single task's attributes (title, description, state, assignees, team, due date). Only the fields you include are changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoNew team ID for the task.
stateNoNew task state: 'todo', 'in_progress', or 'closed'.
titleNoNew task title (max 1000 characters).
due_atNoNew due date as a Unix timestamp.
task_idYesID of the task to update.
assigneesNoNew array of assignee user IDs (replaces the current assignees).
descriptionNoNew task description, plain text (max 10000 characters).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate idempotentHint=true and destructiveHint=false, which the description aligns with by describing a partial update (non-destructive). The description adds the important behavioral detail that only included fields are changed, which is not in the annotations. No contradictions.

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 exceptionally concise: two sentences, zero wasted words. The first sentence states purpose and lists fields, the second clarifies the partial update behavior. It is well front-loaded and easy to scan.

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 has 7 parameters (1 required) and no output schema, the description adequately covers purpose and behavioral nuance. However, it does not mention what the tool returns (e.g., updated task object) or error scenarios (e.g., if task_id not found). This is a minor gap for a mutation tool, but annotations partially compensate.

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% with descriptions for each parameter. The description adds value by clarifying the partial update behavior ('Only the fields you include are changed'), which is not evident from individual parameter descriptions. This is a key semantic that helps the agent understand the tool's merge-like behavior.

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 'Updates' and the resource 'a single task's attributes', listing specific fields. It distinguishes from sibling tools like missive_create_task (create) and missive_get_task (read) by focusing on update semantics.

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 for updating an existing task, but does not explicitly specify when not to use it or suggest alternative tools like missive_get_task for reading or missive_list_tasks for listing. However, the partial update hint ('Only the fields you include are changed') provides clear context for typical usage.

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

missive_update_teamsA
Idempotent

Updates one or more existing teams. The API token must belong to an admin or owner of the organization. Pass ids (comma-joined into the URL path) and a teams array with one object per id, each carrying its own matching id plus only the attributes to change. Body shape: { teams: [...] }.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesTeam UUIDs to update. Comma-joined into the URL path; must align 1:1 with `teams` (each team object carries its own matching `id`).
teamsYesOne update object per id; include only the attributes you want to change.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate idempotentHint=true and destructiveHint=false, which align with the update operation. The description adds context about required permissions (admin/owner), which goes beyond annotations.

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 three sentences, concise, and front-loaded with purpose. It could be slightly more compact, but it is efficient.

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 two parameters, full schema coverage, and no output schema, the description covers purpose, permissions, and input format adequately. It does not explain return values, which is acceptable without an output schema.

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 the schema already explains parameters. The description adds value by explaining how ids are 'comma-joined into the URL path' and that teams must include only changed attributes.

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 'Updates one or more existing teams' and explains the input structure (ids and teams array), distinguishing it from creation or other tools.

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?

It specifies the prerequisite that 'The API token must belong to an admin or owner of the organization', which is helpful. However, it does not explicitly state when to use this tool over siblings like missive_create_teams.

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

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct resource and action, with clear naming and descriptions that prevent confusion even among similar functions like creating drafts vs. messages.

Naming Consistency5/5

All tools follow a consistent 'missive_verb_noun' pattern in lowercase snake_case, with verbs like create, get, list, update, merge, and help used uniformly.

Tool Count4/5

36 tools is high but justified by the breadth of Missive's domain (contacts, conversations, tasks, labels, teams, etc.); however, it exceeds the typical 3-15 range for well-scoped servers.

Completeness2/5

The server systematically lacks delete tools for all entities, leaving a significant lifecycle gap. While intentional for safety, it limits agents' ability to fully manage resources.

Maintenance

ActivityMaintained
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
    F
    maintenance
    Enables AI assistants to read, search, compose, and send emails by connecting to any IMAP/SMTP provider. It supports comprehensive mailbox management, including draft handling and message deletion, directly through natural language.
    10
    407
    10
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI agents to interact with Gmail for classifying messages, extracting action items, and performing batch inbox triage. It supports automated labeling, smart replies, and task creation for external platforms like Linear, Jira, and Todoist.

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/kanjidoc/missive-mcp'

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