Gmail
Ops & Productivity 25 minutes

How to Answer Support Emails with Your Product Docs as Context

Build a support-reply agent in Claude Code that drafts replies grounded in your real product docs. Wire holds the docs, Gmail holds the thread and your voice, and drafts land in Gmail for review.

Wire Gmail

At a glance

  • You'll build a support-reply agent in Claude Code that reads incoming emails, pulls product docs from Wire, learns your voice from your Gmail sent folder, and drafts a reply for your review.
  • Drafts always land in Gmail's Drafts folder for review. The Gmail MCP server doesn't expose a send tool, so auto-send is architecturally impossible.
  • Wire holds what is NOT in your email. Product docs, pricing, feature list, known issues, policies.
  • Built for solo founders, early-stage ops, and small support teams who keep pasting their docs into an AI chat.

What you need

  • A Wire account.
  • Claude Code logged into claude.ai with the Gmail integration enabled.
  • Your product/company docs in any form (Notion export, Google Doc, markdown, scraped landing page).

Architecture

┌───────────────────────────────┐   ┌────────────────────────────┐
│ Gmail (via MCP)               │   │ Wire container             │
│ • incoming thread             │   │ • product docs             │
│ • your past replies (voice)   │   │ • pricing                  │
│ • thread search               │   │ • known issues             │
└──────────────┬────────────────┘   │ • policies                 │
               │                    └──────────────┬─────────────┘
               │                                   │ Wire tools
               ▼                                   ▼
        ┌────────────────────────────────────────────────┐
        │                 Claude Code                    │
        │   inbox search    →    container search        │
        │        ↓                      ↓                │
        │    past replies          product context       │
        │        ↓                      ↓                │
        │         save draft (never sends)               │
        └────────────────────┬───────────────────────────┘
                             │
                             ▼
                    Gmail Drafts folder
                    (you review and send)

Answering support emails with an AI usually means the same loop every time: a product question comes in, you open an AI chat, paste the email, paste in your pricing page, paste in your feature docs, write a prompt, copy the reply back to Gmail, edit, send. The agent doesn’t remember any of it next time. The next email starts the dance over.

This guide walks through building a support-reply agent: a named workflow in Claude Code that reads unread customer emails, pulls your product docs from a Wire container and your voice from your Gmail sent folder, and saves drafts for you to review. Once the agent exists, you stop being the glue between your docs, your voice, and your inbox. The agent does that work. You review and hit send.

What you’re building

A support-reply agent with two sources of truth and one output surface. It reads your unread support emails, pulls product facts from a Wire container, pulls similar past replies from your Gmail sent folder, drafts a response, and saves it to Gmail’s Drafts folder. You review in Gmail and hit send.

Two data sources, one draft:

  • Wire holds the stuff that is not in your email. Product docs, pricing, feature descriptions, known issues, policies. Anything you would otherwise paste into an AI chat.
  • Gmail (via the claude.ai integration) provides the inbound email, your thread history with the sender, and your past sent replies (voice + canonical answers).

The agent never sends. The claude.ai Gmail integration doesn’t expose a send tool, only create_draft, so auto-send is impossible by design.

How it works

Without grounded context, a generic AI draft for a question like “does your Starter plan support custom domains?” looks like:

Thanks for reaching out about custom domains. Feature availability can vary by plan. Would you be open to a quick call to discuss?

With a Wire container holding your product docs, the same agent produces:

Thanks for reaching out. Custom domains aren’t on Starter, they unlock on Team and above. Team also includes SSO and audit logs, and it’s billed per seat. Happy to walk through whether the move makes sense for your setup.

What changed: the agent had real product facts to reference, pulled from your own docs, plus real past replies to borrow tone from.

Why Wire containers

The product context your agent needs is scattered. Pricing in Notion, features in a README, policies buried in a Slack thread, known issues in GitHub, a founder Loom in Google Docs. A Wire container is the one place all of that becomes queryable by the agent, in a format it can actually reason over.

One surface, many sources. Upload a file, paste a page, let the agent write entries itself. Wire normalizes them into searchable entries that the agent can retrieve by meaning, not just exact keyword match. You don’t have to keep your source material in one format or rewrite it into a perfect doc before it’s useful.

Fresh answers, not stale ones. When you update pricing, add a new entry. Wire surfaces relationships and contradictions between entries so the agent can reason over them, including flagging when something looks out of date. You don’t have to hunt down and delete every old version. The agent works out what to use from what you have.

One container, many agents. When you later build a sales responder, an onboarding helper, or a meeting-prep agent, they all read from the same container. The product docs you write once serve every downstream agent. You don’t maintain three parallel knowledge bases that drift apart.

Setup

A three-step setup. All three link to the canonical docs so you pick the path that fits your stack.

1. Create a Wire container and add your docs

Create a container and add your support material to it. Good things to include: product documentation, release notes, policies, help docs, internal FAQs. You can upload files through the dashboard, or add entries programmatically via the API.

See Creating containers for both paths.

2. Connect Wire to Claude Code

Add the Wire MCP to Claude Code so the agent can search your container.

See Claude Code + Wire MCP for the connection steps.

3. Connect Gmail to Claude Code

Enable the Gmail connector on your Claude account so Claude Code can read inbound threads, search your sent folder, and save drafts.

See Claude’s Google Workspace connectors guide.

Usage

Once the three connections are live, the agent runs from a single prompt in Claude Code. Paste this whenever you want a pass over your inbox:

Use the Gmail connector to review my unanswered customer support emails
from the last 24 hours. An email counts as answered if there's already a
draft reply in the thread, if I've replied to it already, or if the
thread has the `ai-drafted` label (you add that label to threads you've
already drafted a reply for, so skip them on subsequent runs). Also skip
anything that is not a customer asking for support: marketing, automated
notifications, internal email, receipts, threads I've already handled.

