Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Recently observed → Live
Live → Recently observed
Changed the definition of "create_campaign" and "upgrade"
Create a new email marketing campaign as a draft. Creating never sends—orcallschedulessend_campaignanythingseparately— once the content and audience areconfirmed.confirmed, call send_campaign to send it now or schedule it for later.
⟨36 unchanged words⟩ "Reply-to address","type":"string"},"scheduled_at":{"description":"ISO 8601 timestamp to schedule the send (omit to keep as draft)","type":"string"},"segment_id":{"description":"Audience segment to send ⟨39 unchanged words⟩
⟨8 unchanged words⟩ each quota is left, and what upgradingunlocks.unlocks, with the link to upgrade. Call it any time — not only after hitting a limit.SetReadsopen=trueonly:toitopennever changes thecheckoutplanpageor takes payment; the user upgrades by following the link. On a local install, open=true also opens that link in thedefaultuser's browser.
Added "get_analytics_timeline"; changed the definition of "archive_email", "clear_sandbox", "configure_inbound_domain" and 25 more (54 tools before, 55 now)
Moveonean emailout of the inbox and into the archive. Use ittoclear handled mail fromtheworking inbox. This isarchiveREVERSIBLEfolder.andReversiblenon-destructive:— the message is notdeleted, its content is unchanged, and it can be found again through the archive. It does not mark the message read, reply to it, or notify the sender. Safe to repeat — archiving an already-archived email changes nothing. Requires an API key. Affects exactly one message per call.deleted.
Recently observed → Live
Live → Recently observed
Recently observed → Live
Live → Recently observed
Certificate changed, valid to 2026-12-27
Recently observed → Live
Live → Recently observed
Recently observed → Live
Live → Recently observed
Verified owner set by dns_txt proof on www.misarmail.com
Certificate recorded, valid to 2026-10-29
Authorization not required
First tool surface recorded: 54 tools (server version 3.0.0)
Showing the latest 17 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
Delete everyin the sandbox. Thesandboxholds messages intercepted during testing so they are never delivered to real recipients. This DELETES ALL of them and cannot be undone — but itemail.touchesAffects only intercepted testsent campaigns,realinbox messages, contacts, or templates. Takes no parameters and offers no filter: it is all or nothing. Requires an API key. Clearing an already-empty sandbox is harmless. Read anything you still need from the sandbox before calling this.sent mail.
⟨17 unchanged words⟩ :"string"},"webhook_url":{"description":"OptionalHTTPS URL to POST inbound messages to (required)","type":"string"}},"required":["domain","subdomain","webhook_url"],"type":"object"}
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Configure inbound"}
Createanone A/B test variant on acampaigncampaign.withThetworealorAPImorestoresvariants.aAsinglesamplevariantpercentageperiscall,sentsofirst;build a test by calling this once per variant (e.g. twice for a plain A/B split) using thewinnersamegoescampaign_idtoand distinct `variant` labels. Each variant gets send_percent of theremainderaudience;onceauto_select_winnerselected.(with winner_wait_hours) can pick and send the winner automatically, or use select_ab_test_winner to do it manually.
{"properties":{"campaign_idauto_select_winner":{"description":"CampaignAutomaticallytoselecttestand send the winner after winner_wait_hours (default false)","type":"stringboolean"},"sample_percentagebody_html":{"description":"Percent of the audienceBodyusedHTML forthe test (defaultcontent20)tests","type":"numberstring"},"typecampaign_id":{"description":"WhatCampaign to test (UUID)","enum
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create A/B test"}
Create an automation workflow from a trigger,andsavedanasorderedalistpausedofdraft.steps.TheCreatedAPI'spausedcreatebyendpointdefaultonly accepts a name and trigger —callittoggle_automationhastonoactivatefieldsoncefortheworkflow stepsareor starting active; configure the step sequence in the MisarMail dashboard's visual builder, and use toggle_automation to activate once reviewed.
{"properties":{"active":{"description":"Start active immediately (default false)","type":"boolean"},"name":{"description":"Automation name","type":"string"},"steps":{"description":"Ordered workflow steps","items":{"properties":{"delay_hours":{"description":"Hours to wait before this step","type":"number"},"subject":{"description":"Subject for send_email steps","type":"string"},"tag":{"description":"Tag for add_tag / remove_tag steps","type":"string"},"template_id":{"description":"Template for send_email steps","type":"string"},"type":{"description":"Step action","enum":["send_email","wait","add_tag","remove_tag","condition"],"type":"string"}},"required":["type"],"type":"object"},"type":"array"},"trigger":{"description":"Event that ⟨29 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create automation"}
⟨8 unchanged words⟩ ,"from_name":{"description":"Sender display name (required)","type":"string"},"html":{ ⟨53 unchanged words⟩ will see","type":"string"},"tags":{"description":"Contact tags to target","items":{"type":"string"},"type":"array"},"template_id":{"description":"Use a saved template ⟨14 unchanged words⟩ ,"required":["name","subject","from_email","from_name"],"type":"object"}
{"properties":{"company":{"description":"Company name (max 150 chars)","type":"string"},"custom_fields":{"description":"Custom key-value attributes", ⟨14 unchanged words⟩ 100 chars)","type":"string"},"job_title":{"description":"Job title (max 100 chars)","type":"string"},"last_name":{"description":"Last name (max 100chars)","type":"string"},"phone":{"description":"Phone number (max 50chars)","type":"string"},"source ⟨24 unchanged words⟩
Create a hosted landing page withanacaptureheroform.block (headline, subheadline, CTA). Returns the publicURL;URL.subscribersTheflowrealstraightAPIintostores pages as a page-builder block array with no dedicated headline/CTA fields, so this tool translates yourcontactinputslist.into one 'hero' block — for multi-block pages or a real CTA link, use the landing page editor in the MisarMail dashboard.
⟨15 unchanged words⟩ :"string"},"name":{"description":"Internal pagePagenametitle","type":"string"},"slug":{"description":"URL slug (auto-generated from name when omitted)","type":"string"}," ⟨3 unchanged words⟩ line under the headline","type":"string"},"tags":{"description":"Tags applied to contacts who sign up here","items":{"type":"string"},"type":"array"}},"required":["name","headline" ⟨2 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create landing page"}
⟨27 unchanged words⟩ default professional)","enum":["professional","friendlycasual","urgent","playful","formalinformative"],"type":"string"},"topic": ⟨12 unchanged words⟩
Get one automation workflow in full:itstrigger, every step with itssettings, and current enrolment counts. Use it to understand exactly what an automation will do to contacts before activating it — the step list is where sendsdelay,waitsandbranches become visible. For the list of automations, use list_automations; to start or pause one, toggle_automation. Reads only; reading a workflow does not enrol anyone or trigger a step. Requires an API key. An automation can be defined but inactive, so check its state rather than assuming it isper-steprunning.completion stats.
Get one signup formin full:including its fields,itsembed code, andwhere it redirects after submission. Use it when you need the embed snippet to install the form, or need to know which fields it collects before interpreting submissions. For the submitted data itself, use get_form_submissions; for the list of forms, list_forms. Reads only; the form is not modified and no submission is created. Requires an API key. The embed code is meant to be pasted into a site, so returning it does not publish anything by itself.redirect behaviour.
Listthesubmissions for a signup formhas received, including thevalues entered in each field. Use it to see who signed up and what they told you. This returns PERSONAL DATA — email addresses and whatever else the form collects — so handle it accordingly and do not paste it into shared transcripts. For the form's own definition, use get_form. Reads only; submissions aresubmittednotfielddeleted,values andnobody is subscribed or emailed as a result. Requires an API key. No submissions is a normal answer, not an error.timestamps.
⟨5 unchanged words⟩ inbox conversation, oldest first, with sender andtimestamp. Use it to read a thread in full before replying or summarising — it is the detail view behind a conversation listing. It covers one conversation, and it does not send, reply, or mark anything as read. Reads only. Requires an API key. Message bodies are real customer correspondence, so treat the contents as confidential. Returns the whole thread rather than a page, so long conversations return a lot of text.timestamps.
Get oneintegration in full: itsintegration's configuration,thescopesit was granted, andthe result of itslastsync. Use it to diagnose an integration that list_integrations shows as unhealthy, or to check which scopes were granted before relying on a capability. Covers a single integration — list_integrations gives the overview. Reads only; it does not re-run asyncor change any setting. Requires an API key. The response describes what the integration is permitted to do, which is not the same as what it has successfully done — read the last sync result for that.result.
Get one marketplace listingin full,with its full preview, author, andinstallation instructions. Use it after list_marketplace_items to inspect a template before adopting it — this is the read step, and it does NOTinstallanything into the account or create a template. Nothing changes until you act on the instructions it returns. Reads only. Requires an API key. Marketplace items are authored by third parties, so review the preview before recommending one; the listing describes what the author claims, not something MisarMail has verified.count.
Get newsletter monetizationfiguresstats: paid subscribers,monthly recurring revenueMRR, churn, andrevenue trend. Usesponsorshipitrevenue for'how isthepaid newsletter doing' questions. These are account-level totals over a trailing window, so they cannot be broken down per campaign — use get_revenue_attribution for that. Reads only; no billing state is changed and no subscriber is charged. Requires an API key. Revenue figures are reported in minor currency units unless stated otherwise, so check before presenting them as dollars. Zero paid subscribers is a real answer.period.
Bulk-import up to 5,000 contacts in one call.ExistingBy default, addresses that already exist areupdatedskipped rather thanduplicated.duplicated — pass update_existing: true to update them instead. Returns per-row results so you can see which ⟨5 unchanged words⟩
⟨7 unchanged words⟩ 5000)","items":{"properties":{"company":{"type":"string"},"email":{"type":"string"},"first_name" ⟨18 unchanged words⟩ {"description":"Update contacts that already exist instead of skipping them (defaulttruefalse)","type":"boolean"}},"required" ⟨3 unchanged words⟩
{"destructiveHint":falsetrue,"idempotentHint":false,"openWorldHint":false,"readOnlyHint" ⟨4 unchanged words⟩
List A/B testson the accountwitheach variant'sper-variant results and whether a winner has beenpicked yet. Use it to see which tests are still running and which are waiting on a decision. Reading results here is safe and has no effect on the test — declaring a winner is a separate, irreversible action that sends to the held-back audience. Reads only. Requires an API key. A test with no winnerselectedis still open; treat early results with care, since a lead that looks decisive on a small sample often is not.yet.
⟨18 unchanged words⟩ },"type":{"description":"Filter bywhattestissource:being'campaign'testedfor campaign A/B tests (subject/content/send_time/from_name variants on a campaign), 'subject' for standalone subject-line tests","enum":["subject","content","send_timecampaign","from_namesubject"],"type":"string"}},"type":"object"}
ListtheAPI keys on the account with their scopes andwhen each was last used. Use it to audit access — to spot keys that are unused, over-scoped, or forgotten. It lists key METADATA only:last-usedthetime.secretKeyvaluessecrets arenotnever returnedby this or any other tool, so a key that has been lost must be rotated rather than recovered. Reads only; no key is created, revoked, or rotated. Requires an API key. Scope and last-used data is security-relevant, so treat the listing as sensitive even though it contains no—secrets.only metadata.
List automation workflowson the account —(welcome series, re-engagement, drip sequences—) with theirstatus and enrolment counts. Use it to see what is running before adding another workflow that mighttriggeroverlap,type andto find an automation id for get_automation or toggle_automation. Listing does not reveal the individual steps; get_automation does that. Reads only; nothing is activated, paused, or enrolled. Requires an API key. An automation may exist while inactive, so read the status rather than assuming a listed workflow is sending.active state.
List signup formson the accountwith their embed status and conversion counts.Use it to find a form id before get_form or get_form_submissions, and to compare how forms are performing against each other. It returns the forms themselves, not the people who filled them in — that is get_form_submissions. Reads only; no form is created, published, or unpublished. Requires an API key. A form that exists is not necessarily embedded anywhere, so a zero conversion count may mean it was never installed rather than that it converts badly.
Listevery third-party integrationconnectedto the account, with its sync status and when it last ran. Start here when a question involves external data — it tells you whichthird-party integrationsexistandwhether they are actually syncing. For one integration's configuration and scopes, follow up with get_integration; to turn one on or off, use toggle_integration. Reads only; nothing is connected, disconnected, or re-synced. Requires an API key. An integration listed as connected can still be failing totheir sync,so check the status rather than assuming. An empty list means nothing is connected yet, which is not an error.status.
Browse the MisarMail template marketplace for ready-made email and automation templates.Use it to find a starting point instead of authoring from scratch. This is browse only: it installs nothing, and no template is added to the account by listing it. Inspect a candidate with get_marketplace_item before adopting it. Reads only. Requires an API key. Listings are third-party authored, so quality varies. For templates the account already owns, use list_templates instead — these two return different things.
Listthesaved email templateson the account,withthetheir variable placeholderseach one expects. Use it to pick a template before composing a send,and to see which variablesso youmust supply — a template rendered with a missing variablecangoespickoutonewithfor avisible gap. These are the account's own templates; list_marketplace_items covers third-party ones instead. Reads only; no template is created, edited,campaign orsent. Requires an API key. An empty list means none have been saved yet, which is not an error.transactional send.
⟨3 unchanged words⟩ "Metric the decision was based on (defaultopen_rateopens)","enum":["open_rateopens","click_rateclicks","conversion_raterevenue","conversions"],"type":"string"},"test_id": ⟨22 unchanged words⟩
Activate or pauseone automation workflow. This is consequential in oneandirection:automation.ACTIVATINGActivating starts enrolling contacts,which means real emails begin goingandoutsending on theworkflow's schedule without further confirmation. Pausing stops new enrolments. Read the workflow with get_automation first so you know what activating will actually send. Contacts already part-way through a paused workflow are held rather than dropped, so pausing is not a cancellation. Safe to repeat. Requires an API key.configured schedule.
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Toggle automation"}
Turn one third-party integration onEnable oroff. This changesdisableliveanbehaviour:integration.DISABLINGDisabling stops all syncingthrough that integration, so data quietly stops flowing until it is re-enabled. It does not disconnect the integration or revoke its credentials — the connection and its scopes survive, which is why re-enabling picks up where it left off. Safe to repeat: setting an integration to the state it is already in changes nothing. Requires an API key. Call list_integrations first so youbutknowpreserves thecurrent state rather than toggling blind.stored credentials.
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Toggle integration"}
⟨14 unchanged words⟩ unsubscribed immediately excludes them from every future campaign. Does not support tags, phone, company, or job title — the API has no fields for them.
{"properties":{"company":{"description":"Company name","type":"string"},"custom_fields":{"description":"Custom key-value attributes to ⟨14 unchanged words⟩ "First name","type":"string"},"job_title":{"description":"Job title","type":"string"},"last_name":{"description":"Last name","type":"string"},"phone":{"description":"Phone number","type":"string"},"status":{"description":"New subscription status", ⟨3 unchanged words⟩ ,"bounced","complained"],"type":"string"},"tags":{"description":"Replace segmentation tags","items":{"type":"string"},"type":"array"}},"required":["email"],"type":"object"}
{"destructiveHint":falsetrue,"idempotentHint":true,"openWorldHint":false,"readOnlyHint" ⟨4 unchanged words⟩
Get a day/week/month breakdown of sent, delivered, opened, clicked, bounced, complained, replied, and unsubscribed — across every send medium (campaigns, inbox compose, API, MCP, SDKs, GraphQL, automations). The timeline counterpart to get_analytics's period totals.