voice + SMS + email - one API, one identity

Your agent needs
a real identity.

Communications infrastructure built for AI agents - not humans. One API to provision a phone number, email inbox, and full compliance stack. One webhook to handle everything.

No credit card required - free plan includes 1 agent

agent-setup.ts

// one call. full identity.
const agent = await r3y.agents.create({
  name: "support-bot",
  webhook: "https://api.yourapp.com/events"
})

// agent.phone → "+1 (415) 555-0142"
// agent.email → "support@agents.r3y.dev"
// agent.compliance.score → 100

await agent.call("+14155550388")
await agent.sms("+14155550388", "Confirmed.")
Inbound + outbound voice
Two-way SMS with 10DLC
Full inbox ownership
Compliance automated
Inbound + outbound voice
Two-way SMS with 10DLC
Full inbox ownership
Compliance automated
The problem

You built a great agent.
Then spent two weeks on infrastructure.

Every team building a communications-capable agent hits the same wall - stitching together multiple APIs, writing glue code, and manually managing compliance that was never designed for agents in the first place.

The fragmented approach

Voice API

separate SDK - separate webhook

separate

SMS API

different provider - different config

separate

Email send API

outbound only - no inbox

separate

Inbox provider

expensive per-account pricing

separate

10DLC registration

manual - takes up to 10 business days

manual

Glue code + routing logic

four webhook handlers - your problem

yours to build
r3y - one layer, all of it

Voice - inbound + outbound

real-time transcription included

included

SMS - two-way messaging

same API, same webhook

included

Email - send and receive

full inbox per agent, threading included

included

10DLC + DKIM/SPF/DMARC

automated on agent creation

included

One unified webhook

every channel, one endpoint, one shape

included

Native MCP server

Claude Code, Cursor, Windsurf ready

included
The problem

Everything a communicating agent needs.
Nothing it doesn't.

Voice - inbound and outbound

Real-time transcription, conversation threading, and sub-200ms webhook delivery. Your agent handles calls - no carrier plumbing required on your end.

real-time STT
TTS
threading
<200ms latency

SMS - compliant by default

10DLC campaign registration automated. Opt-out handling built in. Carrier reputation managed for you. Send and receive without touching the compliance layer yourself.

10DLC auto
opt-out
TCPA
carrier-clean

Email - real inbox ownership

Each agent gets its own inbox - not a forwarding alias. Send, receive, thread, and search. DKIM, SPF, and DMARC configured and monitored automatically.

DKIM/SPF
DMARC
inbound
threading

MCP - first-class agent tooling

A native MCP server ships with every account. Works in Claude Code, Cursor, Windsurf, and any MCP-compatible client. Agents provision numbers through tool calls - no human required.

Claude Code
Cursor
Windsurf
6 tools

Compliance - scored and automated

10DLC, DKIM/SPF, TCPA opt-outs, and carrier reputation - automated, scored, and surfaced on a live dashboard. Know your agents are clean before a carrier tells you they're not.

compliance score
TCR
opt-out registry

One webhook - all channels

Every event - call.completed, message.received, email.inbound - arrives at one endpoint in one consistent shape.

unified events
consistent schema
replay
The API

Designed for how agents actually work.

The agent is the primitive - not the phone number, not the inbox. One object owns everything. One webhook handles everything.

agent-setup.ts

// one handler. every channel.
app.post("/events", async (req) => {
  const { event, agent_id, channel } = req.body

  if (event === "call.completed") {
    // transcript included - no extra API call
    const { transcript, duration_s } = req.body
    await handleCall(agent_id, transcript)
  }

  if (event === "message.received") {
    // sms or email - same handler
    const { from, body, thread_id } = req.body
    await handleMessage(agent_id, body)
  }
})

// python? same idea.
// pip install r3y
// npm install r3y
01

The agent is the primitive

Every resource - phone number, inbox, compliance state, reputation - belongs to an agent object. Not to a project, not to a team. The agent owns its identity.

02

One event shape for everything

