Tools
Tools
Let your AI get things done. Check availability, book appointments, send texts and use your business systems during a call.
#How a tool call works
- Each tool has a name, a description and parameters. The model sees them on every turn.
- When the conversation needs it, the model calls the tool and fills in the parameters from what the caller said.
- BluePenguin runs the tool. If it takes a moment, the assistant can say a start message such as "One moment while I check".
- The result goes back to the model, which answers the caller from it.
Every tool call is logged on the call page with its arguments, result and timing.
#Built-in and custom tools
Custom tools
| Kind | What it does | Guide |
|---|---|---|
| API request | A templated HTTP request to any public API. | API request |
| Code | JavaScript or TypeScript in an isolated sandbox. | Code |
| Server function | A signed POST to your server, which answers with the result. | Server function |
| Transfer | Puts the caller through to one of several numbers or extensions. | Transfer |
| Text | Texts the caller or a fixed number a templated message. | Text |
| Handoff | Passes the live call to another of your assistants. | Handoff |
| MCP server | Every tool offered by a remote MCP server. | MCP |
Custom tools, code and workflows are included in Pro. Tool names use letters, numbers and underscores, and can't reuse a built-in tool's name.
#Parameters
Each parameter has a name, a type (string, number, integer, boolean, array or object), a description, whether it is required, and optionally a list of allowed values. Good descriptions matter more than anything else: the model reads them to decide what to fill in.
[
{ "name": "order_number", "type": "string", "required": true,
"description": "The order number, usually 4 digits, e.g. 1042" },
{ "name": "reason", "type": "string", "enum": ["late", "damaged", "wrong item"],
"description": "Why the caller is asking about the order" }
]#Messages
starttext- Said while the tool runs. Leave it empty to let the model decide.
failedtext- Said if the tool fails. Leave it empty to let the model explain in its own words.
#Secrets
API keys and tokens go in secret headers or, for code tools, environment variables. They are stored encrypted, masked when read back, and never shown to the model.
#Test a tool
The tool page has a test panel. Fill in example arguments and run the tool exactly as a call would, then check the result, the logs and the timing before switching it on.