Written by ClawCall · Published · Updated
How to Build a Claude Code Skill That Makes Phone Calls
A Claude Code skill that makes phone calls is a SKILL.md file at .claude/skills/phone-calls/SKILL.md that tells Claude when to dial, what REST API to hit, and how to poll for the result and a nullable transcript. The skill itself is plain markdown with YAML frontmatter, and the dialing happens behind an HTTP endpoint the skill calls, so the work splits in two: the instructions Claude reads, and a phone-calling backend that, after finalization, can return captured transcript evidence when present. For hosts with remote MCP and OAuth, ClawCall's preferred path is the hosted connector at https://api.clawcall.dev/mcp. This tutorial deliberately builds the packaged-skill plus REST fallback for incompatible hosts or custom procedures; the same product includes a free trial of 30 calls and 30 minutes, whichever lasts later, with no card required. By the end you will have a skill that dials any US number for you.
Try ClawCall free — 30 calls + 30 min, no card →What a Claude Code skill actually is, and why phone calling fits the format
Pick the phone-calling backend before you write a single line of SKILL.md
Install the reference skill to see the target shape
Write your own SKILL.md from scratch
Wire up the first call: POST, poll, transcript
Test the skill end-to-end with a realistic task
How your skill compares to the other options for agent phone access
What to do once the skill is working
Frequently asked
- Do I need to know how telephony works to build a phone-calling Claude skill?
- No. The reason to skip the developer voice platforms (Bland, Vapi, Retell, Vocode) and write against a finished product is that the telephony stack — Telnyx, Deepgram, ElevenLabs, the codec conversion, the phone-number pool, the webhook handling — is fully managed. Your SKILL.md only needs to know two endpoints: POST /call to start a call, and GET /call/:id to poll for the result and a nullable transcript. The skill is judgment plus a fire-and-poll loop, nothing more. If you can write a markdown file and read a JSON response, you can ship a working phone-calling skill in an afternoon.
- How long should a SKILL.md file actually be?
- Between 150 and 400 lines is the sweet spot for a phone-calling skill. Shorter than that and you miss edge cases — what to do when nobody picks up, when the receptionist asks if you are a bot, when the user gives a non-US number, when the call reaches voicemail. Longer than that and Claude starts skipping sections. Write the file like a runbook for a junior teammate: charter, when to invoke, when not to invoke, API contract with example payloads, hard rules, and three or four worked transcripts. Add new constraints as short examples in the body rather than as long policy prose at the top.
- Can the skill make international calls?
- Not today, if you are using ClawCall as the backend. The API is US-only (+1 NANP) and English-only at launch, so your skill should validate the destination number before posting it and refuse non-US numbers with a clear error. If you need international, you are back in the developer voice platform world (Vapi, Bland, Vocode) where you wire telephony yourself. For most consumer and agent use cases — appointments, reservations, hold-time elimination, bill disputes, subscription cancellations — US-only is already enough, which is why the trade-off is worth it for the flat monthly pricing and the prewritten skill.
- What is the difference between a Claude Code skill and an MCP server for phone calls?
- A skill is a markdown file Claude reads to decide when and how to do something — no code, no process, no port. An MCP server is a long-running process that exposes tools over the Model Context Protocol, which Claude can call as functions. For phone calling, hosted OAuth MCP is the preferred primitive when the host supports remote MCP and OAuth: connect https://api.clawcall.dev/mcp, sign in, and let the host discover the workflow tools without receiving a ClawCall API key. A SKILL.md plus the REST API remains useful as a fallback for incompatible hosts or when you need custom procedural guidance beyond the hosted tool descriptions.
- How do I keep the skill from making spam calls or leaving voicemails?
- Put the hard rules in the SKILL.md body and back them with a backend that enforces them too. The ClawCall API enforces two non-negotiable rules at the server level: it always discloses it is an AI when asked, and it can leave voicemail when instructed. The skill should restate both in plain language so Claude understands the boundary, and should also include a do-not-call rule: no unsolicited sales, no political outreach, no calls to numbers the user has not explicitly named. Combining server-side enforcement with skill-level instruction is what keeps a phone-calling agent on the right side of consumer-protection law and basic decency.