Voice calls, SMS, and email arrive at one endpoint with consistent fields. Transcripts included inline. No extra API calls to fetch what you already need.

03

Compliance is not your problem

10DLC campaign registration, DKIM/SPF configuration, opt-out registry - all handled on agent creation. Your compliance score is visible. Your agents stay clean.

MCP - Model Context Protocol

Your AI coding tools
can now make calls.

r3y ships as a first-class MCP server. Paste one config block, restart your editor, done. Your agent in Claude Code or Cursor can provision numbers, send messages, and read inboxes through tool calls - no human in the loop.

Claude Code

connected

Claude Code

connected

Windsurf

one click

Claude Desktop

one click

Cline

one click

Any MCP client

one click

agent-setup.ts

{
  "mcpServers": {
    "r3y": {
      "command": "npx",
      "args": ["r3y-mcp"],
      "env": {
        "R3Y_API_KEY": "sk_live_..."
      }
    }
  }
}

// that's the entire setup.
// restart your editor.
// your agent now has a phone.
Built on by

Teams that ship agent products.

"We were stitching together four different APIs. Switching to r3y cut our infra code by 70% and our compliance headaches to zero. Should have done it month one."

JL
Jamie Liu
CTO · AgentFlow

"The MCP integration is the thing I show people first. Our agent in Claude Code now provisions numbers and sends follow-up emails with no human involved. That's the whole product."

SR
Sam Rivera
Founder - HelloAgent

"10DLC registration used to take us a week every time we launched a new agent. r3y handles it on creation. I didn't realize how much time we were burning until it just stopped being a problem."

AK
Alex Kim
Head of Engineering - Stackmind
Pricing

Start free.
Scale as your agents do.

No minimums, no surprises. Pay per agent, per minute, per message. Usage costs below any comparable stack - always.

Free

$ 0

/ month

One agent, usage-based costs. No credit card needed to start.

Pro

$ 0

/ agent / month

For teams shipping production agents at scale.

Enterprise

Custom

Volume pricing, SLAs, SOC 2, and white-glove onboarding for platform teams.

Voice

$0.012 / min

SMS

$0.008 / segment

Email out

$0.28 / 1K

Email inbound

free

MCP calls

free

Number

$3 / mo

No hidden fees. No lock-in. Port your existing numbers for free.

Questions

Things developers
actually ask.

What carrier infrastructure is r3y built on?

We run on Telnyx, which owns its carrier network. That's why voice latency is under 100ms and SMS pricing is below most alternatives. We abstract the carrier layer - you get one API regardless of what's underneath.

What is 10DLC and why should I care?

10DLC is the US carrier registration system for A2P SMS. Without it, messages from unregistered numbers are blocked outright - carriers enforce this strictly. r3y handles brand registration, campaign setup, and TCR approval automatically when you create an agent.

How does the unified webhook work exactly?

Every event - call.completed, message.received, email.inbound - fires at one endpoint you configure per agent. The event shape is consistent across channels. Voice events include real-time transcripts inline - no separate fetch required.

Can I bring my existing phone numbers?

Yes. Number porting is free on any plan. Porting requires a signed LOA and typically takes 5-10 business days. Your existing setup continues working during the transition - just point the webhook at r3y.

Does r3y work with LangChain, CrewAI, or the OpenAI Agents SDK?

Yes. We publish integration packages for LangChain, CrewAI, Mastra, Vercel AI SDK, OpenAI Agents SDK, and Google ADK. The MCP server works with any MCP-compatible client including Claude Code, Cursor, Windsurf, and Cline.

What happens if my agent messages an opted-out number?

We block it automatically and log the attempt. Every agent maintains a per-number opt-out registry updated in real time. STOP and HELP replies are handled and your webhook is notified. You never manage this yourself.

Get started today

Stop building infrastructure.
Start building your product.

Free plan - no credit card. First agent provisioned in under two minutes.

npm install r3y  ·  pip install r3y  ·  npx r3y-mcp

r3y

r3y.dev - communications infrastructure for AI agents