Install any skill in seconds. Free to start, no credit card required.
Get Started Free →blockrunai/phone
Use when the user wants phone-number intelligence (lookup, carrier, line type, SIM-swap / call-forwarding fraud signals), US/CA number provisioning (rent a phone number), or outbound AI voice calls (Bland.ai under the hood — schedule, confirm, follow-up). Pay per call in USDC.
Passed 6 of 12 test cases with the skill, and 2 of 12 without it.
and 12 more in the full report
10 fixed1 passed either way9 still failing3 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 10 test cases the skill fixed. Same model, same prompt, with and without the skill.
We no longer need the phone number +14155550199. What request should we make to return it to the available pool, and what is the fee?
| Checked | Without skill | With skill |
|---|---|---|
| Calls phone/numbers/release with phoneNumber set to +14155550199. | Missed | Passed |
| States that releasing a number is free. | Passed | Passed |
The instructions your model reads when the skill loads.
Two namespaces in one tool: /v1/phone/* for number intelligence + provisioning, /v1/voice/* for outbound AI calls. Pay per call in USDC. Any other path is refused before payment — the tool never reaches routes outside these two.
Phone numbers use E.164 format — + followed by country code and subscriber digits (US: +1 + 10 digits; UK: +44 + 10 digits; etc.). The examples below use <+E.164-number> as a placeholder — the LLM should substitute the actual number from the user's request, not copy the literal placeholder.
const targetNumber = "<+E.164-number-from-user>" // e.g. user said "call my doctor at 415-..."
// Lookup carrier + line type
blockrun_phone({ path: "phone/lookup", body: { phoneNumber: targetNumber } })
// Buy a 30-day US number
blockrun_phone({ path: "phone/numbers/buy", body: { country: "US", areaCode: "415" } })
// Outbound AI call (requires `from` — see below)
const r = await blockrun_phone({ path: "voice/call", body: {
to: targetNumber,
from: "<+E.164-number-you-own>", // from phone/numbers/buy
task: "Confirm appointment for Friday at 3pm with Dr. Wong.",
voice: "june"
}})
// poll the result (free GET, no body)
blockrun_phone({ path: `voice/call/${r.call_id}` })
/v1/phone/*)| Path | Body | Price | Effect |
|---|---|---|---|
phone/lookup | { phoneNumber } | $0.0110 | Carrier, line type (mobile/landline/VoIP) |
phone/lookup/fraud | { phoneNumber } | $0.0510 | + SIM-swap signals, call-forwarding detection |
phone/numbers/buy | { country?: "US"|"CA", areaCode? } | $5.001 | 30-day lease, US or CA |
phone/numbers/renew | { phoneNumber } | $5.001 | Extend lease 30 days |
phone/numbers/list | {} | $0.0020 | Your wallet-owned numbers |
phone/numbers/release | { phoneNumber } | free | Return to pool |
test cases passed, vs 2 / 12 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.