List the caller's agent tools
Every operation of this API the caller may call, as tools for an AI agent: name, input schema, risk class, how a write answers a preview (FurniOps-Dry-Run), how it is undone, and whether a person must do it or re-authenticate. Filtered by the caller's role, key scopes and organisation kind, as the API checks them; a key not made for an agent gets the reads only. Identity serves its own operations at the same path.
- Scopesnone
- Rate classread
/v1/agent/toolsEvery operation of this API the caller may call, as tools for an AI agent: name, input schema, risk class, how a write answers a preview (FurniOps-Dry-Run), how it is undone, and whether a person must do it or re-authenticate. Filtered by the caller's role, key scopes and organisation kind, as the API checks them; a key not made for an agent gets the reads only. Identity serves its own operations at the same path.
Authorization
apiKey An API key (fo_live_… / fo_test_…) as a bearer token
In: header
Header Parameters
Dated API version; pinned per organisation on first use and overridable per request
Value in
- "2026-10-01"
- "2026-10-04"
The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused
Value in
- "live"
- "test"
ETag of a cached representation; a match returns 304
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/v1/agent/tools"{ "object": "agent_tool_manifest", "service": "backend", "tools": [ { "name": "string", "title": "string", "description": "string", "input_schema": { "property1": null, "property2": null }, "operation_id": "string", "method": "GET", "path": "string", "permission": "string", "risk": "read", "preview": { "kind": "transactional", "reason": "string" }, "undo": { "kind": "inverse", "operation": "string", "reason": "string" }, "reauthentication": true, "requires_person": true, "acts_alone": false, "agent_asks": false, "idempotent": true, "if_match": "required" } ]}