MCP tools
The Notifizz MCP server — MCP being the Model Context Protocol, the open standard an AI assistant uses to call outside tools — exposes 27 tools. This page groups them by what you are trying to do, and says when each one is worth calling. This page is for the Dev, and for anyone who wants to know exactly what an AI assistant can and cannot do to a Notifizz organisation. You rarely call these by hand: you describe the outcome, and the assistant chains them.TL;DR
- Six intents: set up the data contract · configure the channels · build a campaign · implement it · test and promote it · migrate existing email templates.
campaign_get_statusis the compass. After any campaign step it reports the phase, what is blocking, which role must act, the open questions and the next tool to call. An assistant that reads it never has to guess.- The server ships its own playbook. The order of operations is sent to the assistant on connection, so you don’t have to prompt it into the right sequence.
- Three human gates: approving a proposed flow, confirming an archive, and publishing Live — the last one has no tool at all and only ever happens in the dashboard.
- Writes are gated by permissions and recorded. Reads are not recorded. See scopes and audit.
- Two tools return a plan rather than doing something:
quickstartandemail_templates_migration. They are the entry points; the plan they hand back gates every write behind your confirmation.
Set up the data contract
The foundation: what your product emits (events), what fetches live data at notification time (enrichers), where a call to action points (link routes), and the business language all of it is named in.The gates are the point. The quickstart is not a script that runs and reports; it stops three times — vocabulary first, then events and enrichers, then link routes — and refuses to name anything before you have settled the language. Vocabulary comes first so nothing gets renamed later.
Several sandboxes
sandbox_get_config returns no keys at all if your organisation has several non-production environments and none was named — it returns the list of names instead, and the assistant asks you which one. The convention is one personal dev environment per developer: own keys, own local tunnel, no cross-talk between teammates. campaign_send_test_event follows the same rule.
Configure the channels
The identity field has to agree with itself. The value the widget authenticates with, the field named here, and the property your events and enrichers use to address a recipient must be the same thing. When they diverge, nothing errors — the inbox simply stays empty.
Build a campaign
The business half. The copilot interviews you about intent, audience, tone, key message and timing — and deliberately knows nothing about enrichers or event properties. That conversation belongs to the campaign inEditing.
The duplicate check is not a nuisance. The same event does not mean the same campaign, and only a human can tell which is which — so the tool surfaces what already exists and stops. It also silently reuses a recent empty draft created from an identical brief, so a retry doesn’t litter your list.
The compass
It also answers two questions nothing else does:
- Who receives the later sends of a sequence — recipients resolved at each send, or frozen at the first one.
- Whether a published campaign has a pending update. Editing a Live campaign forks a child that carries its own tasks and its own orchestrator thread. Asking the parent would report “live, nothing to do” and hide it, so the snapshot folds in the child’s id — you drive the child, and publishing the update stays a human step in the dashboard.
Implement it
The technical half. The AI orchestrator reconciles the campaign’s notifications against the events and enrichers that actually exist in your codebase, and raises implementation tasks for the gaps.
The three task types are the ones the orchestrator can raise: a missing event property, an undefined enricher, a missing enricher field. They are not a blocker but a feature — the AI telling you precisely what your data contract is short of, in a form your IDE can execute.
Test it and promote it
Clean up
Migrate existing email templates
Bring the emails you already own — from your current sending tool, or an export folder — into your Notifizz component library as reusable layouts, sections and assets.A real corpus never enters the assistant’s context. Tool arguments travel through the model’s context window, and a genuine template library is megabytes of HTML. The migration plan therefore hands the assistant a short-lived, read-only way to submit the whole corpus out of band — deduplication still sees every template at once, and the HTML never costs you a single token.
email_templates_analyze stays for small batches.Rules the server enforces
These are not conventions the assistant may or may not honour — they are enforced server-side.- Your organisation is derived from the credential, never from a tool argument. There is no parameter through which an assistant could address another organisation.
- Publishing Live has no tool. The absence is the design.
- Content from your organisation is data, not instructions. Campaign briefs, campaign names, copilot and orchestrator questions come back to the assistant explicitly tagged as content to relay or display — never as instructions to follow, whatever they happen to say. This is what stops a campaign brief from becoming a set of commands.
- Write tools are permission-gated and recorded; a refusal names the missing permission rather than failing vaguely. See scopes and audit.
FAQ
The assistant reported ai_credits_exhausted. What now?
The assistant reported ai_credits_exhausted. What now?
Copilot turns draw on your organisation’s daily AI-credit pool, and the turn that hit the limit did not run — nothing was half-done. The pool resets at UTC midnight, and it can be raised. Everything deterministic keeps working in the meantime:
campaign_get_status, campaign_approve, campaign_list_tasks and the rest are unaffected.Which tools cost AI credits?
Which tools cost AI credits?
The copilot conversation — creating a campaign and answering its questions. Approving a proposal materialises the flow deterministically and costs nothing extra. Reads never do.
Can the assistant publish a campaign for me?
Can the assistant publish a campaign for me?
No. There is deliberately no tool for it: a campaign goes Live from the dashboard, by a person. The assistant takes it as far as a tested campaign sitting in Review, and hands you the link.
A tool answered blocked with a list of reasons. Is that an error?
A tool answered blocked with a list of reasons. Is that an error?
No — it is a gate doing its job. Promotion tools return the exact reasons a transition was refused (an empty notification, no bound event, unresolved implementation tasks, a missing orchestrator analysis) so the assistant can fix them and retry, rather than leaving you with a campaign in a state nobody can explain.
I want the assistant to only read, never write.
I want the assistant to only read, never write.
That is what the permission model is for: a credential can be narrowed so every write tool is refused with
insufficient_scope while reads keep working. See scopes and audit.Do these tools exist for editors other than Claude?
Do these tools exist for editors other than Claude?
The server speaks standard MCP over its remote transport, so any client implementing the protocol and its authorisation flow reaches the same tools. Claude Desktop and Claude Code are the two surfaces Notifizz supports and tests today — see connect your AI tool.
See also
Connect your AI tool
The one-time consent, and what the first connection does.
Scopes & audit
Which tools each permission covers, and what is recorded.
Campaigns
The statuses these tools move a campaign through.
Orchestrator
Where implementation tasks come from.