AgentCall + OpenClaw
Give your OpenClaw agents real phone numbers for SMS verification, OTP extraction, voice calls, and auditable cross-call memory. Set two environment variables, restart OpenClaw, and your agent auto-discovers all 43 tools and 4 prompts. No JSON editing needed.
Quick Start
1. Get your API key
Sign up at agentcall.co/sign-up and copy your API key from the dashboard. It looks like ac_live_xxxxxxxxxxxxx
2. Connect AgentCall to OpenClaw
Paste your API key below and pick a setup method. Environment variables are the simplest path; your agent auto-discovers all endpoints.
Enter your API key above to get a ready-to-copy config, or copy the placeholder and replace it later.
Environment Variables (Recommended)
Add these two environment variables to your OpenClaw server. Your agent auto-discovers all endpoints. No JSON config needed.
AGENTCALL_API_KEY=ac_live_xxxxxxxxxxxxx
AGENTCALL_API_URL=https://api.agentcall.coRestart OpenClaw after adding the variables. Your agent will automatically find the API and all 43 tools (plus 4 prompts), including the Auditable Call Memory surface.
MCP Config (Claude Desktop, Cursor, etc.)
For MCP clients that support streamable HTTP transport. OpenClaw native MCP support is coming soon.
"agentcall": {
"transport": "streamable-http",
"url": "https://api.agentcall.co/mcp",
"headers": {
"Authorization": "Bearer ac_live_xxxxxxxxxxxxx"
}
}Local (Advanced)
Run the MCP server locally via npx. Requires Node.js on the host.
{
"mcpServers": {
"agentcall": {
"command": "npx",
"args": [
"-y",
"@agentcall/mcp-server"
],
"env": {
"AGENTCALL_API_KEY": "ac_live_xxxxxxxxxxxxx"
}
}
}
}Then restart the gateway:
openclaw gateway restart3. Talk to your agent
That's it. No system prompt needed. When your agent sees the AGENTCALL_API_URL environment variable, it hits the base URL and gets a complete map of all endpoints with request bodies, examples, and auth format. A full plain-text reference is also at /llms.txt. Just message your agent:
"Get me a US phone number"
"Send a text to +15551234567 saying hello"
"Check if I got any verification codes"
"Call +15559876543 and ask about their business hours"
"How much have I spent this month?"How It Works
Once you set the environment variables and restart OpenClaw, your agent auto-discovers the AgentCall API. No manual JSON editing. Just env vars and go.
Add AGENTCALL_API_KEY and AGENTCALL_API_URL to your OpenClaw server
The agent picks up the new environment variables on next start
Agent hits the API base URL and gets a complete endpoint map with auth format and docs
The agent now knows how to provision numbers, send SMS, make calls, wait for OTP, and more
Say "text +15551234567 that the meeting moved to 3pm" and the agent picks the right endpoint automatically
Important: Restart after adding env vars
Environment variables are read at startup. Run openclaw gateway restart or restart your Hostinger VPS after adding the variables.
ClawHub Skill
AgentCall is also available as a skill on ClawHub, the OpenClaw skill marketplace. If your OpenClaw version supports ClawHub, you can install it directly:
"Install the agentcall skill from ClawHub"The ClawHub skill teaches your agent all 43 AgentCall tools (plus 4 prompts) at startup. This works alongside the environment variable approach; use whichever is easier for your setup.
Using It
Once connected, just talk to your OpenClaw agent in plain English. It will pick the right AgentCall tool automatically.
provision_numbersend_smswait_for_otpinitiate_callinitiate_ai_callget_call_transcriptconfigure_inbound_aiget_inboxget_usagerelease_numberYou don't need to know tool names. The agent maps your request to the right tool based on what you ask.
Tool Reference (43 tools, 4 prompts)
Phone Numbers
provision_numberProvision a new phone numbertype (local/tollfree/mobile), country?, label?, areaCode?list_numbersList all provisioned numberslimit?, country?, type?get_numberGet details of a specific numbernumberIdupdate_number_labelRename a phone number's human-readable label (or pass null to clear)numberId, labelupdate_number_voiceChange the inbound AI voice on an existing receptionist without touching the rest of the config (systemPrompt, contextWebhook, notify, etc. are preserved)numberId, voicerelease_numberRelease a phone numbernumberIdconfigure_inbound_aiConfigure inbound AI voice on a supported number so incoming calls are answered autonomously. Optional contextWebhook wires live brief / inbox context onto every call.numberId, systemPrompt, voice?, firstMessage?, maxDurationSecs?, record?, notify?, contextWebhook?disable_inbound_aiDisable inbound AI on a number (clears inbound config)numberIdSMS
send_smsSend an SMS messagefrom, to, bodyget_inboxGet inbound messages for a numbernumberId, limit?, otpOnly?get_messageGet a specific messagemessageIdwait_for_otpWait for an OTP code to arrivenumberId, timeout?Voice Calls
initiate_callStart an outbound phone callfrom, to, record?list_callsList call historylimit?get_callGet details of a specific callcallIdhangup_callTerminate an active callcallIdinitiate_ai_callStart an AI-powered voice callfrom, to, systemPrompt, voice?, firstMessage?, maxDurationSecs?, record?get_call_transcriptGet transcript of a completed AI callcallIdAuditable Call Memory (Read)
list_contactsList every contact your numbers have talked tolimit?, search?get_contactFull contact record with memory entries and recent callscontactIdget_contact_by_phoneLook up a contact by E.164 phone numberphoneget_next_call_contextThe one-paragraph brief loaded into the AI on the next inbound callcontactIdget_current_memoryCurrent memory entries for a contactcontactIdget_memoryFetch a single memory entry by IDmemoryIdget_memory_timelineFull edit history for a memory entrymemoryIdlist_memory_candidatesPending extractor candidates waiting for approvalcontactId?, limit?list_call_reportsList recent structured Call Reportslimit?, contactId?, numberId?get_call_reportStructured Call Report for a single callcallIdAuditable Call Memory (Write)
update_contactUpdate displayName, tags, ownerNotes, or verified on a contactcontactId, displayName?, tags?, ownerNotes?, verified?purge_contactDelete a contact (cascades to memory entries, candidates, briefs)contactIdupdate_memoryEdit a memory entry's text or expiresAt (timeline preserved)memoryId, text?, expiresAt?delete_memoryDelete a memory entrymemoryIdapprove_memory_candidatePromote a candidate into a permanent memory entrycandidateId, text?reject_memory_candidateDrop a candidatecandidateIdlist_briefsOwner-brief inbox; surfaces items that need attentionstatus?, urgency?, contactId?acknowledge_briefMark a brief as seen without resolving itbriefIdresolve_briefClose a brief with an optional notebriefId, note?Webhooks
create_webhookRegister a webhook endpoint (events include call.transcript and call.report.ready)url, events[]list_webhooksList registered webhooksnonerotate_webhook_secretRotate the signing secret for a webhookwebhookIddelete_webhookDeactivate and remove a webhookwebhookIdAccount
set_memory_enabledTurn Auditable Call Memory on or off at the account level (on by default)enabledget_usageGet usage and cost breakdown for a billing periodperiod?Example Workflows
Heartbeat Test
Create this as a task file your OpenClaw agent can execute to verify the integration works end-to-end:
# Task: Phone Verification Heartbeat
## Objective
Provision an AgentCall number, verify it can receive SMS, and clean up.
## Steps
1. **Provision a number**
- Call `provision_number` with type "local" and country "US"
- Save the number ID and phone number from the response
2. **Send a test SMS**
- Call `send_sms` with:
- from: the number you just provisioned
- to: the same number (self-send for testing)
- body: "Heartbeat test 12345"
3. **Check the inbox**
- Call `get_inbox` with the number ID
- Verify the test message appears
4. **Wait for OTP (simulated)**
- Call `wait_for_otp` with the number ID and timeout 10000
- This demonstrates the polling behavior
- A null result is expected if no external service sent an OTP
5. **Check usage**
- Call `get_usage` to verify the SMS was tracked
6. **Clean up**
- Call `release_number` with the number ID
- Confirm the number was released
## Success criteria
- Number provisioned successfully (got a num_ ID back)
- SMS sent without errors
- Inbox returned messages
- Number released successfully
- No errors in any stepQA: Test Your App's SMS Verification Flow
Use AgentCall to automate end-to-end testing of your own app's phone verification. No manual phone needed:
provision_number → gets a dedicated test numberwait_for_otp → extracts the code from the incoming SMSrelease_number to clean up the test numberGreat for CI pipelines. Run SMS verification tests on every deploy.
Troubleshooting
Error: “AgentCall API key required”
The API can't find your key. Fix:
- Check that
AGENTCALL_API_KEYis set in your environment - Verify the key starts with
ac_live_ - Restart OpenClaw after adding the variable
Error: “plan_limit” (403)
You've hit a plan limit. Common causes:
- Free plan: max 1 US/CA local number (cardless), 10 SMS/month, 5 call minutes/month, 5 OTP extractions/month, plus a 5-minute monthly trial of inbound AI voice
- Call recording: Pro plan only
- Outbound AI voice calls: Pro plan only
- Inbound AI receptionist: Free trial caps at 5 minutes/month then hangs up; unlimited on Pro at $0.40/min
- Toll-free or mobile numbers: Pro plan only (Free is local-only)
Fix: Upgrade to Pro at agentcall.co/dashboard, or use release_number to free up your number slot before provisioning a new one.
Error: “Invalid E.164 phone number”
Phone numbers must be in E.164 format: + followed by country code and number, no spaces or dashes.
Acceptable Use
AgentCall phone infrastructure is designed for legitimate business telephony, including:
- Testing and QA of your own apps' SMS and voice flows
- Customer support and appointment reminders
- Notifications, alerts, and internal communications
- Authorized security testing and penetration testing
Do not use AgentCall to bypass verification on services you do not own, create fake accounts, or engage in any activity that violates third-party terms of service. Abuse will result in immediate account termination. See our Terms of Service for full details.
Links
Ready to give your agents phone numbers?
Get your API key, add it to OpenClaw, and your agents get 43 phone tools and 4 prompts instantly.
Get API Key, Free