How it fits together
Three layers:- The tool — a single built-in capability called
http.custom. Available on every account. - A binding — an instance of the tool with your URL, method, headers, and a description of when the agent should call it. Configured per workspace under Integrations → Tools.
- An agent enable — each AI agent picks which tool bindings it can use. Configured in AI agents → edit agent → Tools.
Create a binding
- Open Integrations → Tools → New custom HTTP tool.
- Fill in the form:
| Field | What it does |
|---|---|
| Tool name | Becomes the function name the LLM sees (lookup_shipment). Lowercase, snake_case. |
| When to use | One sentence telling the LLM when to call this tool. The model reads this; clear writing here = correct calls. |
| HTTP method | GET, POST, PATCH, PUT, or DELETE. |
| URL | The endpoint, with {token} placeholders for any value the LLM should fill in (https://api.acme.com/shipments/{tracking}). |
| Headers | One per line, Key: Value format. Use this for Authorization: Bearer .... |
| Timeout (s) | How long to wait for your endpoint. Default 8s, max ~30s. |
- Save. The binding appears in the tools list.
The URL template
{token} placeholders anywhere in the URL become required arguments the LLM has to provide. Keloa parses them automatically:
https://api.acme.com/orders/{order_id}— agent must supplyorder_id.https://api.acme.com/orders?id={order_id}&email={email}— agent must supply both.https://api.acme.com/health— no placeholders, no required args. Agent can call it as a ping.
POST/PATCH/PUT, the agent can also send a JSON body. Describe what your endpoint expects in the When to use field so the model fills it correctly.
What the agent sees
For a binding calledlookup_shipment with URL https://api.acme.com/shipments/{tracking}, the LLM gets a function definition like:
{token} pattern matters — the LLM treats placeholder names as required, top-level inputs and asks the customer if it doesn’t know one.
Auth headers
Most internal APIs need a token. Pass it in the Headers box:Bind the tool to an agent
- Open AI agents → edit agent → Tools.
- Toggle on the binding you just created.
- Save. The agent will now consider this tool on every customer message.
“When a customer asks about a shipment status, always call lookup_shipment with their tracking number before answering.”
Response handling
Keloa caps the response body at 64 KB before returning it to the LLM. If your endpoint returns a larger payload, the agent gets the first 64 KB plus atruncated: true flag and a note telling it to use the partial data carefully or ask the customer to narrow the request.
Non-2xx responses surface as error to the agent, so it falls back gracefully (system prompt rules + other tools) rather than reading an error body as the answer.
Safety
- HTTPS only. Plain
http://URLs are rejected. - No internal hosts. IP-literal hosts and
localhostare blocked at execute time, even if they slip past validation. The AI can’t hit AWS metadata or a private LAN through a stale binding. - Per-account isolation. Bindings live on your workspace; another tenant can’t see or call them.
- One retry on transient failure. Connection errors and 5xx with a 200 ms backoff. 4xx is not retried (it won’t help).
- Audit log. Create/delete of a binding is logged. Each call is recorded on the conversation alongside other tool calls; visible in the Sources drawer.
Common patterns
Order lookup- URL:
https://api.shop.example.com/orders/{order_id} - Method:
GET - When to use: “Look up an order by order number to find status, items, and shipping.”
- URL:
https://api.brand.example.com/loyalty?email={email} - Method:
GET - When to use: “Check the customer’s loyalty tier and points balance when they ask about rewards.”
- URL:
https://internal-tools.example.com/kb/search?q={query} - Method:
GET - Headers:
Authorization: Bearer ... - When to use: “Search our internal Confluence-like KB when a question can’t be answered from public knowledge.”
- URL:
https://api.shop.example.com/refunds/eligibility - Method:
POST - Headers:
Authorization: Bearer ... - When to use: “Before promising a refund, POST the order_id and reason to confirm eligibility.”
Plan availability
The Custom HTTP tool itself is available on every plan. Workspace-level integration counts (which include Custom HTTP bindings + native integrations like Shopify) follow the per-plan integrations cap in billing/plans.Related
Tools
All tools your agent can use.
System prompt
Tell the agent when to call which tool.