FurniOpsDocs
API referenceAgents

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
GET/v1/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.

Authorization

apiKey
AuthorizationBearer <token>

An API key (fo_live_… / fo_test_…) as a bearer token

In: header

Header Parameters

FurniOps-Version?string

Dated API version; pinned per organisation on first use and overridable per request

Value in

  • "2026-10-01"
  • "2026-10-04"
FurniOps-Mode?string

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"
If-None-Match?string

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"    }  ]}