How tools work
Names
A tool is named for the REST call it makes: the HTTP method first, then the path with the leading
/api dropped, lowercased, a {param} segment written by_<param>, and separators as _.
| REST call | Tool |
|---|---|
GET /api/audit-logs/{id} |
get_audit_logs_by_id |
DELETE /api/orgs/{id} |
delete_orgs_by_id |
GET /webhooks/health |
get_webhooks_health |
The method leads, so a read and a write on one path never share a name. A name depends only on the method and path, so it does not change when the spec is reordered.
Arguments
- Path and query parameters are top-level arguments, named as in the REST reference. Numbers and booleans are converted, so a client may send them as strings.
- A request body travels in one argument,
body, a JSON object. The tool's description spells out its fields. The API validates it and answers with what was wrong if a field is. - There are no header arguments. The person's token is attached to the call for you.
Results
- A call returns one text item holding the API's JSON response, pretty-printed.
- A response with no body returns one line:
METHOD /path succeeded. - A failure returns
isError: truewith the API's message as text — a403when the signed-in person holds no grant for the call, a400naming the field that was wrong.
Descriptions
Each tool's description begins with the REST call it makes, then the endpoint's own documentation. A tool that changes data ends with a note that the person confirms it first. Open What the model is shown at the foot of any tool page to see the description and input schema verbatim.
Annotations
Clients use annotations to decide which tools to ask about.
| Tool | readOnlyHint |
destructiveHint |
idempotentHint |
openWorldHint |
|---|---|---|---|---|
Read (GET) |
true |
— | — | false |
Change (POST, PATCH) |
false |
true |
false |
false |
Change (PUT, DELETE) |
false |
true |
true |
false |
They are hints. The confirmation behind every change is enforced by the server, not left to how a client reads them.