clutch auth login # browser OAuth → portalclutch auth whoami # current identity + active org
Trunks + calls (after auth):
clutch trunks list # tabular viewclutch trunks show <id> # one trunk in detailclutch dial +15551234567 --trunk <your-trunk-id> \ --app AI_BIDIRECTIONAL_STREAM --app-args my-agent-idclutch dial --list-apps # all 13 DialplanAction valuesclutch hangup <call_sid>
clutch dial defaults --app to AI_BIDIRECTIONAL_STREAM (=6). If you
don’t pass --app-args <agent_id> the runtime has no agent to bridge
and the call lands in silence. For raw audio piping without an AI
agent, use --app ANSWER (=5).
Mid-call control verbs (each calls ExecuteDialplan server-side):
telequick init <lang> <name> drops a working starter into your
working directory:
telequick init go my-voice-agenttelequick init python my-py-agenttelequick init typescript browser-demo
Each starter includes:
A working dial / event-handling sample (main.telequick /
main.py / src/index.ts) that compiles against the TeleQuick SDK.
An AGENTS.md file tuned for that language. This is the file that
agents read first when they enter the project — it captures the
language-specific traps an agent will otherwise re-discover the hard way
(e.g. “Emscripten corrupts byte arrays passed as std::string; use
typed_memory_view instead”).
A .telequick.json project manifest with a pinned schema version
for telequick migrate.
These mirror what works for any rapidly-evolving SDK; we mention them
because the TeleQuick wire format and method-ID table change between
minor releases.
Browse before searching. Have your agent fetch /llms.txt first so
it knows what exists. Search excerpts are noisier than full pages.
Fetch full pages, not excerpts. Use get_page (MCP) or
get-page (CLI) when you need authoritative answers. The grouped index
is for navigation; the page itself is for code.
Never hand-edit serde structs. The Python, TypeScript, Go, Rust,
Java, and .NET bindings are auto-generated by
telequick/tools/apirpc_compiler/generate_bridges.py. If your
agent wants to add an RPC field, it should update the upstream schema
and regenerate, not patch the binding by hand.
Run telequick migrate after bumping the SDK. Surfaces
schema drift before runtime does.
The TeleQuick Agent Skills
repository ships Anthropic-format Skills — opinionated, end-to-end recipes
that load into your coding agent’s context when intent matches. Drop the
repo into .claude/skills/ (Claude Code) or .cursor/skills/ (Cursor) and
the agent gains task-specific knowledge for these workflows:Generic recipes
telequick-tool-calling — LLM tool / function calling: the
built-in implicit telephony toolset (transfer / hold / DTMF /
disconnect / supervisor), custom server-side tools, and client-side
tool calls via OpenAI Realtime.
telequick-rag-integration — pgvector / Pinecone / Weaviate
retrieval as a tool call with latency budgets and barge-in safety.
telequick-crm-enrichment — pre-call enrichment (Salesforce
/ HubSpot lookup → system prompt overrides) vs. in-call tool lookup.
Vendor bridges
telequick-vendor-browser-webrtc — capture mic in the browser,
send PCMU over WebTransport.
telequick-vendor-livekit — bridge PSTN into a LiveKit room.
telequick-vendor-daily — bridge PSTN into a Daily room
(Pipecat-friendly).
telequick-vendor-chime — Amazon Chime SDK Meetings or Voice
Connector.
telequick-vendor-twilio — bridge from existing Twilio Media
Streams (TwiML <Stream>) into TeleQuick.
telequick-vendor-vapi — bridge a Vapi.ai voice agent over
Vapi’s WebSocket transport.
Each skill is self-contained: prereqs checklist, working Python/TypeScript
code, “verify it works” snippet, common gotchas, and pointers back to the
docs MCP for deeper reference.