generate_campaign) — are intentionally omitted until they return real workspace data.
Contacts
create_contact
Required arguments:
email
firstNamelastNamesource(defaults tomcp)userId
update_contact
Use email or userId to identify the contact, then supply any fields you want to update.
list_contacts
Optional filters:
emailuserId
delete_contact
Delete by email or userId.
Events
send_event
Required arguments:
eventName
emailuserId
send_email
Required arguments:
to
templateIdsubjecthtmlBodytextBodyfrom
templateId, MailKatana loads the saved template first and fills missing body fields from that template.
list_templates
Lists available templates in the workspace.
get_template
Required arguments:
templateId
create_template
Required arguments:
namesubject
content— a React Email component-tree JSON string ({schema:1,nodes:[...]}or a node array) for the primary locale. Components:container,section,header,footer,heading,text,button,link,image,list.{{variable}}placeholders are supported in text.preheader
id (public ID), slugId, name, subject, and status.
update_template
Applies a partial update — only the fields you supply are changed. When content is supplied it replaces the primary-locale component tree.
Required arguments:
templateId
namesubjectcontent— new component-tree JSON for the primary localepreheader
delete_template
Required arguments:
templateId
templateId for get_template, update_template, and delete_template is the template public ID (as returned by list_templates / create_template).
Mailing lists
list_mailing_lists
Returns active mailing lists for the workspace.
Campaigns
Create and send marketing campaigns to a contact list. A campaign is created as a draft and is only sent when you callsend_campaign. Sending applies the same
protections as the rest of the platform: suppression-list filtering, workspace
trust-level caps, DMARC requirements (trust level M2+), and per-recipient rate
guardrails. The actual delivery runs asynchronously after the send is accepted.
create_campaign
Creates a draft campaign targeting a contact list.
Required arguments:
name— campaign name (internal label)subject— email subject linefrom— From email address; its domain must be configured in the workspacelistId— audience contact list public ID (e.g.clist_..., fromlist_mailing_lists)htmlBody— HTML body of the campaign email
textBodypreheader— preview textfromName— sender display nameunsubscribePageEnabled— enable the hosted unsubscribe page (defaults totrue)
id (public ID, e.g. cmp_...), status (draft), audience
list_id, recipient_count_estimate, and timestamps.
Example arguments:
send_campaign
Sends a campaign now to every active contact on its audience list. Only campaigns in
a draft, approved, or scheduled state can be sent.
Required arguments:
campaignId— campaign public ID (e.g.cmp_...)
status (sending).
list_campaigns
Lists campaigns in the workspace, newest first.
Optional arguments:
limit— maximum number to return (default50, max100)
get_campaign
Required arguments:
campaignId— campaign public ID (e.g.cmp_...)
list_id, recipient_count_estimate, and timestamps.
Inbox & mailboxes
Inbox mail is private per mailbox, so it lives behind a per-mailbox credential, never the workspace API key. The workspace MCP exposes only mailbox inventory; reading and replying happen on a separate, single-mailbox endpoint (below).list_mailboxes
Returns configured inbox mailboxes for the workspace (mailbox ID, address, display name, status). Inventory only — no message content — and works with the workspace API key. Use it to discover which mailbox to mint an access token for.
Mailbox MCP endpoint
Reading a mailbox’s mail and replying happen on a dedicated MCP endpoint scoped to a single mailbox, authenticated by that mailbox’s own access token — not the workspace API key.- Streamable HTTP server URL:
https://api.mailkatana.com/mailbox/mcp - Legacy SSE endpoint:
https://api.mailkatana.com/mailbox/mcp/sse - Authentication:
Authorization: Bearer <mailbox access token>— anmbtok_…token minted for one mailbox
read, reply), so these tools take no mailbox argument — everything is confined to the token’s mailbox.
mailbox_info
Returns the mailbox this token authenticates as: id (public ID), address, and granted scopes.
read_inbox
Read this mailbox’s received mail (requires the read scope).
- With no
messageId, lists recent received messages (newest first). - With
messageId, returns that message’s full content (from, to, subject, text/HTML body).
messageId— return the full content of a specific received message instead of a listfolder—inbox(default),sent,drafts,archive,trash, orjunklimit— maximum messages to list (default20, max50)
reply_to_email
Reply to a received message in this mailbox (requires the reply scope). The reply is sent from this mailbox, to the original sender (or its Reply-To), with a Re: subject line.
Required arguments:
messageId— public ID of the received message (fromread_inbox)body— reply body (plain text)