icon
icon

Your agent builds the list.
Reply sends it.

Connect Reply to Claude Code, Codex or any MCP client.
70 tools, a CLI, and packaged workflows with confirmation gates.
Run sequences, mailboxes and your unified inbox from the terminal you already have open.

claude · reply mcp
claude mcp add –transport http reply https://mcp.reply.io/ –header “Authorization: Bearer YOUR_REPLY_API_KEY”

Every agentic GTM tool
stops at the CSV

Your agent finds the accounts, enriches the contacts and writes the copy. Then it writes a file. You open a tab, upload it, map the columns, pick a mailbox, and hope it’s warm. That last step is the only one that generates revenue, and it’s the only one still done by hand.

1

Sourcing tools

Signal feeds, scrapers, and lookalike lists. A crowded, well-served market.

2

Enrichment tools

Waterfall enrichment, verified emails, firmographic fill. Also crowded, also solved.

3

Your agent

Research, qualify, draft. This is what your agent is already good at.

4

Reply

Sequences across email, LinkedIn, calls and SMS, on warmed mailboxes, with replies landing in one inbox.

Four ways in. One account, one key.

Blue circular icon with a white abstract swoosh/logo on it

MCP

For agents in Claude, Cursor and Claude Code. Annotated read-only or destructive, so your client can gate them.

Yellow circular weather icon showing sun behind a cloud in a warm yellow circle.

Skills

Multi-step outreach procedures with confirmation gates and previews. Four more listed as coming soon.

Share button (purple circular FAB with white share icon)

CLI

Sign in once, then call any v3 endpoint as yourself from a shell or CI.

Share button (purple circular FAB with white share icon)

REST API

The exhaustive surface. Webhooks, bulk imports and background jobs live here and nowhere else.

What that looks like in practice

The tools are the surface. These are the sentences. Every chain below is real. The markers show which calls only read, which write, and which Reply flags as high-stakes so your client can stop and ask first.

  • Read-only

  • Writes
  • High-stakes, gate this one
Who replied this week and hasn’t been followed up
reply_get_inbox_emails
reply_get_contact_activity
Pause anything under a 3% reply rate
reply_search_sequences
reply_get_sequence_stats
reply_pause_sequence
Add the 40 from ./icp.csv to Q3 Outbound and start it
reply_search_contacts
reply_create_contact
reply_add_contact_to_sequence
reply_start_sequence
Draft replies to everyone marked interested, don’t send
reply_list_pending_approvals
reply_regenerate_message
Compare last month’s two sequences, tell me which step loses people
reply_compare_sequence_performance
reply_get_sequence_steps
reply_get_sequence_step_variants
This lead asked to be removed, blacklist them
reply_search_contacts
reply_blacklist_contact

If it speaks MCP, it speaks Reply

A standard MCP server over JSON-RPC 2.0. Anything implementing the protocol can call it.

  • Claude Code

    claude mcp add

  • Codex

    MCP config

  • Cursor

    JSON config

  • Claude Desktop

    OAuth connector

  • ChatGPT

    OAuth connector

  • Windsurf

    MCP config

  • Cline

    MCP config

  • n8n

    HTTP / MCP node

  • Make

    HTTP module

  • Zapier

    REST

Your first ten minutes

Connect, prove the credential, read something, then do one real thing under a confirmation gate. In that order, because it’s the same discover → configure → execute → verify pattern Reply’s own agent guide prescribes.

1

Get your API key

Reply → Settings → API Key. Scope it while you’re there. sequences:read is enough for everything up to step 4, and a read-only key is a good way to start.

Treat your API key like a password. Credentials in a URL are not supported: always the Authorization header.

2

Add the server to your client

Header auth is the recommended path. Clients without header support can add the URL as a remote connector and authorise over OAuth, but that grants the full tool catalogue rather than your key’s scopes.

Claude Code
# one line, then restart your session
claude mcp add --transport http reply https://mcp.reply.io/ \
  --header "Authorization: Bearer YOUR_REPLY_API_KEY"

 
