Skip to main content
Glama

Cooper Email

Reply to a message

cooper_reply_message
Destructive

Use this when you need to answer a message already in a Cooper inbox, with recipients and threading filled in for you. Requires auth. Sends real email and stores the copy on the same thread. Inputs: inbox_id (required; inbox id, username, or email), message_id (required), text and/or html (one is required), reply_all (optional; default false; when true, also include the other original To and Cc addresses, merge cc, drop this inbox, and dedupe), cc, bcc, attachments, labels, client_id (optional idempotency key; a retry returns the original message and does not send again). An inbound reply goes to Reply-To or From. A reply to mail you sent goes to the original To. The subject gains Re: unless it already starts with re:. Returns the stored message. Fails with 400 missing_body, 400 missing_to, 403 recipient_blocked, 403 recipient_suppressed, 403 inbox_paused, 404 message_not_found, 404 inbox_not_found, or 402 when the monthly send limit is reached.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ccNoExtra Cc addresses, merged on reply-all
bccNoBcc addresses
htmlNoHTML body. Provide text or html.
textNoPlain-text body. Provide text or html.
labelsNoLabels stored on the reply. Defaults to ["sent"].
inbox_idYesInbox id (inb_…), username, or full email address
client_idNoOptional idempotency key. Reuse it to get the original reply instead of sending twice.
reply_allNoWhen true, also address the other original recipients, drop this inbox, and dedupe. Default false.
message_idYesMessage id (msg_…) to answer
attachmentsNoOptional files, base64-encoded

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that auth is required, that it sends real email, where the copy is stored, threading/subject mutation ('gains Re: unless it already starts with re:'), recipient resolution (Reply-To/From vs original To), the 402 monthly send limit, and a full enumeration of failure codes. The client_id note clarifies conditional idempotency even though idempotentHint is false, which is useful nuance rather than a 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?

Front-loads the when-to-use clause and then packs inputs, threading rules, return, and errors into one dense paragraph with no filler sentences. It is longer than ideal and the trailing error-code list reads as a run-on, but nearly every clause carries operational 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?

With no output schema, the description still covers the return value ('Returns the stored message'), auth, side effects, recipient resolution, subject behavior, rate limiting, and error outcomes. For a 10-parameter mutation tool, nothing essential to correct invocation is missing.

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 baseline is 3, but the description adds real value beyond the schema: reply_all's exact semantics (include other To/Cc, merge cc, drop this inbox, dedupe), subject-line rewriting, and the constraint that text and/or html is required — a constraint the schema itself does not enforce via oneOf. Fails to explain attachments/labels beyond what the schema already says.

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?

States a specific verb and resource ('answer a message already in a Cooper inbox') and adds the distinguishing trait that recipients and threading are auto-filled, which separates it from cooper_send_message and cooper_create_draft. An agent can tell what this does without opening the schema.

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?

'Use this when you need to answer a message already in a Cooper inbox' gives clear selection context for replying rather than composing fresh mail. It stops short of explicitly naming the alternatives (send_message, create_draft, forward_message) or stating when not to use it, so it is clear but not fully routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.