Ensure Every Team Learns from Every Incident

AI compiles postmortem reports with root cause, timeline, and action items. Engineering reviews before distribution to protect sensitive details.


Why this matters

Postmortems get written but never reach the teams that need them most. Lessons learned sit in Notion or Google Docs, unread by the engineers who could prevent the next occurrence. When distribution does happen, it's inconsistent — some teams get the full report while others hear about it secondhand.


How MultiMail solves this

MultiMail's AI agent compiles incident data into clear postmortem summaries, identifies all affected teams, and drafts distribution emails with appropriate detail levels. Gated_send oversight ensures engineering reviews the content before distribution, protecting sensitive infrastructure details.

1

Compile Incident Data

The AI agent gathers data from your incident management system — timeline, affected services, impact metrics, and root cause analysis — and organizes it into a structured postmortem format.

2

Draft Summary Email

Using send_email, the agent composes a clear postmortem summary with incident timeline, root cause, impact assessment, and action items with owners and deadlines.

3

Identify Distribution List

The agent determines which teams need the postmortem based on affected services, on-call rotations, and organizational structure. Different teams may receive different detail levels.

4

Engineering Reviews

With gated_send, the postmortem draft enters an approval queue. Engineering leadership reviews for accuracy and ensures no sensitive vulnerability details are exposed to inappropriate audiences.


Implementation

Distribute a Postmortem Report
python
import requests

API = "https://api.multimail.dev/v1"
HEADERS = {"Authorization": "Bearer mm_live_xxx"}

response = requests.post(
    f"{API}/send",
    headers=HEADERS,
    json={
        "from": "[email protected]",
        "to": ["[email protected]"],
        "subject": "Postmortem: 45-minute API outage on March 12 (action items inside)",
        "text_body": (
            "INCIDENT POSTMORTEM\n\n"
            "Date: March 12, 2026, 14:00-14:45 UTC\n"
            "Severity: P1\n"
            "Duration: 45 minutes\n"
            "Impact: >50% of API requests returned 5xx errors\n\n"
            "Timeline:\n"
            "14:00 - Deploy v2.4.1 to production\n"
            "14:05 - Error rate exceeds 5% threshold\n"
            "14:12 - On-call paged, investigation begins\n"
            "14:30 - Root cause identified: connection pool exhaustion\n"
            "14:45 - Rollback to v2.4.0 complete, traffic normal\n\n"
            "Root Cause: New connection pooling config reduced max " 
            "connections from 100 to 10.\n\n"
            "Action Items:\n"
            "1. Add connection pool size to deployment checklist (Owner: Casey)\n"
            "2. Add pool exhaustion alert (Owner: Pat, Due: March 19)\n"
            "3. Load test config changes pre-deploy (Owner: Alex, Due: March 26)"
        ),
        "html_body": "<h2>Incident Postmortem</h2><p>Date: March 12...</p>"
    }
)
print(f"Postmortem queued for review: {response.json()[&"cm">#039;id']}")

Send a compiled incident postmortem to affected teams via the MultiMail API.

Approve and Send a Postmortem
python
import requests

API = "https://api.multimail.dev/v1"
HEADERS = {"Authorization": "Bearer mm_live_xxx"}

"cm"># List pending postmortem emails
pending = requests.get(
    f"{API}/mailboxes/incidents-mailbox-id/pending",
    headers=HEADERS
).json()

for draft in pending["emails"]:
    if "Postmortem" in draft["subject"]:
        "cm"># Read full content for review
        full = requests.get(
            f"{API}/emails/{draft[&"cm">#039;id']}",
            headers=HEADERS
        ).json()
        print(f"Review: {full[&"cm">#039;subject']}")
        print(f"Body: {full[&"cm">#039;text_body'][:200]}...")

        # Approve after review
        requests.post(
            f"{API}/emails/{draft[&"cm">#039;id']}/decide",
            headers=HEADERS,
            json={"action": "approve"}
        )

Review pending postmortems and approve for distribution.

MCP Tool: Postmortem Distribution
typescript
"cm">// Send postmortem to engineering team
const result = await mcp.send_email({
  to: "[email protected]",
  subject: "Postmortem: API outage March 12 (action items inside)",
  text_body: "Incident summary: 45-minute outage caused by connection pool..."
});

"cm">// Tag for incident tracking
await mcp.tag_email({
  email_id: result.id,
  tags: ["postmortem", "P1", "api-outage", "march-2026"]
});

"cm">// Check pending approvals
const pending = await mcp.list_pending({
  mailbox_id: "incidents-mailbox-id"
});
console.log(`${pending.emails.length} postmortems awaiting review`);

Use MCP tools to distribute and tag incident postmortems.


What you get

Consistent Distribution

Every postmortem reaches every affected team. No more relying on Slack threads or hoping someone shares the Google Doc link.

Protect Sensitive Details

Gated send ensures engineering leadership reviews postmortem content before distribution. Vulnerability details and infrastructure specifics stay within appropriate audiences.

Action Item Tracking

Postmortem emails include named action items with deadlines. The email record creates accountability and serves as a reference for follow-up.

SOC 2 Compliance Evidence

Logged postmortem distribution provides audit evidence that incident learnings were communicated to relevant teams within required timeframes.


Recommended oversight mode

Recommended
gated_send
Postmortems may contain sensitive details about infrastructure vulnerabilities, security weaknesses, or customer impact. Engineering leadership should review before distribution to ensure appropriate detail levels for each audience.

Common questions

Can different teams receive different detail levels?
Yes. Your AI agent can draft multiple versions — a full technical postmortem for engineering, an executive summary for leadership, and an impact summary for customer-facing teams. Each version enters the approval queue independently.
How does this integrate with incident management tools?
MultiMail handles email distribution. Your AI agent connects to PagerDuty, OpsGenie, or your incident management platform to pull timeline, impact, and root cause data. The agent compiles this into the postmortem format and distributes via MultiMail.
What if the postmortem needs revision after distribution?
The agent can send follow-up corrections using reply_email to maintain the thread context. Recipients see the update in the same conversation as the original postmortem, keeping all information together.
How do we track whether action items get completed?
The AI agent can send follow-up emails on action item deadlines, asking owners for status updates. Replies come back to MultiMail where the agent can track completion. Tag emails by incident ID for easy cross-referencing.

Explore more use cases

The only agent email with a verifiable sender

Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a 38-tool MCP server. Formally verified in Lean 4.