How your agent works.
Markdown procedures the agent can read at runtime, written by humans who know the domain.
analytics 3
Analytics: Identify visitors and link tracking to CRM contacts
Link an anonymous analytics visitor to a known end-user / CRM contact so page-views and searches show up on the contact's journey.
Analytics: Track CMS entry views
Use the `_tracking` block that every CMS delivery response already ships to record per-entry views, keyed by stable entry id, without minting any key.
Analytics: Track website traffic
Mint a public `mn_track_*` API key, drop the one-line tracker script into your site, and query view events to understand what readers engage with.
bookings 1
cms 9
CMS: Author content with blocks
Define typed block types on a collection and author rich in-article content (callouts, galleries, product cards) whose embedded assets and entry references are validated, expanded on read, and tracked for deletion safety.
CMS: Design a collection
Turn "I need a blog / product catalog / FAQ / landing-page content store" into a working `cms_create_collection` call — pick field types deliberately, order fields for the editor, decide localization up front, and avoid the field-migration paper cuts.
CMS: Localize an entry
Configure locales, author one entry per language with its own slug, keep the locale variants linked, and switch the org's default locale without breaking already-published entries.
CMS: Migrate content in bulk
Move entries from an external CMS (or between Munin collections) idempotently — preserve references, rewrite assets, reconcile schema drift.
Preview a draft entry
Let editors view a draft CMS entry rendered by the customer frontend before publishing — configure the collection's previewUrl template, mint a signed preview link, and wire the frontend's draft-mode handler.
CMS: Publish an entry
Move a CMS entry through draft → published — immediate, scheduled, or rolled back — without losing work to optimistic-lock conflicts.
CMS: Review stale entries
Periodic curator pass — find drafts that have stalled, published entries that haven't been touched in months, and orphaned assets. Reports findings with recommended actions. No persistence layer; the operator reviews the curator-runner's log/reply and acts manually via existing CMS tools.
CMS: Revise an existing entry
Edit a live or draft article in place — reword a sentence, swap an image, add or remove a block — without regenerating the whole body, then preview and publish the change.
CMS: Upload an asset and embed it
Two-phase asset upload (request presigned upload → send binary → complete), embed in entries, and audit unused assets.
commerce 2
Commerce: Answer product questions
Answer "do you have…", "how much is…", and "is it in stock?" from the connected store's live catalog — search products, fetch variants and availability, and know when the KB is the better source.
Commerce: Check order status
Answer "where is my order?" — list a customer's recent orders, fetch one order's line items and shipment tracking, and know when to hand over to a human.
connectors 2
Connectors: Connect a custom MCP server
Give the support agent live read access to a system Munin has no vendor adapter for — a proprietary CRM, a subscription database, an internal API — by pointing Munin at an MCP server the customer hosts. Covers the setup flow, the server contract (bearer auth + signed identity assertions), and a reference implementation to hand to the customer's developers.
Connectors: Connect an external system
Connect Shopify, Magento 2, Gastroplanner, Bing Webmaster Tools or Google Search Console so agents can answer order, booking and search-performance questions — create the vendor credential (pasted key or OAuth redirect), register the connection, test it, and understand the identity model that keeps customers scoped to their own data.
conv 13
Conv: Configure national ID redaction
Decide what Munin keeps when customers send national identity numbers, and clean up messages stored before the policy was set.
Conv: Escalate a conversation to a human
How an external chat-widget bot detects that a human/agent in Munin has replied and yields the conversation.
Promote a topic to auto-send
Decide from the review record whether a conversation topic is ready to answer without human review, promote it, and step it back when the numbers say so.
Recover a failed message delivery
Find outgoing email or SMS that never reached the recipient, read why the send failed, fix the cause, and re-queue the delivery with conv_retry_delivery.
Send images in replies
How to attach an image to a conversation reply, read the images a customer sent, and delete one.
Set a conversation's topic and title
When a new inbound conversation is created, read its first end-user message, tag it with the best-fitting topic (creating one only when confident none fit), and give it a short title if it doesn't already have one. Fires on every `conversation.created` event so the inbox is triaged the moment a message lands — without operator intervention.
Conv: Set up a chat widget
Provision a per-channel widget API key, push transcripts and image attachments via POST /v1/widget/messages, and wire the human-handoff webhook.
Conv: Set up email and chat-widget channels together
Stand up email + widget conversation channels for a new tenant in one pass — configure, test, hand off.
Conv: Set up an email channel
Configure SMTP outbound and optional IMAP inbound for an email channel, then verify the credentials.
Set up a voice or SMS channel
Configure a Vapi/Threll voice channel or Twilio/MessageBird SMS channel with non-secret config, hand off the API keys through a credential link, and verify the result.
Stop a junk sender
Marking a conversation spam remembers the sender, so their next thread is settled at ingest instead of costing another agent pass. How the flag is set, what it changes, and how it comes off.
Conv: Strip the signature from an inbound email message
Cleanup pass that removes the sender's sign-off and contact block from an inbound email body that has already had its quoted reply stripped, then writes the cleaned body back via `conv_strip_message_signature`.
Conv: Track email opens
Turn on open tracking for an email channel, then read per-message and per-channel open numbers — and report them with the caveats that pixel tracking carries.
crm 7
CRM: Clean up contact data
Periodic curator pass — find duplicate / inconsistent contacts, file high-confidence pairs as structured merge proposals via crm_propose_merge. Designed to be run on a cadence by an admin agent (weekly is a good default). The operator reviews via crm_list_merge_proposals and resolves with crm_apply_merge_proposal / crm_dismiss_merge_proposal.
CRM: Deduplicate contacts
Consolidate two contact rows that are the same person — file the pair as a merge proposal with crm_propose_merge, then resolve it with crm_apply_merge_proposal or crm_dismiss_merge_proposal. Covers the one-off duplicate you hit during other work; the scheduled population sweep is skill://crm/clean-contact-data.
CRM: Extract a contact from a message
When a conversation closes, read the thread for identifying info the end-user volunteered (name, email, phone, company, title) and persist it to the CRM as a contact — auto-applied, no proposal queue. Designed to fire on every `conversation.closed` event so visitor-volunteered identity becomes structured CRM data without operator intervention.
CRM: Import and score leads
Bulk-import contacts, attach them to companies and a deal pipeline, log the source touchpoint, and seed AI summaries for downstream prioritization.
CRM: Onboard a new customer
Recommended sequence for capturing a new customer, attaching them to a company, and seeding the AI summary that drives later prioritization.
CRM: Progress a deal through the pipeline
Move a deal through pipeline stages with the right activity log at each gate, then refresh AI summary so prioritization stays fresh.
CRM: Repair an undeliverable address
Handle an email address mail can no longer reach — read the deliverability state on a contact, record a dead address so outreach stops sending, find the person's new address, and reopen the address once it works again. Deliverability is reachability, not consent; never fix it with do_not_contact.
identity 1
kb 5
KB: Create the first space
Stand up a fresh org's knowledge base — pick a space taxonomy, create the first space, optionally seed a welcome doc.
KB: Import articles in bulk from CSV or JSON
Generalized bulk import pipeline for KB articles from any structured source. Companion to import-from-google-docs — that one covers chunking; this one covers source handling and idempotency.
KB: Import knowledge from Google Docs (or any text source)
Bulk-load articles into the knowledge base, sized for vector search and FTS to perform well.
KB: Review and curate content
How an admin agent turns what a human knew — and the agent didn't — into KB documents, so the next end-user with the same question gets a real answer instead of another handover.
KB: Revise a document
Correct or extend an existing knowledge-base document in place with targeted text replacements — a changed price, a superseded step, a missing exception — without regenerating the body the agent answers from.
outreach 7
Outreach: Draft a first-touch call
Draft the opening and talking points for a first-touch outbound call on a voice campaign. One pending proposal per (campaign, contact). Only a signed-in person in the Munin dashboard can place the call — an agent never can, on any host.
Outreach: Draft a first-touch email
Periodic curator pass that drafts personalised first-touch outreach emails for every enabled campaign. One pending proposal per (campaign, contact). Drafts go into the operator review queue — never auto-send. Runs weekly by default; the operator approves each draft before it leaves the org.
Outreach: Draft a first-touch text message
Draft first-touch SMS outreach for a campaign running on an SMS channel. One pending proposal per (campaign, contact), capped at 480 characters, plain text. Only a signed-in person in the Munin dashboard can approve a text — an agent never sends one.
Outreach: Draft follow-ups
Scheduled curator pass (daily by default) that drafts the next sequence step for outreach conversations where the prospect has not replied. Campaigns opt in by defining `sequenceSteps`; each due follow-up is drafted from its step brief and filed for human approval — never auto-send. Any inbound reply permanently stops the sequence.
Outreach: Draft a reply
Per-message curator pass that drafts a suggested reply when an inbound message lands on an outreach-originated conversation. Drafts go to the operator review queue — never auto-send. Triggered event-driven from `conversation.message.received` whenever the conversation has an `outreachCampaignId` and `agentMode='draft_only'`.
Outreach: Extract an outcome
After an outbound call ends or a prospect replies to an outreach email or SMS, read what they said and write it into the contact's custom fields, under the field schema the campaign declares. Auto-applied, no proposal queue. Fires on conversation.voice.call_ended and on inbound replies, for campaigns with a non-empty extractionSchema.
Outreach: Review pending proposals
Operator review pass over drafted outreach proposals — approve each pending draft (sending it now or scheduling it for a named time), dismiss it, or call off a scheduled send, plus the two agent-side corrections, revise and withdraw. Voice and SMS proposals are approved only in the Munin dashboard. In MCP App hosts this renders the interactive Munin Inspector panel.
playbooks 5
Playbook: Customer acquisition (CRM + Conv)
End-to-end flow from a fresh lead list to first conversation — bulk-import contacts, send a welcome email, log the touchpoint, hand off to a human if interest signals fire.
Playbook: Data migration (server ⇄ server)
Move one org's data between two Munin servers, either direction, using the per-module export/import tools — in foreign-key order, threading the returned idMap so dependent records resolve their parents on the target.
Playbook: Frontend integration (Conv widget + Analytics + CMS)
Wire a freshly-scaffolded frontend (Lovable, Bolt, Replit, v0, Cursor, Claude Code, …) to a Munin tenant — chat widget, page-view tracker, and live CMS content — without rediscovering the same five gotchas every time.
Playbook: Publish and distribute (CMS + KB + Conv)
Author content in the CMS, mirror the parts that should be searchable to the KB, and announce the publish to a conversation channel.
Playbook: Support desk launch (Conv + CRM + KB)
Stand up a working support desk for a new tenant — channels, contacts, knowledge base — so the first ticket has tooling around it.
seo 1
slack 1
social 3
Social: Attach a picture or video to a post
Put an image or video on a social post draft — including a file that exists only on somebody's machine, which goes through the CMS first — and understand when the file is read, what happens if it is gone by then, and why the asset needs a home rather than being left loose.
Social: Draft companion posts for an article
Turn one published article into three or four social posts that take genuinely different angles, tagged so later click figures show which angle earned the attention, and left for a person to pick from.
Social: Publish a reviewed post
Publish a social post draft through Munin from the calling person's own connected account, and handle the four ways it can refuse — no connection, a lapsed connection, a draft already decided, and a platform that rejected the post.