When to use it
- The caller asks something the in-call agent can’t answer from its prompt (order status, account details, a policy lookup).
- You already run an agent (e.g. an internal assistant) and want phone calls to tap into it without putting it on every conversational turn.
Quickstart
consult is set, Patter auto-injects a consult_agent tool into the
agent (Realtime and Pipeline modes). The model calls it with a single
request string when it needs help.
The HTTP contract
Patter POSTs JSON to yoururl:
reply (or response / text / result /
answer / message) string, which the agent speaks:
ConsultConfig
| Field | Default | Notes |
|---|---|---|
url | — (required) | HTTP(S) endpoint. SSRF-validated at call start (private / loopback / link-local hosts and non-HTTP schemes are rejected). |
headers | undefined | Sent with every POST (e.g. an Authorization bearer). Never logged. |
timeoutMs | 30000 | Per-consult timeout — higher than the generic webhook-tool default (10 000 ms) because a consult may run deeper reasoning. |
toolName | "consult_agent" | The tool name the model sees. |
description | (sensible default) | Tune to steer when the agent escalates. |
allowLoopback | false | Opt-in: permit a loopback / private / link-local url (e.g. a local back-office agent on 127.0.0.1 or an RFC1918 host). See Pointing consult at a local agent. |
Pointing consult at a local agent
By default the consult URL is SSRF-validated and loopback / private / link-local targets are rejected — sohttp://localhost:8000/consult will not pass. When your
back-office agent (or a thin adapter) runs on the same machine, set
allowLoopback: true to relax that check:
- Scope. Relaxes the loopback (
127.0.0.0/8,::1,localhost), RFC1918 private (10/8,172.16/12,192.168/16), and link-local host checks for the consult URL only. The generic webhook-tool validator path — which can be reached by tool / LLM input — stays strict and is unaffected. - Always enforced. Non-HTTP(S) schemes (
file:,javascript:, …) are rejected even with the flag on. - Why it is safe. The consult URL is SDK-user configuration, not caller-derived input. Cloud-metadata hostnames also become reachable when opted in — only enable the flag for a URL you control.
Behaviour & limits
- Failure is graceful. A timeout, non-2xx response, or unreachable endpoint does not crash the turn — the agent speaks a short fallback line and carries on.
- Security. The URL is SSRF-validated; header values are never logged. The
URL is trusted SDK configuration (not caller-supplied). To point consult at a
local agent, opt in with
allowLoopback: true— see Pointing consult at a local agent. - Mode support. Injected in Realtime and Pipeline modes. ElevenLabs
ConvAI is not supported — its tools live on the ElevenLabs-hosted agent,
so a warning is emitted if you set
consultwith that provider.
getpatter for Python.
