Reply.io's full sales platform as 70 MCP tools — sequences, contacts, inbox, tasks, and the Jason AI SDR autopilot. Live at mcp.reply.io. High-level reference here — all 70 tools, contract essentials, connect snippet; full per-argument details at docs.reply.io.
Status — available today
Reply MCP is an official, live, remote Streamable HTTP MCP server exposing Reply.io’s
sales-engagement, inbox, AI SDR (Jason), task, account, and help workflows as 70 tools for any
MCP-compatible client — Claude, Cursor, Make, n8n, and custom agents.
| |
|---|
| Endpoint | https://mcp.reply.io/ |
| Transport | Streamable HTTP (JSON-RPC 2.0, MCP protocol 2025-06-18) |
| Auth | x-api-key: <key> or Authorization: Bearer <key> |
| Rate limit | Hourly window, ~3000/hour (X-Rate-Limit-* headers on every response) |
| Sessions | None required — initialize and tools/list work without Mcp-Session-Id |
| Tools | 70 — 31 read-only (readOnlyHint), 39 mutations (destructiveHint) |
Connect
claude mcp add --transport http reply https://mcp.reply.io/ \
--header "x-api-key: YOUR_REPLY_API_KEY"
Or in any MCP client config:
{
"mcpServers": {
"reply": {
"type": "http",
"url": "https://mcp.reply.io/",
"headers": { "x-api-key": "YOUR_REPLY_API_KEY" }
}
}
}
Client-by-client instructions, the OAuth discovery flow, and rate limits:
docs.reply.io/mcp/connect.
Contract essentials
What an agent needs to know before calling — full rules and the safe-retry matrix at
docs.reply.io/mcp/tool-contract:
- Responses are SSE frames; the payload is a JSON string in
result.content[0].text —
{"Success":true,"Data":{...}} or {"Success":false,"ErrorCode":"...","ErrorMessage":"..."}
(tool errors arrive as HTTP 200 with isError: true; branch on ErrorCode).
- Schemas are strict —
additionalProperties: false; required fields reject null, "", [].
- Pagination is uniform —
top (default 20, max 100) + skip; iterate until HasMore is false.
- Updates are patches — omitted fields keep their value; a passed list replaces the whole list.
- IDs come from resolvers — resolve exact numeric IDs with
search_*/list_* tools first;
never invent one, never ask the user for one.
- Batches cap at 100 and report per-item results (
NotProcessed, AffectedContactIds) —
report exact counts.
- Gate high-stakes tools — anything that sends, starts outreach, enrolls, blacklists, changes
ownership, rejects a draft (also removes the contact from the sequence!), or switches Jason to
Autonomous executes immediately with no undo. Confirm with the user first.
Grouped by domain: read = readOnlyHint · write = destructiveHint · gate = confirm
with the user first. Full signatures, arguments, enums, and failure modes:
docs.reply.io/mcp/tools (site index: /mcp/tools).
Sequences — discover & inspect
| Tool | Type | Purpose |
|---|
| reply_search_sequences | read | Find sequences by name / status / archive flag |
| reply_get_sequence_steps | read | Ordered steps of a sequence (type, delay, variants) |
| reply_get_sequence_step_variants | read | A/B content variants of one step |
| reply_get_sequence_stats | read | Email + LinkedIn metrics for one sequence |
| reply_compare_sequence_performance | read | Side-by-side metrics for up to 25 sequences |
Sequences — control & configuration
| Tool | Type | Purpose |
|---|
| reply_start_sequence | write · gate | Start or resume a sequence |
| reply_pause_sequence | write | Pause a sequence |
| reply_add_contact_to_sequence | write · gate | Enroll up to 100 contacts |
| reply_change_status_in_sequence | write | Set one contact’s per-sequence status |
| reply_assign_email_account_to_sequence | write | Link a mailbox |
| reply_assign_linkedin_account_to_sequence | write | Link a LinkedIn account |
| reply_assign_schedule_to_sequence | write | Set the sending schedule |
| reply_attach_offer_to_sequence | write | Attach an offer (AI SDR) |
| reply_attach_playbook_to_sequence | write | Attach a playbook (AI SDR) |
| reply_attach_knowledge_base_to_sequence | write | Attach a knowledge base (AI SDR) |
| reply_set_sequence_reply_mode | write · gate | Jason Review ↔ Autonomous mode |
| Tool | Type | Purpose |
|---|
| reply_search_contacts | read | Look up by exact email or LinkedIn URL |
| reply_filter_contacts | read | Filter by list/sequence/free-text |
| reply_create_contact | write | Create a contact |
| reply_update_contact | write | Patch contact fields |
| reply_get_contact_activity | read | Activity history for one contact |
| reply_mark_contacts_as_replied | write | Mark up to 100 contacts as replied |
| reply_change_contact_owner | write · gate | Reassign contacts to another user |
| reply_blacklist_contact | write · gate | Blacklist an email or whole domain |
Inbox & conversations
| Tool | Type | Purpose |
|---|
| reply_get_inbox_emails | read | List inbox threads with previews |
| reply_send_inbox_reply | write · gate | Send a reply on a thread |
| reply_change_inbox_category | write | Assign/clear a thread category |
Jason AI SDR — approvals & autopilot
| Tool | Type | Purpose |
|---|
| reply_list_pending_approvals | read | The draft approval queue |
| reply_approve_message | write · gate | Approve one draft — sends immediately |
| reply_bulk_approve_messages | write · gate | Approve up to 100 drafts (atomic) |
| reply_reject_message | write · gate | Reject a draft AND remove the contact from the sequence |
| reply_regenerate_message | write | Ask Jason to rewrite a pending draft |
Jason AI SDR — knowledge bases
| Tool | Type | Purpose |
|---|
| reply_list_knowledge_bases | read | List knowledge bases |
| reply_get_knowledge_base | read | One knowledge base in full |
| reply_create_knowledge_base | write | Create a knowledge base |
| reply_update_knowledge_base | write | Rename / edit instructions |
| reply_add_knowledge_base_source | write | Add a URL source |
| reply_delete_knowledge_base_source | write | Remove a URL source |
Jason AI SDR — reply handlers
| Tool | Type | Purpose |
|---|
| reply_list_reply_handlers | read | List reply handlers in a knowledge base |
| reply_get_reply_handler | read | One reply handler in full |
| reply_create_reply_handler | write | Add a handler (question type → instructions) |
| reply_update_reply_handler | write | Patch a handler |
| reply_delete_reply_handler | write | Remove a handler |
Jason AI SDR — reengagement cards
| Tool | Type | Purpose |
|---|
| reply_list_reengagement_cards | read | List win-back cards |
| reply_get_reengagement_card | read | One card in full |
| reply_create_reengagement_card | write | Add a card (with send-after days) |
| reply_update_reengagement_card | write | Patch a card |
| reply_delete_reengagement_card | write | Remove a card |
Jason AI SDR — offers
| Tool | Type | Purpose |
|---|
| reply_list_offers | read | List offers (id + name) |
| reply_get_offer | read | Full offer content (ICP, value props, CTAs) |
| reply_create_offer | write | Create an offer |
| reply_update_offer | write | Patch an offer |
| reply_generate_offer_from_website | read | Draft offer fields from a website (doesn’t save) |
Jason AI SDR — playbooks
| Tool | Type | Purpose |
|---|
| reply_list_playbooks | read | List playbooks |
| reply_get_playbook | read | One playbook incl. instruction body |
| reply_create_playbook | write | Create a playbook |
| reply_update_playbook | write | Patch a playbook |
| reply_duplicate_playbook | write | Duplicate a playbook |
Tasks
| Tool | Type | Purpose |
|---|
| reply_list_my_tasks | read | List tasks, filterable |
| reply_create_task | write | Create a standalone task |
| reply_complete_task | write | Mark a task completed |
Workspace resolvers & accounts
| Tool | Type | Purpose |
|---|
| reply_list_email_accounts | read | Mailboxes with status and limits |
| reply_list_linkedin_accounts | read | Connected LinkedIn accounts |
| reply_list_schedules | read | Sending schedules |
| reply_search_lists | read | Resolve a list name to its ListId |
| reply_search_team_members | read | Resolve a teammate to their UserId |
| Tool | Type | Purpose |
|---|
| reply_search_knowledge_base | read | Search the Reply Help Center |
| reply_get_knowledge_base_article | read | Read a Help Center article |
| reply_get_app_map | read | App areas with in-app navigation |
| reply_report_unsupported_request | read | Log a missing capability for the product team |
The full technical reference lives on docs.reply.io
This page is the high-level surface map. For implementation details:
- Connect — client configs, handshake, auth details, rate limits
- Tool contract & errors — schema rules, pagination,
response envelopes, error codes, the safe-retry matrix
- Building agents — design principles, high-stakes
gating, a drop-in system prompt
- Workflow recipes — launch a sequence safely, supervise
Jason, reply to a thread, and more
- Tool reference — all 70 tools with per-argument documentation
The always-current runtime source is the server itself: call tools/list and trust what it returns.
Frequently asked questions
Is the MCP server real, and how current is this page?
Real and live. Endpoint https://mcp.reply.io/, MCP protocol 2025-06-18, 70 tools. The canonical, continuously maintained reference — auth, contract rules, envelopes, error model, full tool catalog — lives at docs.reply.io/mcp/overview. The runtime truth is always tools/list on the live server.
How does authentication work?
Send your Reply.io API key as an x-api-key header or an Authorization Bearer token — this server accepts either. Get a key in the Reply.io app under Settings → API Keys. No session header is required. Full details, including the OAuth discovery metadata, at docs.reply.io/mcp/connect.
How do I know which tools are safe to call?
The server tells you, machine-readably. Every tool carries MCP annotations — readOnlyHint (31 tools) or destructiveHint (39 tools). Agents can auto-gate on them; anything that reaches a prospect or changes ownership should also get explicit user confirmation. The full contract and safe-retry matrix is at docs.reply.io/mcp/tool-contract.
When should an agent use MCP instead of the REST API?
Use MCP for interactive, natural-language work — 70 tools cover most day-to-day operations including the full Jason AI SDR autopilot. Use REST (api.reply.io/v3) for bulk imports, scheduled backend syncs, deep report exports, and anything tools/list does not expose.
Is the Jason autopilot really callable here?
Yes. The approval queue, the Review↔Autonomous switch, and the whole knowledge base / offer / playbook / reply-handler / reengagement-card surface are live MCP tools.