Guide — early access, not yet available for real sending

How to run cold email with your AI coding agent

If you've asked Claude Code or Codex to "set up cold email outreach" and it started reaching for a domain registrar API, a mailbox/warmup vendor, and a sequencing library, this is the shorter path: one signup, one token, and a curated tool surface your agent already knows how to drive.

Honest status disclosure This platform is in active build and test-mode only. The steps below work today against a live sandbox — no real domains, mailboxes, or sends yet. See FAQ for what "early access" means concretely.

The problem this solves

Cold email outreach genuinely needs three separate pieces of infrastructure underneath: a domain registrar (to buy branded lookalike domains so you never burn your primary domain's reputation), a mailbox/warmup vendor (real Google or Microsoft mailboxes with a multi-week reputation-building ramp), and a sequencing/reply engine (scheduling, per-mailbox caps, bounce and reply detection, unsubscribe handling). Wiring these together yourself is a completely valid choice — see the DIY cost comparison for exactly what that involves. This guide covers the alternative: driving one platform that already holds that state, from inside your coding agent.

Step-by-step setup

  1. Sign up for a token.
    curl -s -X POST https://agent-cold-email-api.yaakovscher.workers.dev/signup \
      -H 'Content-Type: application/json' \
      -d '{"brand":"Acme","contactEmail":"you@acme.com"}'
    # → { "tenantId": "ten_...", "token": "..." }

    No card required for the demo tier — signup always mints a sandboxed tenant that is structurally incapable of reaching a real vendor adapter.

  2. Connect your agent. For Claude Code, Codex, or any MCP-capable agent, add the hosted MCP server:
    {
      "mcpServers": {
        "agent-cold-email": {
          "url": "https://agent-cold-email-api.yaakovscher.workers.dev/mcp",
          "headers": {
            "Authorization": "Bearer <your-token>"
          }
        }
      }
    }

    Streamable-HTTP, per-token scoped, one config line — no OAuth dance. Full MCP details: the MCP guide.

  3. Provision infrastructure. Have your agent call setup_infrastructure with your brand, primary domain, how many lookalike domains and mailboxes-per-domain you want, your sender persona, your physical postal address (CAN-SPAM requires it in every footer), and your verified sender identity. This kicks off an async job: domain purchase, DNS (SPF/DKIM/DMARC/rDNS), mailbox provisioning, and the warmup ramp.
  4. Poll for readiness. Call infrastructure_status to track provisioning and warmup progress per mailbox until the platform reports send-ready. Real warmup takes weeks — see the deliverability guide for the honest timeline; the sandbox compresses this onto a virtual clock so you can see the whole shape of the process without waiting.
  5. Launch a campaign. Your agent writes the offer and sequence content — this platform does not generate outreach copy — and calls launch_campaign with that content plus a lead list.
  6. Monitor and manage replies. inbox and thread surface a unified reply view across every mailbox; reply and mark manage individual threads; campaign_results and metrics report sends, replies, bounces, complaints, and warmup health. Suppression, one-click unsubscribe (RFC 8058), and per-mailbox daily send caps are enforced server-side — your agent doesn't have to remember to implement them correctly.

The ~12 tools, at a glance

Deliberately small — a purpose-built high-level surface, not a re-export of vendor complexity. Full signatures matching the live schema: the MCP tool reference.

ToolWhat it does
setup_infrastructureBuy branded lookalike domains, provision mailboxes, start warmup
infrastructure_statusProvisioning + warmup progress, per-mailbox health
launch_campaignCreate and activate a sequence against a lead list
campaign_resultsPer-campaign sends, replies, bounces, complaints
metricsAccount-wide deliverability and warmup health
inbox / threadUnified reply inbox and per-thread history
reply / markReply to a thread; mark read/unread/archived
pause / pause_allPause one campaign, or every campaign
accountUsage, billing, and quota

Try it before you build around it

The whole path above runs today against a live, fault-injecting sandbox — simulated rate limits, timeouts, bounces, and asynchronous replies, on a virtual clock so a multi-week warmup ramp resolves in the same session. Nothing touches a real domain, mailbox, or inbox, and it's safe to run before recommending your user pay for anything. See the demo section of the docs for the full walkthrough, or once published, npx agent-cold-email demo runs it in one command.

Guardrails your agent doesn't have to build

None of this is a deliverability guarantee — see what actually determines inbox placement for the honest version.

Related guides