MailboHelp CenterOpen the app

MCP tools reference — every tool

Full catalogue of the 42 tools your AI client can call against Mailbo, grouped by resource.


Once Claude (or another MCP client) is connected (see Connect Claude via MCP), it can call any of the tools below. Tools needing write scope mutate workspace data; read tools are safe.

Each tool proxies to the corresponding REST endpoint, so error messages and validation rules are identical.

Workspace

ToolScopeWhat it does
get_workspacereadReturn workspace id + name + scopes. Connection-test.
workspace_summaryreadOne-shot counts for contacts, tags, lists, sequences + recent purchases. Best first call for orientation.

Contacts

ToolScopeWhat it does
list_contactsreadList contacts, filter by status or email substring.
get_contactreadGet one contact by UUID.
find_contact_by_emailreadLook up a contact by email; returns {data: null} if not found.
upsert_contactwriteCreate or update a contact (looked up by email). attrs is merged into existing custom fields by default — partial updates do NOT clear other keys. Set a value to null to clear that single key, or pass attrs_mode: "replace" for wholesale overwrite.
update_contactwritePatch fields on a specific contact UUID. Same attrs merge semantics as upsert_contact.
delete_contactwritePermanent delete. Prefer unsubscribe_contact for opt-outs.

Tags

ToolScopeWhat it does
list_tagsreadList all tags.
list_custom_fieldsreadList the workspace's custom-field DEFINITIONS (key, label, type, entity) for contacts and purchases. Optional entity filter (contact or purchase). Use these keys when writing contact or purchase attrs.
create_custom_fieldwriteCreate (or update) a custom-field definition. key is snake_case, type is one of text/number/date/boolean/url. Idempotent on (entity, key).
create_tagwriteCreate a tag (idempotent by name).
add_tagswriteAdd tag names to a contact UUID; unknown names are auto-created.
remove_tagwriteRemove one tag from one contact.
quick_tag_by_emailwriteUpsert contact by email + attach tags in one call. Best when you only have the email.

Lists

ToolScopeWhat it does
list_listsreadList all lists.
create_listwriteCreate a static or dynamic list.
add_contact_to_listwriteAdd a contact to a static list.
remove_contact_from_listwriteRemove a contact from a list.

Sequences

ToolScopeWhat it does
list_sequencesreadList sequences.
get_sequencereadGet one sequence + ordered steps.
create_sequencewriteCreate a sequence with all its steps + email content in one call.
update_sequencewriteUpdate fields; pass steps to replace the whole step array.
enroll_in_sequencewriteEnroll a contact (by email or contact_id).

Campaigns

ToolScopeWhat it does
list_campaignsreadList campaigns, filter by status.
get_campaignreadGet one campaign with body + stats.
create_campaignwriteCreate a draft campaign. Only name is required — sender fields inherit from email settings. body_html shortcut wraps raw HTML as source-mode.
update_campaignwriteUpdate name, subject, from-fields, status, scheduled_at, body, layout. Use status paused / cancelled to halt a scheduled send.

Automations

ToolScopeWhat it does
list_automationsreadList automations (metadata only — no graph).
get_automationreadGet one automation with its full graph.
create_automationwriteCreate an automation with an optional full graph. Tool description embeds the full node-type catalogue so an LLM can build advanced workflows from natural language.
update_automationwriteUpdate fields; pass graph to swap the entire workflow.
delete_automationwritePermanent delete; cascades to automation_runs. Prefer status paused if you want history preserved.

Events

ToolScopeWhat it does
track_eventwriteFire a lifecycle event (pricing_viewed, signup_completed, …) against a contact. Auto-creates the contact if needed.

Purchases

ToolScopeWhat it does
list_purchasesreadList purchases. Filter by email / contact_id / source.
record_purchasewriteRecord a purchase. external_id deduplicates retries safely. Pass attrs (object keyed by custom_fields.key where entity='purchase') to populate purchase custom fields. Call list_custom_fields first to discover valid keys.

Outbound webhooks

ToolScopeWhat it does
list_webhooksreadList outbound webhook subscriptions. Secrets are not returned.
get_webhookreadGet one webhook by UUID. Secret is not returned.
create_webhookwriteCreate a subscription. Returns the HMAC secret ONCE in the response — store it. Events: email.opened, email.clicked, email.bounced, email.complained, email.unsubscribed, or *.
update_webhookwriteUpdate name/url/events/enabled. Pass secret: true to auto-rotate, or secret: "<new>" to set a specific value. Returns the new plaintext secret once.
delete_webhookwritePermanently delete a subscription.

Unsubscribe

ToolScopeWhat it does
unsubscribe_contactwriteMark an email as unsubscribed. Idempotent.

Automation graph cheat-sheet

create_automation and update_automation accept a graph object built from these node types:

TypePurpose
triggerEntry point. Exactly one per graph.
send_emailSend an email. Needs data.subject + body.
waitDelay. data: { value, unit: minutes/hours/days/weeks }.
add_tagAdd a tag to the contact.
remove_tagRemove a tag.
if_has_tagBranch on tag membership. Edges leaving need sourceHandle: 'yes' or 'no'.
if_on_listBranch on list membership.
if_filterBranch on a full filter (match: all/any, plus rules).
endTerminal node.

Edges: {source, target, sourceHandle?}. The handle is required on edges leaving conditional (if_*) nodes.

Tool count

42 tools as of this writing. Restart your MCP client (or claude mcp remove mailbo && claude mcp add …) after Mailbo deploys to pick up any new tools — most clients cache the tool list from the initial tools/list call.

Still have a question?
Can't find what you need in this guide? We're happy to help.
Contact us
Last updated 6/23/2026← More in API & MCP Reference