Documentation menu

Tool reference

Every tool a connected assistant can call, grouped the same way the server registers them. A tool is only ever offered to the assistant if your connection holds the scope it needs — there's no such thing as a write tool that's present but always errors; if you didn't grant contacts:write, the assistant simply doesn't see upsert_contacts at all. See Scopes & permissions for what each scope means.

Destructive in the tables below is the same MCP annotation Claude's own review process requires — it marks a tool whose effect can't be trivially undone (deleting a project, overwriting a tree, removing a contact), not "dangerous" in some vaguer sense. Every write tool still only takes the fields you'd expect; none of them accept a raw payload the model could smuggle arbitrary changes through.

Discovery

ToolScopeNotes
searchany of projects:read / templates:read / contacts:readSearches projects, templates and contact lists by name. Returns opaque ids for fetch. This is the tool a deep-research-capable client calls automatically.
fetchsame as searchResolves one id from search into its full content.

Email design

ToolScopeDestructiveNotes
list_projectsprojects:readId, name, purpose for every project.
get_emailprojects:readA project's current block tree and theme.
preview_emailprojects:readRenders through the real mailed-HTML pipeline — the exact document a send would produce. Widget-attached (see below).
list_block_typesprojects:readThe full 44-block catalog, generated from the live registry — always current, never hand-maintained.
list_templatesprojects:readYour saved templates, or the approved community gallery.
create_projectprojects:writeOptionally seeded from a built-in purpose template.
add_block / update_block / move_blockprojects:writeTree edits, canPlace/field-validated the same way the in-studio copilot's edits are.
remove_blockprojects:write✓Deletes a block and its children.
set_themeprojects:writeBrand colors, font, button radius.
rename_projectprojects:write
delete_projectprojects:write✓Permanent.
apply_templateprojects:write✓Overwrites the project's entire tree and theme.
save_as_templatetemplates:writeSnapshots the current project into a reusable template.
publish_landing_pageprojects:writePublishes an email as a public web page at /lp/<slug> and returns its URL. The assistant is told to show you the email and get your approval first, as with sending.
unpublish_landing_pageprojects:writeTakes the page down. The address stays reserved for you.

Audience

ToolScopeDestructiveNotes
list_data_sourcescontacts:readEvery data source, contact lists included. Credential values are never returned.
list_contact_listscontacts:readContact lists specifically — id, name, fields, row count.
get_contact_list_summarycontacts:readCounts, suppression totals and the email verification breakdown, plus the last re-check's status — no individual contact data.
find_contactscontacts:readBounded lookup (≤25 rows, cursor-paginated). sortBy: "engagementScore" returns the list's warmest contacts first, with their score and this week's change. Every call is written to the personal-data access log, same as a dashboard contact read.
upsert_contactscontacts:writeAdd or update rows; enforces your plan's contact cap.
remove_contactcontacts:write✓Permanently removes one row.
add_suppression / remove_suppressioncontacts:writeBlocks or unblocks an address account-wide, same effect as a recipient's own unsubscribe link.

Results

ToolScopeDestructiveNotes
get_campaign_resultsanalytics:readOpens/clicks/responses/revenue, A/B variant comparison, click heatmap. Summarized only — never raw per-recipient events. Widget-attached.
get_form_responsesanalytics:readPer-question rollups; free-text answers are a capped, fenced sample.
list_ordersanalytics:readProduct-block checkout orders.
list_campaign_sendsanalytics:readPast bulk sends, most recent first.
list_schedulesanalytics:readRecurring sends configured on a project.
mark_order_fulfilledcommerce:writeMarks a physical order shipped and emails the buyer.
create_schedulecampaigns:sendConfigures a new recurring send.
set_schedule_enabledcampaigns:send✓Marked destructive because disabling a live schedule stops future sends silently.

Sending

ToolScopeDestructiveNotes
send_test_emailcampaigns:readA single [Test]-prefixed copy to one address you specify — doesn't touch your real audience or need campaigns:send.
prepare_sendcampaigns:sendRead-only by annotation — resolves the audience and renders a preview, sends nothing. Returns a confirmationToken, and how many contacts will be skipped as invalid addresses or for no consent. Widget-attached (send-confirmation card).
confirm_sendcampaigns:send✓Requires the exact confirmationToken prepare_send returned, unchanged, within 10 minutes. See Security for why.

Mailbox & tickets

ToolScopeNotes
list_mailbox_threads / get_mailbox_threadmailbox:readInbound mail at your verified domain. Message bodies are fenced as untrusted, recipient-authored content.
reply_to_mailbox_threadmailbox:writeSends from the exact mailbox address the original mail arrived at, correctly threaded.
list_tickets / get_ticketmailbox:readSupport-ticket conversations. Same untrusted-content fencing.
reply_to_ticketmailbox:writeAdds an owner message and emails the recipient a link back.

Journeys & segments

ToolScopeDestructiveNotes
list_journeysjourneys:readId, name, on/off, trigger kind and step count for every journey.
get_journeyjourneys:readA journey's full flow, with your emails', lists' and segments' names, plus anything that would stop it from running. For a journey that's off and can run, also returns an enableToken.
list_segmentsjourneys:readSaved segments, with their contact list and rules.
create_segmentjourneys:writeSaves a segment on one contact list. Enforces your plan's segment cap.
build_journeyjourneys:writeBuilds a new journey, or edits one that's off, from a plain-language request, using the journey builder's AI copilot. Uses one AI copilot turn. The result is always saved turned off, and a journey that's on is never changed.
set_journey_enabledjourneys:write (+ campaigns:send to turn on)✓Turning a journey on requires the enableToken from get_journey, unchanged, within 10 minutes and before any further edit. Same two-step idea as prepare_send/confirm_send. Pausing needs neither.

Account

ToolScopeNotes
get_plan_usagenone — always availablePlan, quotas, and this month's usage. Read-only, and not sensitive account data the way projects/contacts/mailbox are, so it's available regardless of which scopes you granted.

Widgets

Three tools attach an interactive widget on hosts that support MCP Apps (Claude — Gemini has no widget layer and always gets the plain-text/JSON result instead): preview_email (live desktop/mobile email preview), get_campaign_results (results dashboard), and prepare_send (the send-confirmation card, whose own Confirm & Send button is what actually calls confirm_send).