Tools

Define HTTP tools the model can call, wire authentication from secrets, require confirmation, act as the user, and test them.

+ New HTTP tool creates a draft named new_tool and opens the editor. The list shows the request (GET https://…), auth, flags (confirm, as user, side effect), which agents use it, and status.

Fields

FieldNotes
Namesnake_case; this is the function name the model calls.
Statusdraft, published, archived. Only published tools are offered to agents; archived ones are removed from prompts.
Description for the modelSay when to call it and what it returns. This drives tool choice.
Method, URLGET, POST, PUT, PATCH, DELETE. URL is a template: https://api.acme.com/orders/{{ input.orderId }}/shipment. Only http(s), no private hosts, redirects are not followed.
Headers, QueryJSON objects; values may use {{ input.* }} and {{ context.* }}.
Body templateFor non-GET methods. Rendered as JSON when parseable; content-type: application/json is set.
AuthNone · Bearer (secret) · API-key header (secret, header name default X-Api-Key) · Basic (secret holding user:pass). Secrets are referenced by name and decrypted only at call time.
Input schemaJSON Schema of the arguments. additionalProperties: false recommended. Validated before every call (required, type, enum).
Timeout, Retries, BackoffTimeout up to 15 s (default 8 s); up to 3 retries on network errors and 5xx.
Requires confirmationThe user approves the call in the chat first (tool.confirmation_required).
Acts as the end userForwards the user’s own JWT in a header (default X-User-Token) so your API applies its normal permissions.
Has side effectsMarker for calls that should never run speculatively.

Test

The Test with sample input button runs the tool from the runtime with the sample JSON (pre-filled from the schema) and shows status, duration, the request with secrets redacted, and the response body. Use it before attaching a tool to an agent.

Templates

{{ input.orderId }} reads the model’s argument; {{ context.locale }} reads the session context. Unknown paths render as empty strings. Dotted paths only; no expressions.

The Acme sample tools

A fresh workspace ships five tools pointed at the demo backend so a real model has something to call:

ToolRequestConfirmation
search_productsGET https://api.kletso.ai/demo/acme/products?q={{ input.query }}&maxPrice={{ input.maxPrice }}no
search_flightsGET https://api.kletso.ai/demo/acme/flights?from={{ input.from }}&to={{ input.to }}&date={{ input.date }}no
track_shipmentGET https://api.kletso.ai/demo/acme/orders/{{ input.orderId }}/shipmentno
get_salesGET https://api.kletso.ai/demo/acme/reports/sales?period={{ input.period }}no
cancel_orderPOST https://api.kletso.ai/demo/acme/orders/{{ input.orderId }}/cancelyes

Replace the URLs with your own endpoints when you are ready; the schemas are a good starting point.

Last updated 2026-09-28 · Report an issue with this page