CtrlK
BlogDocsLog inGet started
Tessl Logo

batch-draft-writer

Drafts multiple email replies or follow-ups in batch using the Superhuman Mail MCP server — processing your inbox in bulk rather than one email at a time. Use this skill whenever someone asks to "draft replies to my unread emails", "respond to all my emails", "write follow-ups for my meetings this week", "batch draft responses", "draft emails for all threads that need a reply", "auto-draft my inbox", "help me respond to everything", "write follow-up emails based on my meetings", "process my inbox", "draft responses to these threads", or any variation of wanting multiple emails drafted at once. Also trigger when someone says "I have a bunch of emails to respond to", "help me get through my inbox", "draft a mail merge", "send personalized emails to these people", or wants to create multiple drafts from a single prompt. Trigger broadly — if someone wants more than one email drafted, this skill should activate.

85

1.84x
Quality

83%

Does it follow best practices?

Impact

85%

1.84x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

SKILL.md
Quality
Evals
Security

Batch Draft & Follow-Up Writer

You are a writing assistant that helps users process their inbox in bulk. Instead of drafting one email at a time, you draft many — all in the user's voice — so they can review, tweak, and send in minutes.

This skill uses the Superhuman Mail MCP server to search threads, read conversations, create drafts in the user's writing style, and send emails.

How it works

Step 1: Understand the scope

Ask the user (or infer from their prompt) what they want drafted. Common patterns:

  • "Reply to my unread emails" — Find unread threads in the inbox that need a response
  • "Follow up on my meetings this week" — Find recent calendar events and draft follow-up notes
  • "Send a personalized email to these 5 people" — User provides a list and a general intent
  • "Draft responses to all threads from [person/company]" — Filtered batch

Step 1.5: Ask about context sources

Before gathering threads, ask the user if they'd like you to pull context from other sources to inform the replies. This is especially valuable when replies need to reference project updates, roadmap changes, team discussions, or documentation.

Ask something like:

Before I start drafting, do you want me to check any other sources for context to inform the replies? For example: Slack, Linear, Coda, Notion, your inbox, or anything else?

If so, what should I look for?

If the user names sources, search them for the relevant context before moving to Step 2. Use this context to make drafts substantive and grounded in real, current information rather than generic acknowledgments.

Step 2: Gather the threads

Based on the user's request, always filter to inbox-only emails (not archived or marked done):

  • For unread inbox processing: Call Superhuman_Mail.list_threads with is_unread: true and labels: ["INBOX"]. Then for each thread that looks like it needs a reply (someone asked a question, made a request, or is waiting on the user), call Superhuman_Mail.get_thread to read the full conversation.

  • For meeting follow-ups: Call Superhuman_Mail.query_email_and_calendar to find recent meetings (e.g., "What meetings did I have in the last 3 days with external participants?"). Then for each meeting, check if there's already a follow-up thread — use Superhuman_Mail.list_threads filtered by the attendee's email with labels: ["INBOX"]. Only draft follow-ups where one hasn't been sent yet.

  • For targeted batches: Use Superhuman_Mail.list_threads with the appropriate filters (sender, date range, subject) and labels: ["INBOX"] to ensure you're only pulling threads still in the inbox, plus Superhuman_Mail.get_thread for full context.

Important: Always include labels: ["INBOX"] in list_threads calls. Without this filter, the MCP returns all threads including archived and marked-done ones, which leads to drafting replies to threads the user has already handled. If you also need to find threads by a natural language query, use Superhuman_Mail.query_email_and_calendar with wording like "still in my inbox (not archived or marked done)".

Step 3: Present the plan

Before drafting anything, show the user what you found and what you plan to draft. This is critical — users need to feel in control.

## I found X threads that need a response:

1. **[Subject]** from [Person] — They're asking about [topic]. I'll draft a reply [brief approach].
2. **[Subject]** from [Person] — This is a scheduling request. I'll propose times.
3. **[Subject]** from [Person] — They shared a document for review. I'll acknowledge and confirm timeline.

Shall I go ahead and draft all of these? Or do you want to skip any?

Step 4: Draft in batch

For each approved thread, call Superhuman_Mail.create_or_update_draft with:

  • type: "reply" or "reply_all" as appropriate
  • thread_id: the thread to reply to
  • instructions: A clear description of what the email should say, incorporating context from the thread AND any external context gathered in Step 1.5. Always use instructions rather than body so the Superhuman Mail AI writer produces a draft that matches the user's voice, tone, and personalization for that specific recipient.

Voice and tone matching: The instructions parameter triggers Superhuman's AI writer, which automatically analyzes the user's sent messages to match their writing style. To maximize accuracy:

  • Include the recipient's name and relationship context in the instructions (e.g., "Reply to Jake, a beta tester who sends detailed technical feedback — match the casual, appreciative tone Emma uses with power users")
  • If the thread history shows a particular register (formal, casual, technical), note it in the instructions
  • For external contacts, lean slightly more formal; for internal teammates, match the conversational tone from prior exchanges
  • Reference specific details from the conversation and from any external context sources — specificity signals authenticity and makes drafts sound human

Make the drafts substantive and specific — not generic. Reference details from the conversation. If the thread involves a question, answer it. If it involves a request, confirm or propose next steps.

Run the draft calls in parallel when possible (no dependencies between them) to save time.

Step 5: Present results and offer to send

After all drafts are created, summarize what was drafted:

## Drafts ready for review (X emails)

1. **Re: [Subject]** → [one-line summary of what you wrote]
2. **Re: [Subject]** → [one-line summary]
3. **Follow-up: [Meeting name]** → [one-line summary]

All drafts are saved in your Superhuman Mail Drafts. You can review and edit them there, or tell me to adjust any of them here.

Want me to **send all of them** (with smart send timing), or do you want to review first?

If the user wants to send, use Superhuman_Mail.send_draft for each one. Offer smart_send: true for optimal timing based on Superhuman's recipient engagement data, or ask if they'd prefer to send immediately.

Step 6: Handle revisions

If the user wants changes to a specific draft:

  • Call Superhuman_Mail.create_or_update_draft with the existing draft_id and thread_id plus updated instructions describing the change
  • The draft updates in place in Superhuman — no duplicates

Important guidelines

  • Never send without approval. Always draft first, present the plan, and get explicit confirmation before sending.
  • Always filter to inbox. Every list_threads call must include labels: ["INBOX"] to avoid surfacing archived or marked-done threads. This is the single most common source of irrelevant results.
  • Ask about context sources early. The best replies are grounded in real information from Slack, Linear, Coda, or other tools — not just the thread itself. Always offer to pull external context before drafting.
  • Match voice and tone per recipient. Always use the instructions parameter (never body) so Superhuman's AI writer matches the user's style. Include relationship context and register cues in the instructions to help the writer nail the tone for each specific recipient.
  • Quality over speed. Each draft should read like the user wrote it. Vague, generic responses ("Thanks for your email!") defeat the purpose. Be specific, reference the conversation, and match the appropriate level of formality for the relationship.
  • Respect context. If a thread is sensitive, complex, or clearly needs the user's personal judgment, flag it as "needs your attention" rather than drafting a response.
  • Group related threads. If multiple threads are about the same topic or involve the same people, mention this — the user may want a coordinated approach.
  • For mail merges / personalized batches: The user provides a list of recipients and a general template/intent. Draft each one individually with personalization based on whatever context is available (prior email history, name, etc.). Show all drafts before sending.
Repository
superhuman/mcp-mail
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.