Skills opencawl
Gives your Claw a phone number. Make and manage phone calls via OpenCawl. Use this skill whenever the user asks you to call someone, make a phone call, schedule a call, check on a call, set up inbound phone handling, or review call transcripts or outcomes.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ammbo/opencawl" ~/.claude/skills/clawdbot-skills-opencawl && rm -rf "$T"
skills/ammbo/opencawl/SKILL.mdOpenCawl
Gives your Claw a phone number. Make and manage outbound and inbound phone calls via the OpenCawl API, with live telephony handled by ElevenLabs and Twilio.
Security: This skill only uses credentials and URLs you configure (
OPENCAWL_API_KEY, optional completion or gateway webhooks). It does not read unrelated files on your machine. Outbound HTTPS requests go to your configured OpenCawl API base URL and to webhook URLs you supply.
Setup
- Sign up at https://opencawl.com
- Copy the setup command from onboarding and run it in your OpenClaw terminal:
openclaw skills install opencawl --key <your OpenCawl API key> - Wait for the OpenCawl dashboard to show your Claw as connected
- If you prefer manual config, set
in your environment or viaOPENCAWL_API_KEY
inskills.entries.opencawl.apiKey~/.openclaw/openclaw.json - Run
when you want the detailed number, inbound, and webhook/tool configuration report/opencawl setup
Call Architecture
OpenCawl is optimized around one primary mode.
Outbound and Inbound: Autonomous
OpenClaw dispatches a goal and context to OpenCawl, then moves on. ElevenLabs handles the live conversation and Twilio dialing. Post-call webhooks are the primary completion path; polling is optional fallback.
Best for: appointment setting, lead qualification, outreach, follow-ups, collections — any call with a predictable conversation tree.
OpenClaw → opencawl.call(to, goal, context) ↓ OpenCawl + ElevenLabs run the call ↓ post-call webhook updates status immediately ↓ OpenClaw receives structured outcome
Inbound calls run through the same shared ElevenLabs agent, with per-user prompt, voice, first-message, and task-dispatch settings supplied by OpenCawl.
Commands
call
— Make an outbound call
callDispatch a goal-based outbound call. Returns a
call_id immediately. The call runs async; use status to track resolution.
Parameters:
(required): E.164 phone number, e.g.to+15551234567
(required): What the call should accomplish in plain languagegoal
(optional): Background the agent should know — lead source, prior interactions, objections to expectcontext
(optional): Voice/personality profile slug (e.g.persona
,professional-friendly
)direct-confident
(optional): Override voice directly by voice library ID (e.g.voice_id
,rachel
)thomas
(optional): Hard cap on call length in seconds (default: 300, max: 1800)max_duration_seconds
(optional): HTTPS URL OpenCawl will POST the outcome toon_completion_webhook
Example:
{ "skill": "opencawl", "command": "call", "to": "+15551234567", "goal": "Schedule a 30-minute Workmate demo. Get their name, email, and two availability windows. If they push back, mention we have a 14-day free trial.", "context": "Inbound lead from the enterprise landing page. Requested info 2 days ago. Has not replied to follow-up email.", "persona": "professional-friendly" }
Returns:
call_id, status: "ringing"
status
— Check call outcome
statusPoll the status and result of any call.
Parameters:
(required): The call ID returned bycall_idcall
Returns:
{ "call_id": "abc123def456", "direction": "outbound", "status": "completed", "outcome": "success", "to_number": "+15551234567", "goal": "Schedule a 30-minute Workmate demo", "persona": "professional-friendly", "summary": "Spoke with Jamie Chen. Scheduled demo for Thursday 2pm ET. Email: jamie@acme.com.", "extracted": { "name": "Jamie Chen", "email": "jamie@acme.com", "availability": ["Thursday 2pm ET", "Friday 10am ET"] }, "duration_seconds": 187, "transcript": "...", "recording_url": "https://api.twilio.com/...", "created_at": "2026-03-28T14:00:00Z", "completed_at": "2026-03-28T14:03:07Z" }
Possible
status values: initiated, queued, ringing, in_progress, completed, failed, no_answer, voicemail, busy
calls
— List recent calls
callsList calls with optional filtering.
Parameters:
(optional): Filter by statusstatus
(optional): ISO date range startfrom
(optional): ISO date range endto
(optional): Max results (default: 20, max: 100)limit
(optional): Pagination cursor from previous responsecursor
hangup
— End a call
hangupTerminate an in-progress call.
Parameters:
(required): Call to endcall_id
(optional): Logged reason (e.g.reason
,"goal_achieved"
)"no_answer_threshold"
voicemail
— Check voicemail inbox
voicemailList and read voicemails left on your OpenCawl number.
Parameters:
(optional): Max results (default: 10)limit
(optional):unread_only
to filter to unheard messagestrue
credits
— Check balance
creditsReturns: Credit balance, plan name, estimated minutes remaining, next reset date
setup
— First-time initialization
setupReports your current phone number, inbound configuration, gateway config, and ElevenLabs webhook/tool endpoints. Run once after installing the skill.
/opencawl setup
Personas
Personas define how OpenCawl sounds and behaves on calls. Each persona maps to a voice from the ElevenLabs voice library.
| Slug | Voice | Best For |
|---|---|---|
| Emily | B2B outreach, demos, enterprise |
| Thomas | Executive outreach, follow-ups |
| Serena | Support, onboarding, check-ins |
| Freya | SMB sales, product promotions |
| Adam | Appointment reminders, surveys |
Pass the persona slug in the
call command. If omitted, your dashboard voice selection is used. You can also pass voice_id directly to use any voice from the library.
See
references/personas.md for the full voice library and ElevenLabs model recommendations.
Inbound Tasks
To let the shared ElevenLabs agent perform real work during live calls, configure a per-user OpenClaw gateway webhook in OpenCawl settings. The agent uses the OpenCawl task tools to dispatch work and check status.
Configuration Reference
~/.openclaw/openclaw.json:
{ "skills": { "entries": { "opencawl": { "enabled": true, "apiKey": "<your OpenCawl API key>", "env": { "OPENCAWL_API_URL": "https://opencawl.com", "OPENCAWL_DEFAULT_PERSONA": "professional-friendly", "OPENCAWL_MAX_DURATION": "300", "OPENCAWL_ANNOUNCE_CHANNEL": "telegram" } } } } }
Reference Files
— Inbound autonomous call setup and gateway task-dispatch patternreferences/inbound.md
— Voice/persona configuration and ElevenLabs voice mappingreferences/personas.md
— Full OpenCawl REST API reference (all endpoints, request/response schemas)references/api.md