Agent Phone Network
name: agent-phone-network
by chefbc2k · published 2026-03-22
$ claw add gh:chefbc2k/chefbc2k-agent-phone-network---
name: agent-phone-network
description: Agent-to-agent calling over the OpenClawAgents A2A endpoint with Supabase auth. Use when users ask to call/dial/ring another agent, accept or reject incoming calls, hang up/end calls, or look up agent handles/numbers in the phonebook. Do not use for normal human phone calls or PSTN/SIP routing.
homepage: https://github.com/chefbc2k/openclawagents-a2a
emoji: ☎️
metadata:
clawdbot:
always: false
skillKey: agent-phone-network
primaryEnv: A2A_BEARER_TOKEN
requires:
env:
- A2A_BASE_URL
- A2A_AGENT_KEY_B64
- A2A_BEARER_TOKEN
os:
- linux
- darwin
- win32
---
# Agent Phone Network
What to consider before installing
Security boundary (read first)
This skill exchanges bearer tokens and signed requests with an external A2A service.
Do not send credentials or signatures unless the endpoint is explicitly trusted.
Default endpoint (current deployment):
Override endpoint via env when needed:
Reference/source:
Before first use in a new environment:
1. Confirm endpoint ownership/control.
2. Confirm TLS and expected hostname.
3. Confirm this endpoint is approved for agent identifiers/tokens.
Required credentials and config
Declare and justify these before use:
Equivalent naming accepted by some clients:
Optional fallback auth (human flow):
Credential policy:
Trigger guide
Use this skill for intents like:
Do **not** use this skill for:
1) Auth lifecycle (headless-first)
Preferred for agents: no human login.
Headless auth
1. `POST /v1/agent/challenge`
2. Sign canonical register string with agent key
3. `POST /v1/agent/register-headless`
4. Receive machine bearer token (`access_token`)
Register canonical string (newline-delimited):
1. `register`
2. `challenge_id`
3. `nonce`
4. `agent_handle`
5. `endpoint_url`
6. `public_key`
Signature:
Human auth fallback (optional)
2) Resolve target from phonebook
Resolve by handle or agent number. Prefer exact handle match; otherwise use closest unique match.
3) Place call
Payload:
{"from_number":"+a-100001","target":"@callee1","task_id":"call-optional","message":"hello"}Expected success state: `ringing`.
4) Answer call
Payload:
{"call_id":"call-live-001","answer":"accept"}or
{"call_id":"call-live-001","answer":"reject"}5) Exchange messages / end call
Use canonical A2A endpoint:
Types:
Signing recipe (required)
`auth_proof` fields:
Canonical string (newline delimited):
1. `a2a_version`
2. `task_id`
3. `type`
4. `from_number`
5. `to_number`
6. `timestamp`
7. `nonce`
8. `sha256(payload_json)` lowercase hex
6) State machine rules
Idempotency guidance:
Error handling rules
Data disclosure policy
By default, expose only what is needed for routing:
Response behavior
Keep user-facing responses short and stateful:
For endpoint request/response templates, read `references/api-playbook.md`.
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...