
Agents get stuck on decisions only you can make. Usually that means the task sits there until you come back to your computer. With this skill, your agent just calls you.
Here's what happens. Your agent hits a question it can't answer on its own. It phones you through Bland.ai, and a voice agent asks you the question, reads you the options, and repeats your answer back so it got it right. When you hang up, your agent reads the transcript and keeps going.
It's the same idea as handing a task to GrokBot and waiting for the answer, except the answer comes from you, by phone.
What you need
- A Bland.ai account with some credit on it. Sign up at app.bland.ai.
- A Bland API key. You'll find it in the Bland dashboard.
- An agent that can run code, like Claude Code, Codex, or GrokBot.
You don't need a Twilio account or your own phone number. Bland calls from its own numbers.
Set it up
-
Copy the skill below and give it to your agent. Tell it to save it as a skill.
-
Save your Bland key somewhere private your agent can read, like your keychain or an environment variable called
BLAND_API_KEY. On a Mac you can run this in a terminal, then paste the key at the hidden prompt:security add-generic-password -U -s BLAND_API_KEY -wDon't paste the key into the chat. Your agent doesn't need to see it, it just needs to know where it lives.
-
Tell your agent your phone number, like
+15551234567, and ask it to remember it. -
Test it: "Call me and ask if this test call is coming through okay."
The first time it works, your agent saves a little helper script, so every call after that is one command.
How to use it
Just say it while you give the task:
- "Build the landing page. Call me if you need a decision."
- "Edit this video. Call me when the first cut is done."
- "I'm heading out. If you get stuck, call me instead of waiting."
A few things the skill tells your agent to do so this doesn't get annoying:
- Only call for real decisions. If it can figure something out from the code or a sensible default, it shouldn't ring your phone.
- One call, all the questions. No three calls in a row.
- If you don't pick up, it leaves a short voicemail with the question and doesn't keep calling.
- "You decide" works. If you're busy, say that, and it'll use its best judgment and tell you what it picked.
Make it yours
- Pick a voice. Bland has hundreds. I use Ryan. Tell your agent which one you want and it'll use it on every call.
- Get one number. Out of the box, every call comes from a different number. If you want it to always be the same one, buy a number in Bland (about $15 a month), give it to your agent, and save it in your contacts as your agent's name.
- Keep it quick. Bland doesn't let you speed up the voice itself, so the skill tells the agent to keep every line short, and you can cut it off mid-sentence.
- Watch your credit. A short call costs me about 12 cents.
Your answer on the phone counts as your answer for that task. It doesn't give your agent permission to go do new things you never asked for.
--- name: call-me description: Phone the user through Bland.ai when you are blocked on a decision only they can make, have a voice agent ask the question, wait for the call to end, and continue the task with their answer. Use whenever the user says "call me", "give me a call", "phone me if you need me", or "call me when you're stuck / done", even if they don't mention Bland. ---
Call me
You are working on a task for the user. When you hit a decision only they can make, you phone them: a Bland.ai voice agent asks your question, confirms their answer back to them, and hangs up. You read the transcript and keep working. This skill is self-contained; build the small helper it describes the first time you need it.
Setup
Use this with an agent that can run code and make HTTP requests, such as Claude Code, Codex, or GrokBot. If the current agent cannot, say so instead of pretending to call.
The user needs:
- A Bland.ai account with credit and an API key from https://app.bland.ai.
- Their phone number in E.164 format, like
+15551234567.
Read the key from BLAND_API_KEY and the number from CALL_ME_PHONE, either in the environment or in the OS keychain (on macOS: security find-generic-password -s BLAND_API_KEY -w). If either is missing, walk the user through saving it privately, for example by running security add-generic-password -U -s BLAND_API_KEY -w themselves in a terminal so the key is typed at a hidden prompt. Never ask them to paste the key into chat, write it into this skill or any file, print it, or pass it as a command-line argument. The phone number is fine to save in your memory.
Check Bland's current docs before relying on parameter names: https://docs.bland.ai/api-v1/post/calls and https://docs.bland.ai/api-v1/get/calls-id
When to call
- Only for a real decision that blocks the task and that the user has to make. Don't call for something you can answer from the code, your memory, or a sensible default.
- Put every open question in one call. Never call three times in a row.
- If the user said "call me when X", call when X happens. Otherwise ask in chat first unless they said they're away from the keyboard.
Place the call
POST https://api.bland.ai/v1/calls with header authorization: <key> and a JSON body:
phone_number: the user's number.task: the voice agent's instructions (below).first_sentence: a short hello, e.g. "Hey, it's your agent's assistant. Got a sec for a quick question?"wait_for_greeting:true, so it lets them say hello first.max_duration: a hard cap in minutes, e.g.8.summary_prompt: "In 1-3 sentences, state exactly what the user decided or answered, including any conditions or extra instructions. If they gave no clear answer, say so. Add nothing they did not say."interruptibility:3, so the user can cut in and the agent stops talking right away.voice(optional): a voice the user picked, e.g.ryanortanner-british. List them withGET https://api.bland.ai/v1/voices. Bland has no speaking-speed setting, so keep the agent's lines short to make calls feel fast.from(optional): a number the user owns on Bland. Without it, every call comes from a different shared number.voicemail:{ "action": "leave_message", "message": "<one-line version of the question>, check your agent when you can." }
The response has status: "success" and a call_id. Anything else is a failure; report Bland's message.
Write the task so the question works out loud. Include:
- Who's calling: an assistant calling on behalf of the user's AI agent, which needs one decision to keep going.
- The question, short and plain, plus the options if there are any.
- Background to share only if they ask.
- The rules: talk fast and tight, short sentences, no small talk; ask one follow-up if the answer is vague; repeat the decision back in one sentence and confirm it; if they can't talk or say "you decide," say the agent will use its best judgment and end the call; never decide for them, promise anything, or discuss other topics; after they confirm, ask "Anything else before I let you go?" and only hang up once they say that's all (if they say "wait" or "hold on", stop and listen).
Wait for the answer
Poll GET https://api.bland.ai/v1/calls/<call_id> every ~5 seconds with a bounded timeout (keep it under your shell's command limit, or run it in the background). The call has ended when completed is true, queue_status is complete or an error stage, or status is failed, busy, no-answer, or canceled. After it ends, give summary up to about a minute to appear. Log progress, and never poll forever.
Then classify:
- Answered:
statusiscompleted,answered_byisn'tvoicemail, and the transcript has lines from theuser. Usesummaryas the answer and check it againstconcatenated_transcript, since the summary is AI-written. - Voicemail / no answer / failed: don't call back right away. Ask in chat, or use your best judgment if they said to, and tell them what you chose.
- Still going at your timeout: keep polling the same
call_id. Don't place a second call.
After the call
- Treat what they said on the phone as their answer for the task they gave you. It does not authorize new outward-facing actions (sending messages, spending money, deleting things) they didn't ask for.
- Tell them in chat that you called, what they said, and what you did with it.
- The first time it works, save a small reusable helper script and note in your memory that you can call the user this way, so next time is one command.