Connected apps (HubSpot, Stripe and the rest) are tools too: see
MCP integrations. The built-ins (ending the call,
transfers, booking appointments) are always there when switched on, and an
agent whose knowledge base has files gets
search_knowledge to look things up in them.
The console does all of this under Tools, and on each agent’s page under
Tools.
Create a webhook tool
What your endpoint receives
- The arguments as the JSON body, or as query parameters for
GETandDELETE. Nothing else is wrapped around them, so an existing API or a Zapier, Make or n8n catch hook works as it is. - Headers saying what it is about:
Answer with JSON or text, within the timeout (10 seconds by default, up to
30). The caller hears silence while the agent waits, so keep it quick. The
first 4,000 characters go back to the agent. An error status or a timeout is
turned into a sentence the agent can say, such as “I could not check that
right now”.
Verify the signature
POST /v1/webhook/rotate-secret or on the console’s webhook settings.
Test it
Client tools
A client tool runs in the caller’s app. During a realtime session the server sendstool.call with the arguments; your code does the thing and
answers with tool.result. Phone calls have no app, so client tools are never
offered on them.
wait_for_result: false tells the agent “done” at once, which suits actions
like opening a page. Leave it true (the default) when the agent needs what
your app returns.
In your app (browser SDK)
On your website (your agent’s mascot)
The website widget is your agent’s mascot.data-mascot is the mascot’s
public_id, from the agent’s mascot field once sharing is on (see
Mascots).
WixzelMascot.mount(element, { mascot, tools }) you can pass the handlers
to one agent’s mascot instead.
Limits
- Up to 20 of your own tools per agent, and 40 tools in all with connected apps.
- Up to 20 tool calls in one call.
- Tool names: letters, digits and underscores, starting with a letter, unique in the account.
- Up to 30 parameters, three levels deep.
- Header values are encrypted and never returned; only their names are.
- Webhook URLs must be public
httpsorhttpon port 443 or 80.
On the call record
Every tool call is on the call:GET /v1/calls/{id} lists tool_calls with
the tool, its kind (webhook, client, integration or knowledge), the arguments with
long values cut, whether it worked and how long it took. The console shows
them on the call’s timeline.
