Documentation menu

API reference

12 operations in agent-platform. Raw spec: openapi.json.

GET/api/v1/agent-proposals

GET /api/agent-proposals — cursor-paged listing, newest first.

Parameters

NameInTypeRequiredDescription
statusquery—NoFilter by lifecycle state.
cursorquery—NoOpaque keyset cursor from a previous page's `next_cursor`.
limitquery—NoPage size, clamped to [1, 200].

Responses

StatusDescription
200

Security: bearer

POST/api/v1/agent-proposals

POST /api/agent-proposals — file a proposal (IF8). Accepts human-JWT callers for administrative simulation, but the API-key/machine path is the intended caller: the machine principal's key id becomes the agent_ref when none is supplied. The dial position is captured from the capability's grant row at creation time.

Request body

CreateProposalRequest

Responses

StatusDescription
200
403capability not granted (deny-by-default)
422validation failed

Security: bearer

GET/api/v1/agent-proposals/{id}

GET /api/agent-proposals/{id}.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
404

Security: bearer

POST/api/v1/agent-proposals/{id}/approve

POST /api/agent-proposals/{id}/approve — decide FOR. Approved ticket update proposals apply immediately through the IF1 instant-first path in the SAME transaction (idempotency-keyed, version-gated, write-trail row — stays undoable); other entity/op combinations stay approved- pending until the write-execution lanes widen application.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

DecideProposalRequest

Responses

StatusDescription
200
403not a permitted approver
404not in scope
409proposal already decided

Security: bearer

POST/api/v1/agent-proposals/{id}/decline

POST /api/agent-proposals/{id}/decline — decide AGAINST. A declined proposal produces NO write at all; the row is the audit record.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

DecideProposalRequest

Responses

StatusDescription
200
403not a permitted approver
404not in scope
409proposal already decided

Security: bearer

POST/api/v1/agent-proposals/{id}/withdraw

POST /api/agent-proposals/{id}/withdraw — the proposing agent (or an admin) cancels its own open proposal. No write ever happened.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
403only the proposing agent or an admin may withdraw
404not in scope
409proposal already decided

Security: bearer

GET/api/v1/agent-skills

GET /api/v1/agent-skills — latest version per slug (or one slug's history).

Parameters

NameInTypeRequiredDescription
slugquery—NoWhen present, every version of this slug (newest first) instead of the latest version of each slug.

Responses

StatusDescription
200

Security: bearer

POST/api/v1/agent-skills

POST /api/v1/agent-skills — publish a NEW version of a skill.

Request body

PublishSkillRequest

Responses

StatusDescription
200
403owner/admin surface
422invalid slug or manifest

Security: bearer

GET/api/v1/agent-skills/{id}

GET /api/v1/agent-skills/{id} — one immutable version.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200
404

Security: bearer

GET/api/v1/mcp/capabilities

GET /api/v1/mcp/capabilities — every granted capability of the org.

Responses

StatusDescription
200

Security: bearer

PUT/api/v1/mcp/capabilities

PUT /api/v1/mcp/capabilities — grant or re-dial one capability.

Request body

PutCapabilityRequest

Responses

StatusDescription
200
403owner/admin surface
422invalid capability or dial position

Security: bearer

DELETE/api/v1/mcp/capabilities/{capability}

DELETE /api/v1/mcp/capabilities/{capability} — revoke (deny again).

Parameters

NameInTypeRequiredDescription
capabilitypathstringYes

Responses

StatusDescription
204

Security: bearer