
Your agent hunts prospects, researches each one, and fills your Gmail drafts with personalized outreach. You skim and hit send.
The architecture every serious team converged on: the agent researches and drafts, the human sends. Draft-only isn’t a limitation — it’s the design. It catches hallucinated “personalization” before a prospect sees it, keeps you compliant (CAN-SPAM, GDPR), and protects your domain reputation. This guide wires prospecting, verification, research, and a drafts-only Gmail connection into one morning routine.
Outreach quality compounds: Hermes tracks which hooks earn replies and patches its own outreach skill week over week — a learning loop no static template has. Its subagents parallelize per-prospect research, and drafts-only Gmail access keeps you the sender.
Everything downstream inherits from this file. Be brutally specific — “companies that could use software” produces spam; a sharp ICP produces replies:
---
name: outreach
description: Research prospects and draft cold outreach in my voice
---
## ICP
- Boutique hotels & guesthouses, 10–80 rooms, DACH region
- Buyer: owner or GM. Signal: still taking bookings by phone/email
## Non-negotiable rules
- ONE verified personalization hook per email. Every factual claim
must cite a source URL in the research notes — no source, no claim.
- Structure: Hook → Problem → CTA. Under 85 words. Plain text.
- No links in the first email. One CTA: a specific question.
- Write in my voice: direct, warm, zero buzzwords. Never say
"I hope this finds you well", "synergy", "solution", "circle back".
- NEVER send. Create Gmail drafts only.
## Per prospect
1. Verify the email (Hunter) — skip catch-alls and role addresses.
2. Research: website, news, job posts. Find the ONE hook.
3. Draft. 4. Log to the CRM sheet (dedupe on email address).The banned-phrases list is the highest-leverage section — it is measurably what makes the output not sound like AI.
workspace-mcp supports permission tiers, and there is a tier that is exactly this use case: gmail:drafts. The agent can create drafts but structurally cannot send. Create a Google Cloud OAuth client (Desktop type), then:
mcp_servers:
gmail:
command: "uvx"
args: ["workspace-mcp", "--permissions", "gmail:drafts"]
env:
GOOGLE_OAUTH_CLIENT_ID: "${GOOGLE_OAUTH_CLIENT_ID}"
GOOGLE_OAUTH_CLIENT_SECRET: "${GOOGLE_OAUTH_CLIENT_SECRET}"Two headless-server gotchas: (1) run the first OAuth consent on your laptop, then copy the token directory to the Pocketcorp; (2) publish your OAuth app (or set it Internal) — apps left in “Testing” status get their refresh tokens killed every 7 days, which looks like a random mid-week breakage.
Three MCPs cover the funnel — find, verify, research. All three have workable free tiers:
mcp_servers:
apollo: # lead search by ICP — free plan includes MCP
url: "https://mcp.apollo.io"
auth: oauth
hunter: # email verification — 50 free/mo
command: "npx"
args: ["-y", "hunter-mcp"]
env: { HUNTER_API_KEY: "${HUNTER_API_KEY}" }
exa: # company research / news
command: "npx"
args: ["-y", "exa-mcp-server"]
env: { EXA_API_KEY: "${EXA_API_KEY}" }Verification before drafting is not optional: B2B contact data decays ~22% per year, and a bounce rate above 2% starts hurting your domain. Skipping unverifiable addresses is cheaper than sending to them.
One cron job runs the whole funnel every weekday morning, in a batch small enough to review over coffee:
/cron add "0 7 * * 1-5" "Run the outreach skill: find 15 new
prospects matching the ICP (dedupe against the CRM sheet),
verify emails, research each one, draft outreach for the
qualified ones, log everything, then message me a digest:
count, 3 best hooks, anything skipped and why."☕ 12 drafts ready. Best hooks: (1) Hotel Alpenblick just posted a front-desk job mentioning “phone bookings” — drafted around desk workload. (2) Gasthof Sonne got a renovation writeup in the local paper. (3) Pension Edelweiss still has a fax number on their contact page. Skipped 3: two catch-all domains, one already in the CRM.
Drop the fax one — too snarky. Rest look good.
Deleted that draft and noted the feedback: no hooks that could read as mocking. 11 drafts waiting in Gmail.
Stay the sender. Manual sending from your normal Gmail at 10–25/day keeps you under every bulk-sender threshold and every automation trigger. If you ever scale past ~100/day, that is a different game: separate sending domain, warm-up weeks, SPF/DKIM/DMARC, sub-0.3% complaint rate.
Once replies exist, make them teach the agent. A weekly cron reviews the CRM sheet — which hooks got replies, which subject lines died — and Hermes patches its own outreach skill via skill_manage. This is the learning loop doing sales ops: your reply rate in week six should embarrass week one.
A drafts folder that fills itself every morning with researched, verified, genuinely personalized outreach — logged in a CRM sheet, improving weekly from real reply data. You remain the human who hits send.