← PhonicCONTENT HISTORY
WHAT CHANGED
Update to Phonic
Snapshot Nov 10, 2026 · 00:10 UTC · version 1.0.1
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Phonic and check future changes in Following.
Up to 3 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Connect tools to Phonic agents and configure human transfers. Use for webhook, WebSocket, context, MCP, and built-in tools or transfer outcomes.",
"included_files": [],
"name": "phonic-tools",
"skill_md_contents": "---\nname: phonic-tools\ndescription: Connect tools to Phonic agents and configure human transfers. Use for webhook, WebSocket, context, MCP, and built-in tools or transfer outcomes.\nlicense: MIT\n---\n\n# Connect Phonic tools and transfers\n\nSDKs: `npm install phonic` / `pip install phonic`. Entry points: `new PhonicClient({ apiKey })` (Node), `Phonic(api_key=...)` / `AsyncPhonic(...)` (Python). REST base: `https://api.phonic.ai/v1` with `Authorization: Bearer $PHONIC_API_KEY`. Always use the `.ai` domain for API and docs URLs — `phonic.co` addresses still resolve for backward compatibility, but all new code should use `phonic.ai`.\n\nFetch live docs rather than from memory: use the index at [llms.txt](https://docs.phonic.ai/llms.txt). For the REST API, see [openapi.json](https://docs.phonic.ai/openapi.json). For the WebSocket protocol, see [asyncapi.json](https://docs.phonic.ai/asyncapi.json). If an endpoint does not appear in these docs, it doesn't exist, do not invent one.\n\n- Tools: `client.tools.create(...)`, then attach by name in agent config `tools: [...]`.\n\n## Tools\n\nTool types (webhook, websocket, context, built-in transfers, MCP), reserved parameter names, and each type's request/response contract are documented in [the tools docs](https://docs.phonic.ai/docs/build/tools/tools_overview.md) — fetch the page for your tool type before implementing.\n\n- Tool outputs must include every identifier a later tool call needs as a parameter (e.g. return the `job_id` your `update_job` tool expects) — the agent can only pass along values it has been given.\n- Tools can be defined inline in the STS config (no pre-created tool): `tools: [{ \"type\": \"custom_websocket\", \"execution_mode\": \"sync\", \"tool_schema\": { \"type\": \"function\", \"function\": { ..., \"strict\": true } } }]` — the `strict: true` inside the function schema is required.\n- If you bridge audio server-side, never do blocking I/O in the audio send/receive loop — periodic multi-second stalls in agent audio are almost always blocking code in the bridge.\n\n## Authentication for configured tools\n\nConfigure webhook and external MCP-server authentication on [Phonic](https://phonic.ai) in the intended workspace/project, then reference the saved tool or server from the agent configuration. Phonic's MCP cannot submit custom headers, including SIP transfer headers. Do not ask users to paste credentials into chat or use an SDK/REST/shell workaround to submit credentials excluded from MCP. For SDK application development, use existing environment variables or a secrets manager without displaying secret values.\n\n## Transfers\n\n- Transfer to a human is a built-in tool (`built_in_transfer_to_phone_number`, target number in the tool config) attached to the agent — don't hand-roll Twilio call control.\n- Targets are preconfigured per transfer tool; the agent chooses among configured transfer tools and cannot dial an arbitrary number returned by another tool mid-call.\n- Reading outcomes from conversation data: the transfer tool's output body has `connected: true|false` — `true` means the callee leg answered (human or voicemail); `false` means the transfer failed and the agent tells the caller.\n- Voicemail detection: set `detect_voicemail: true` on the transfer tool (tools API). The agent then listens to the answered leg and a system tool call records the judgment — `tool_transfer_hit_voicemail` or `tool_transfer_successful` (= judged human). Without voicemail detection, `tool_transfer_successful` fires immediately on connect and means only \"connected\". Detection requires the bridged transfer mode (`use_agent_phone_number: true`, the default) — a SIP REFER handoff leaves the call and can't listen.\n- The `conversation.transferred` webhook carries `transferred_to`, `call_info`, and the conversation items up to the transfer — the pre-transfer transcript arrives with the event.\n"
}SHA-256 of public snapshot: f9f05052b149cb9dbebfbe7a2ca7245137b5836c6a4b908e5dd98932395e212e