Guides
Give staff your own HTTP tools
Describe an endpoint of your API, name, method, URL, input schema, and every AI staff member you grant it to can call it, no MCP server required.
A staff member can already use MCP servers. If what you have is a plain HTTP API, you do not need to wrap it: register its endpoints as HTTP tools and Dhanu calls them directly, with the arguments the model supplies, inside the same approval and audit gates every other tool goes through.
1. Describe the tools
Settings → Plugins → Add → Custom connector, choose the HTTP tools kind, and paste a JSON array:
[
{
"name": "lookup_order",
"description": "Look an order up by its id and return its status and line items.",
"method": "GET",
"url": "https://api.acme.example/orders",
"inputSchema": {
"type": "object",
"properties": { "id": { "type": "string", "description": "The order id, e.g. ORD-1042" } },
"required": ["id"]
}
},
{
"name": "open_ticket",
"description": "Open a support ticket. Use when a customer reports a problem you cannot solve.",
"method": "POST",
"url": "https://api.acme.example/tickets",
"inputSchema": {
"type": "object",
"properties": { "subject": { "type": "string" }, "body": { "type": "string" } },
"required": ["subject", "body"]
}
}
]
The rules: up to 20 tools; names are 2–40 lowercase letters, digits or
underscores; URLs are https; inputSchema is a JSON schema of type object. The
description is what the model reads to decide when to call the tool, write it
for a colleague, not a compiler.
A GET tool sends the arguments as query parameters; a POST tool sends them as a
JSON body. If your API needs a token, choose Access token as the authentication
and Dhanu sends it as Authorization: Bearer … on every call, it is stored sealed
and never shown again.
2. Grant it to a staff member
The connector appears in the plugin list like any other. Open a staff member,
enable the plugin, and it can call lookup_order and open_ticket in its runs;
the tool calls show in the task, and every call is audited.
3. What the model sees
A successful call returns the response body (up to 20 000 characters) with the status; a failure, non-2xx, timeout after 15 seconds, or a URL Dhanu refuses to call, comes back as an error the model can read and recover from, never as a crash. Dhanu refuses loopback, private-range and cloud-metadata addresses both when you register a tool and every time it is called, so a tool can never be pointed at something inside our network.
Why not MCP?
Use MCP when the server already exists or you want to ship it to other products. HTTP tools are for the API you already run: no new process, nothing to host, and the definition lives in the workspace next to the staff that use it.