Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Give your agent real phone numbers for SMS, OTP verification, and voice calls via the AgentCall API.
Give your agent real phone numbers for SMS, OTP verification, and voice calls via the AgentCall API.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
You have access to the AgentCall API for phone numbers, SMS, voice calls, and AI voice calls.
All requests require: Authorization: Bearer <AGENTCALL_API_KEY> The API key is available in the AGENTCALL_API_KEY environment variable.
https://api.agentcall.co For a complete plain-text API reference: GET https://api.agentcall.co/llms.txt
Provision a number: POST /v1/numbers/provision Body: { "type": "local", "country": "US", "label": "my-agent" } Types: local ($2/mo), tollfree ($4/mo), mobile ($3/mo), sim ($8/mo, Pro only) Response: { "id": "num_xxx", "number": "+12125551234", "type": "local", ... } List numbers: GET /v1/numbers Query: ?limit=20&country=US&type=local Get number details: GET /v1/numbers/:id Release a number (irreversible): DELETE /v1/numbers/:id
Send SMS: POST /v1/sms/send Body: { "from": "num_xxx", "to": "+14155551234", "body": "Hello!" } "from" can be a number ID or E.164 phone string Get inbox: GET /v1/sms/inbox/:numberId Query: ?limit=20&otpOnly=true Get a specific message: GET /v1/sms/:messageId Wait for OTP code (long-polls up to 60 seconds): GET /v1/sms/otp/:numberId Query: ?timeout=60000 Response: { "otp": "482913", "message": { ... } }
Register a webhook: POST /v1/webhooks Body: { "url": "https://example.com/hook", "events": ["sms.inbound", "sms.otp", "call.status"] } Events: sms.inbound, sms.otp, call.inbound, call.ringing, call.status, call.recording, number.released List webhooks: GET /v1/webhooks Rotate webhook secret: POST /v1/webhooks/:id/rotate Delete a webhook: DELETE /v1/webhooks/:id
Get usage breakdown: GET /v1/usage Query: ?period=2026-02
All phone numbers must be E.164: +{country code}{number}, e.g. +14155551234
POST /v1/numbers/provision with { "type": "local" } โ get a test number Enter the number into your staging app's verification form GET /v1/sms/otp/:numberId?timeout=60000 โ wait for the verification code Assert the code arrives and your app accepts it DELETE /v1/numbers/:id โ release the test number
POST /v1/numbers/provision with { "type": "local" } โ get a number (if you don't have one) POST /v1/calls/ai with { "from": "num_xxx", "to": "+1...", "systemPrompt": "..." } โ start the call Wait for the call to complete GET /v1/calls/:callId/transcript โ get the full conversation transcript
401: Invalid or missing API key 403 plan_limit: Plan limit reached (upgrade to Pro at agentcall.co/dashboard) 404: Resource not found 422: Validation error (check request body) 429: Rate limit exceeded (100 req/min)
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.