Skip to main content
Glama
mailkite

MailKite

Official

mailkite_send_batch

Send up to 50 personalized emails in one API call, merging per-recipient data into each message. Returns per-recipient results so a batch can partially succeed.

Instructions

Send one personalized message per recipient (up to 50) in a single call. Shared fields form the base message; each recipients[] entry gets its own message to exactly one address, with per-recipient templateData and headers merged over the shared ones. Every message passes the same gates as send() and gets its own id; the response reports each recipient's outcome in order, so a batch can partially succeed. Pass scheduledAt to park the whole batch for later (one cancelable ssnd_… per recipient). Requires an API key (mk_live_…).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fromYesAn address on a verified domain. Shared by every message in the batch.
htmlNoMay contain {{merge_tags}}, filled per recipient.
textNoMay contain {{merge_tags}}, filled per recipient.
headersNoShared extra raw MIME headers for every message, applied after threading headers (caller wins); a recipient's own headers override these key-by-key.
replyToNo
subjectNoRequired unless supplied by a template. May contain {{merge_tags}}, filled per recipient.
inReplyToNoThread every message under this Message-ID.
recipientsYesOne entry per message. Order is preserved in the response's results[].
templateIdNoSend using a saved template — a user template (tpl_…) or a base template (base_…). Its subject/html/text seed every message; explicit subject/html/text here override them.
trackOpensNoOpen-tracking override for every message in the batch (HTML only). Omitted → the from-domain's default applies.
attachmentsNoAttached to every message in the batch. Same shape as send()'s attachments.
scheduledAtNoSend later: ISO 8601, simple relative natural language ("in 2 hours"), or a ms-epoch. A future time parks every message with the scheduler (each gets its own ssnd_… id, individually cancelable); omitted or past sends now.
trackClicksNoClick-tracking override for every message in the batch (HTML only): http(s) links are rewritten to a signed redirect that records the click, then 302s to the destination. Omitted → the from-domain's default applies.
templateDataNoShared default merge values for every recipient; a recipient's own templateData overrides these key-by-key. HTML values are auto-escaped.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.20.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations are minimal (readOnlyHint false, idempotentHint false, destructiveHint false), so the description carries the burden. It discloses that every message passes the same gates as send(), gets its own id, partial success possible, and scheduledAt creates individual ssnd_ ids that are cancelable. It also mentions API key requirement. This is transparent but could delve into auth specifics or rate limits, which is not present.

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 paragraph but well-structured, front-loading the core purpose and key behaviors. Each sentence adds useful information without fluff. It avoids excessive detail and is 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 complexity (14 params, nested objects) and lack of output schema, the description covers essential aspects: batch semantics, merge rules, partial success, scheduling, and auth. It does not explicitly describe error formats or response structure in detail, but the note about response order and partial success is helpful. The description is adequate for an 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 93%, so the schema already documents most parameters. The description adds context about merging semantics (shared fields base, per-recipient overrides) and scheduledAt behavior, which supplements schema. However, most parameters (e.g., from, subject) are self-explanatory in schema, so description adds little extra value; the baseline is maintained.

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 that the tool sends one personalized message per recipient in a single call, up to 50 recipients, with per-recipient templateData and headers merged over shared ones. It distinguishes itself from the sibling mailkite_send by emphasizing batch capabilities and per-recipient customization.

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 batch sending with personalization opportunties, and contrasts with send() for single messages inevitably. However it does not explicitly state when not to use it (e.g., for single messages) or recommend alternatives such as send_broadcast. The clear mention of batch vs single sends provides some guidance.

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

Install Server

Other Tools