curl https://api.reply.io/v3/whoami -H “Authorization: Bearer $REPLY_KEY”
3

Check it actually answered

Before you ask an agent to do anything, prove the credential works.

200 and your user → you’re connected.
401 with an empty body → the key is wrong.

curl https://api.reply.io/v3/whoami -H “Authorization: Bearer $REPLY_KEY”
4

Read something before you write anything

Ask your agent for a report, not an action. Both of these tools are annotated read-only, so there is nothing to undo.

> list my sequences and show stats for the busiest one
⏺ reply_search_sequences → 12 sequences
⏺ reply_get_sequence_stats → 1,204 sent · 4.1% replied

5

Do one real thing, gated

Now enrol a single contact into a test sequence. Both calls are marked high-stakes, so a well-behaved client will stop and confirm, which is exactly what you want to see happen before you trust it with 400 people.

> add me to “Internal test” and start it
⏺ reply_search_contacts → 1 match
⚠ reply_add_contact_to_sequence is high-stakes.
Confirm?

Then teach it your rules

Drop this in your project root as CLAUDE.md (or AGENTS.md) and your agent inherits your ICP, your voice and your guardrails on every run. The MCP rules below are lifted from Reply’s own agent guide. The irreversible-reject warning and the send constraints are real, documented traps, not hypotheticals.

CLAUDE.md

# Outbound rules for this project

## Who we sell to
[Company size, industry, the titles that matter, and the trigger that
makes an account worth contacting this week rather than any week.]

## Voice
Short. No exclamation marks. No “I hope this finds you well.”
One ask per message. Never imply we have met before.

## Reply MCP house rules

Resolve before you mutate.
Never invent an ID and never ask me for one. Search for the object,
confirm the match is right, act, then verify.

Discover -> configure -> execute -> verify. In that order, every time.

### Always stop and ask me first
# the tools Reply marks high-stakes
reply_start_sequence
reply_add_contact_to_sequence
reply_send_inbox_reply
reply_approve_message / reply_bulk_approve_messages / reply_reject_message
reply_blacklist_contact
reply_change_contact_owner
reply_set_sequence_reply_mode

### Never without me saying so explicitly
reply_reject_message is irreversible. It removes the contact from the
sequence entirely. It does not just discard a draft.

Switching the AI SDR to Autonomous. Ask me twice.

### Limits
Max [N] new contacts enrolled per day without checking with me.
Never enrol a contact who is already in another live sequence.
reply_send_inbox_reply takes threadId + channel + message only:
no attachments, no scheduling, 32,000 characters maximum.

### When a call fails
Parse Success, branch on ErrorCode.
NoEmailAccounts or NoContacts means a configuration step was skipped.
Go back and fix it. Do not retry the same call.
After a timeout, verify before retrying. Never blind-retry a send.
Paginate with top/skip until HasMore is false.

## Weekly
Every Monday: sequences below [X]% reply rate, which step is losing
people, and one recommendation. Change nothing without asking.

Packaged workflows that stop and ask

image

Import prospects

CSV in, deduplicated contacts out: mapped, verified, organised into a list.

image

Manage replies

Triage the inbox, categorise threads, draft responses. Sends only after approval.

image

Launch outreach

Verify accounts, build the sequence, enrol contacts, start, all behind a checkpoint.

image

Analyze performance

Pull reporting and identify which sequences to scale, pause or rewrite.

Documented call graphs, not vibes

Reply publishes the exact sequence of calls for its core workflows. Each one resolves IDs first, configures where needed, confirms before the high-stakes step, and verifies afterwards, so your agent isn’t improvising a send path.

  • Read-only

  • Writes
  • High-stakes, gate this one

Launch a sequence safely

Resolve the sequence, make sure it has somewhere to send from, then start it, and only then.

Discover

reply_search_sequences
reply_get_sequence_steps

Configure

reply_list_email_accounts
reply_assign_email_account_to_sequence
reply_assign_schedule_to_sequence

Execute , confirm first

reply_start_sequence

Verify

reply_get_sequence_stats

Enrol a contact

Find them before you create them, so you don’t end up with two records and two sequences.