For each remaining email:

1. Search my Wire container for product docs, release notes, policies,
   known issues, and any other context that would help answer the
   customer's specific question. Pull the three or four entries most
   relevant to what they're asking. Follow epistemic provenance hints
   on returned entries: prefer entries with a clear source, prefer the
   newest entry when two disagree, and treat entries marked as
   deprecated or superseded as non-authoritative.

2. Search my Gmail sent folder for two or three prior replies I've sent
   to similar questions. Use those to understand my tone, sentence
   length, sign-off, and any canonical phrasing I use. Do not copy them
   verbatim.

3. Draft a reply that:
   - Answers the customer's question using only facts traceable to a
     Wire entry. If the Wire container doesn't cover the question,
     don't draft a reply for this thread. Skip it and add it to the
     end-of-run report so I can answer it myself.
   - Sounds like my past replies. Match the voice from my sent folder.
   - Opens with a brief acknowledgement of what they asked and closes
     with my typical sign-off.
   - Stays short. Long replies rarely help on support threads.

4. Save the reply as a draft in Gmail, attached to the original thread.

5. Label the thread "ai-drafted" in Gmail so this agent skips it on the
   next run.

When the loop finishes, alert me with:
- How many drafts you created.
- Which threads you skipped and why.
- Any threads where the Wire container didn't have enough supporting
  material for a confident draft. List the sender and subject for each
  so I can answer them myself, and tell me which docs I should add to
  Wire to cover them next time.

That’s the whole thing. Paste it into Claude Code once a day, review the drafts it parks in Gmail’s Drafts folder, and hit send on the ones you’re happy with.

We simplified this into a one-command skill. Download it below and run it with /support-reply-drafter instead of pasting the prompt every time.

The agent, as a skill

support-reply-drafter

Confirms your Gmail and Wire container are connected, then drafts replies for you: reads the inbox, pulls product context from Wire, borrows voice from your sent folder, and saves drafts to Gmail for review.

We'll send occasional product updates. No spam. By downloading, you agree to our privacy policy.

Tips and patterns

What the skill takes care of.

Filters out non-customer threads.

The skill excludes marketing blasts, automated notifications, internal email, and threads you've already handled. You don't have to write the filter.

Traces every specific claim back to Wire.

The skill requires the agent to ground any factual claim in a Wire entry. If the container doesn't cover the question, it skips drafting that thread and surfaces it at the end so you can answer it yourself.

Learns your voice from your sent emails.

The skill reads a few of your past replies to similar questions and mirrors your tone, sentence length, and sign-off. Your sent history is the source of truth for how you write.

Labels processed threads so the next run doesn't duplicate.

Each thread the skill drafts gets an `ai-drafted` Gmail label. On the next run, those threads are skipped. No doubled drafts.

Reports gaps.

When Wire doesn't have enough context to answer confidently, the skill tells you which threads it skipped and why. Those are the entries you need to add to fill the gap.

Troubleshooting

If something's off.

Claude Code says it can't see Gmail.
The claude.ai Gmail integration isn't enabled for this session. Open claude.ai, go to Integrations, enable Gmail, then restart Claude Code. Re-run `/mcp` to confirm `mcp__claude_ai_Gmail__*` tools are listed.
Drafts are accurate on facts but sound like generic support boilerplate.
Your Gmail sent folder doesn't have enough similar replies for the agent to learn your voice from. Answer the next handful of support emails yourself, in your natural tone. Once those live in your sent folder, the agent has real material to mirror on the next run.
Drafts cite outdated pricing or feature details.
Confirm the current pricing is actually in the Wire container. If it isn't, add it. Wire surfaces relationships and contradictions between entries so the agent can reason over them, including spotting conflicts between old and new pricing. Add the updated info and the agent will work it out on the next run.
The agent drafted a reply for an email I wanted it to skip.
Nothing was sent, the agent can only save drafts. Delete the unwanted draft in Gmail. To prevent it next run, narrow the inbox filter by label, sender, or recency. A common pattern: add a `skip-ai` Gmail label, apply it to threads you want to handle yourself, and tell the agent to exclude that label.
Two drafts appear for the same thread.
The agent ran twice and there's no dedupe. It labels processed threads as `ai-drafted` by default. If that label is missing, the check fails. Create the label in Gmail or let the agent create it on first run.

Common questions

Why do I need Wire if Gmail MCP can already search my email?
Because your product docs are not in your email. Pricing, feature descriptions, known issues, onboarding steps. That stuff lives in Notion, Google Docs, or a docs/ folder. Gmail gives the agent your voice and thread history. Wire gives it everything else. Both are needed; neither alone is enough.
Does this ever send an email on its own?
No. The claude.ai Gmail integration exposes `create_draft` but not `send`. Auto-send isn't prompt-forbidden here, it's architecturally impossible. Every draft lands in Gmail's Drafts folder for your review.
Who is this actually for?
Solo founders, early-stage ops people, and small support teams who answer product and support emails themselves. The signal is: you keep pasting your docs and an email thread into an AI chat to compose a reply. This collapses that loop into one command.
Do I need well-written product docs to start?
No. Start with whatever you have, even if scattered. Paste your pricing page, your landing page copy, your README, your founder-led Loom transcript. Ten entries is enough to see value. The agent is fine with rough material as long as it's factually correct.
How often should I update the Wire container?
Whenever a product fact changes. Pricing, a new feature, a resolved known issue. The agent cites what's in Wire; stale entries produce confidently wrong drafts. Treat it like a changelog-driven source of truth.

Start building with Wire.

Create your first container in under a minute. No credit card required.

Create Your First Container