get-phone-number
Skill0 starsChanged 58 days agoMITView on GitHub
Buy, import, provision, label, or attach a phone number in ThunderPhone. Use when someone asks for a ThunderPhone-managed number, bring-your-own-carrier SIP setup, VoIP connection search, inbound or outbound agent assignment, number limits, porting, or regulatory requirements.
- Reads credentials
- Sends data out
In this repository21 other files it gives its agents.
- AGENTS.mdAGENTS.md
- add-knowledgeSkill
- build-tool-integrationSkill
- create-agentSkill
- embed-web-widgetSkill
- handle-inbound-callsSkill
- iterate-on-agentSkill
- migrate-from-blandSkill
- migrate-from-elevenlabsSkill
- migrate-from-retellSkill
- migrate-from-vapiSkill
- place-outbound-callsSkill
- run-campaignSkill
- setup-api-keySkill
- setup-webhooksSkill
- test-agentSkill
- thunderphone-mcp-setupSkill
- thunderphone-prompt-builderSkill
- use-with-livekitSkill
- use-with-openai-realtimeSkill
- use-with-pipecatSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 5 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
Choose the source: Use a ThunderPhone-managed number for a quick inbound setup.
- Very specific: line 17
Check capacity: Call GET /v1/phone-numbers/limits before provisioning.
- Distinctive: line 18
Do not assume the default organization cap applies to this account.
- Very specific: line 58
Or connect a carrier: Create POST /v1/voip-connections, test with POST /v1/voip-connections/test, then use the connection's …
- Very specific: line 63
Attach agents: Update the number with PATCH /v1/phone-numbers/{phone_number_id} using inbound_agent_id and, where the number supports it, …
- Distinctive: line 85
Follow get a phone number and bring your own numbers.
- Distinctive: line 87
Never expose SIP credentials or claim unverified inbound/outbound capability.
- Distinctive: line 88
Keep porting and regulatory decisions with an authorized human.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Get and configure a phone number
- Choose the source. Use a ThunderPhone-managed number for a quick inbound setup. Use a VoIP connection when retaining a carrier or when outbound capability must come from that carrier. SIP credentials and porting remain carrier-specific.
- Check capacity. Call
GET /v1/phone-numbers/limitsbefore provisioning. Do not assume the default organization cap applies to this account. - Provision a managed number.
POST /v1/phone-numbersaccepts an optionalarea_code. Managed numbers are for inbound calls.
{
"area_code": "${AREA_CODE}"
}curl --fail-with-body -X POST https://api.thunderphone.com/v1/phone-numbers \
-H "Authorization: Bearer $THUNDERPHONE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-ThunderPhone-Client: skills/get-phone-number@1.0" \
--data "$(jq -n --arg area "$AREA_CODE" '{area_code:$area}')"import os, requests
r = requests.post("https://api.thunderphone.com/v1/phone-numbers",
json={"area_code": os.environ["AREA_CODE"]},
headers={"Authorization": f"Bearer {os.environ['THUNDERPHONE_API_KEY']}",
"X-ThunderPhone-Client": "skills/get-phone-number@1.0"}, timeout=30)
r.raise_for_status()
print(r.json())const response = await fetch("https://api.thunderphone.com/v1/phone-numbers", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.THUNDERPHONE_API_KEY}`,
"Content-Type": "application/json", "X-ThunderPhone-Client": "skills/get-phone-number@1.0" },
body: JSON.stringify({ area_code: process.env.AREA_CODE }),
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());- Or connect a carrier. Create
POST /v1/voip-connections, test withPOST /v1/voip-connections/test, then use the connection'savailable-numbers,search-numbers,provision-number, orimport-numbersendpoint. Read carrier-specific instructions before transmitting SIP credentials. - Attach agents. Update the number with
PATCH /v1/phone-numbers/{phone_number_id}usinginbound_agent_idand, where the number supports it,outbound_agent_id. - Verify. Fetch
GET /v1/phone-numbers/{phone_number_id}. Confirm source, capabilities, status, label, and agent assignments. Place a controlled test call in every direction the number will support. - Escalate human work. Number porting, emergency-address requirements, identity verification, regional registrations, and carrier contracts need a human owner. Do not represent a regulatory step as complete from an API response alone.
Errors
| Symptom | Cause | Fix |
| Limit response blocks purchase | Organization is at its number cap | Reuse or release a number, or request a reviewed limit change. |
| No inventory for area code | Managed inventory is unavailable | Try an approved alternative or connect a carrier; do not fabricate inventory. |
| Imported number cannot place calls | Carrier/SIP or outbound assignment is incomplete | Verify the VoIP connection, capability, and outbound_agent_id. |
| Incoming call has no agent | No deployed inbound agent is attached | Deploy the agent and patch inbound_agent_id. |
Source and safety rules
- Follow get a phone number and bring your own numbers.
- Confirm fields in the phone-number and VoIP connection references.
- Never expose SIP credentials or claim unverified inbound/outbound capability.
- Keep porting and regulatory decisions with an authorized human.
See references/number-paths.md for the workflow map.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