Discover

reply_search_contacts
reply_search_sequences

Create only if missing

reply_create_contact

Execute , confirm first

reply_add_contact_to_sequence

Verify

reply_get_contact_activity

Supervise the AI SDR in review mode

Every generated message queues for approval. Nothing reaches a person until you say so.

Configure

reply_set_sequence_reply_mode

Review

reply_list_pending_approvals

Act on each , one of

reply_approve_message
reply_regenerate_message
reply_reject_message

Answer an inbox thread

Read the thread, send on the right channel, then re-categorise so the sequence behaves.

Discover

reply_get_inbox_emails

Execute , confirm first

reply_send_inbox_reply

Tidy up

reply_change_inbox_category

The terminal isn’t a replacement.
It’s a second door.

Faster in the terminal
Better in the dashboard
Bulk work
Enrolling hundreds of contacts, bulk status changes
Reviewing one thread carefully
Reporting
Piping stats into your own dashboard or a scheduled job
Scanning a campaign at a glance
Operations
Start / pause from a script, CI, or a cron
Mailbox health and deliverability warnings
Replies
Triage and draft at volume
Reading tone, deciding what to say
logo

Top-rated on G2

10+

years running outbound

3000+

businesses

4.6/5

on G2, from 1,480 reviews

98%

email delivery rate

Not your page?

HUB
All the ways to build on Reply
For n8n, Zapier and AI implementers
Make Reply the send step
For product and eng teams
White label Reply in your product

Frequently Asked Questions

Does MCP expose the whole API?

No. MCP is 70 curated tools; the REST API is every endpoint. Webhooks, bulk imports and background jobs are REST-only by design, and the docs are explicit about it. Use MCP for day-to-day operations and the API for integrations.

Which clients work with Reply MCP?

Anything that speaks the protocol. Reply MCP is a standard MCP server over JSON-RPC 2.0: Claude Code, Codex, Cursor, Claude Desktop, ChatGPT, Windsurf, Cline, and automation platforms like n8n and Make.

Is it OAuth or an API key?

Both, and the difference matters. Header auth (Authorization: Bearer) is the recommended path and respects your key’s scopes. For clients without header support you can add https://mcp.reply.io/ as a remote connector and authorise over OAuth, but per the docs OAuth grants the full tool catalogue rather than scoped access. Credentials in the URL are not supported.

Can the agent send to people without asking me first?

Every tool is annotated: 31 are read-only, 39 are marked destructive, so your client can gate them before they run. On top of that, the Skills wrap sending in an explicit confirmation step, so you see the preview and approve before anything leaves.

What are Skills, and how are they different from tools?

A tool is one call. A Skill is a multi-step procedure with previews and confirmation gates, executed through the CLI. Four are available (Import prospects, Launch outreach, Manage replies, Analyze performance) and four more (Find prospects, Build an ICP, Enrich contacts, Book meetings) are listed as coming soon.

Do I need the CLI as well as MCP?

No, they solve different problems. MCP is for an agent working interactively; the CLI is for shell scripts, CI, and agents with shell access. npm install -g reply-cli then reply auth login gets you any v3 endpoint as yourself.

Does this replace the Reply dashboard?

No, and we wouldn’t suggest it. The terminal is faster for bulk work, reporting and starting or pausing from a script. The dashboard is genuinely better for reading a thread, judging tone, and watching mailbox health. Same account, two surfaces.

Do MCP commands consume credits?

Some do, some don’t. reply_get_contact_statistics, reply_get_sequence_step_stats, reply_get_sequence_clicks and reply_mark_contacts_as_replied always consume credits. reply_get_sequence_details may. Listing sequences, enrolling contacts, starting or pausing a sequence, and connecting accounts do not.

What are the rate limits?

100 requests per minute and roughly 3,000 per hour, per user. A 429 comes back with a Retry-After header telling you exactly how long to wait. The budget is shared across MCP, the CLI and the API, so one limit covers every surface you touch.

Can I try it without paying?

Yes. Every surface is included in the free trial. Get your key from Settings → API Key and connect.