Start with a workspace address and receive mail in your Inbox. Sending availability and limits are shown in your account.
Self-service receiving · sending pilot
Set up email sendingGive your agent an email address and a phone number. Receive messages in its Inbox and connect incoming calls to your voice agent.
Start free with email. Add voice when you need a number; see channel availability.
Five example agents · fictional contact details
Select a card to see another agent
Give people an email address and a number to call. AgentOwl receives the messages and connects incoming calls to your phone system or voice agent. Texting remains preview.
Start with a workspace address and receive mail in your Inbox. Sending availability and limits are shown in your account.
Self-service receiving · sending pilot
Set up email sendingSMS and MMS are in preview and require separate carrier registration. They are outside the first Pro voice release.
Preview · carrier approval required
Messaging setupGive your agent a phone number and connect incoming calls to your phone system or voice agent.
Available on Pro · paid usage
Voice setupConnect your phone system or voice agent. See voice setup.
One envelope for email, texts, and call events. Stored messages and delivery attempts give you a place to look when your receiver fails.
evt_procurement_demo
Origin checks are evidence. Your runtime decides whether a request is authorized.
Your receiver saved one job before acknowledging. Accepted delivery does not mean the agent finished.
Retry selected failures with the same delivery identity. Replay intentionally creates new work. Channel bodies differ; live voice audio travels separately.
Reproduce failure and recoveryVerify the signed request, accept it into a durable inbox, then run your agent in the background. The example uses Python and SQLite—no package installation.
def accept(path, key, event):
with connect(path) as db:
db.execute('BEGIN IMMEDIATE')
existing = db.execute(
'SELECT event_id FROM jobs WHERE delivery_key=?', (key,)
).fetchone()
if existing:
return 204 if existing['event_id'] == event['event_id'] else 409
db.execute(
'INSERT INTO jobs(delivery_key,event_id,body) VALUES (?,?,?)',
(key, event['event_id'], json.dumps(event))
)
# SQLite committed before the HTTP acknowledgement.
return 204
“Can you check the delivery date for order 42?”
204 accepted evt_procurement_demo
status: example_processed
A deterministic fixture result; connect your own runtime for agent execution.
A unique delivery key prevents duplicate queue jobs. Your external tools still need their own idempotency and authorization.
Use any HTTP receiver for message delivery. Where optional agent work is enabled, your runtime can also report progress, ask for human input, and report a result.
AgentOwl: incoming communications, delivery records, and optional work/attention tracking.
Your runtime: reasoning, tools, permission to act, execution, and result evidence.
Agent work is opt-in for participating runtime endpoints. A runtime’s completion report does not independently verify an external action. Conversation matching follows channel-specific rules.
Understand the work protocolReceive email for free. Add a US local number and incoming voice calls with Pro; texting remains preview.
Receive email with no email usage charge. Outbound sending is currently available only through reviewed pilot setup.
Add a US local number and connect incoming calls to your phone system or voice agent. A monthly fee and usage charges apply.
Create your agent identity, activate its email Inbox, and add voice when you need a number. The quickstart covers both paths.
Ready for voice? Set up voice.