opbox

The form-template.* family (6 verbs). Every verb enters through the one front door: it is capability-checked, permission-checked, scope-checked and audited before it runs (see Security & permissions). Each entry below lists its capability, risk class (which fixes the minimum autonomy level), the minimum caller permission, its availability tier, whether it is idempotent, and any outbound egress.

form-template.create

PropertyValue
Capabilityform-template.author
Risk classSensitive - autonomy L2
Min. permissionAdmin
AvailabilityOn demand (MCP tier 2)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)

author a new DRAFT form template. { key, title, description?, schema }.

Call POST /v/form-template.create with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool form-template.create.

form-template.edit

PropertyValue
Capabilityform-template.author
Risk classSensitive - autonomy L2
Min. permissionAdmin
AvailabilityOn demand (MCP tier 2)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)

re-draft a DRAFT template’s schema/title/description. { id, title?, description?, schema? }. Only DRAFT templates are editable (a published version is immutable, R11 - mirrors board.edit).

Call POST /v/form-template.edit with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool form-template.edit.

form-template.get

PropertyValue
Capabilityform-template.read
Risk classRead - autonomy L0
Min. permissionMember
AvailabilityCore - always on (MCP tier 1)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)
Render schemaYes - drives an inline chat artefact and a GUI panel

one template. { id }.

Call POST /v/form-template.get with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool form-template.get.

form-template.list

PropertyValue
Capabilityform-template.read
Risk classRead - autonomy L0
Min. permissionMember
AvailabilityCore - always on (MCP tier 1)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)
Render schemaYes - drives an inline chat artefact and a GUI panel

list templates (optionally filter by status). { status? }.

Call POST /v/form-template.list with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool form-template.list.

form-template.publish

PropertyValue
Capabilityform-template.author
Risk classDestructive - autonomy L3
Min. permissionAdmin
AvailabilityOn demand (MCP tier 2)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)

validate the DRAFT schema, forward-mint an immutable FORM Version, DRAFT->ACTIVE, point current_version at the minted version. { id, changelog? }. R11 snapshot-not-live.

Call POST /v/form-template.publish with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool form-template.publish.

form-template.validate

PropertyValue
Capabilityform-template.author
Risk classRead - autonomy L0
Min. permissionAdmin
AvailabilityOn demand (MCP tier 2)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)
Render schemaYes - drives an inline chat artefact and a GUI panel

run validate_form_schema without persisting. { id } or { schema }.

Call POST /v/form-template.validate with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool form-template.validate.