opbox

The regulator.* family (5 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.

Addregulator.comment.add

PropertyValue
Capabilityform.write
Risk classWrite - autonomy L1
Min. permissionMember
AvailabilityCore - always on (MCP tier 1)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)

([2026] CC-OPBOX 29). Record a regulator-raised query/comment on a submission (status defaults OPEN). The named writer. { submissionId, authority, body, commentType? }.

Call POST /v/regulator.comment.add with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool regulator.comment.add.

Deleteregulator.comment.delete

PropertyValue
Capabilityform.write
Risk classWrite - autonomy L1
Min. permissionMember
AvailabilityCore - always on (MCP tier 1)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)

([2026] VJS-DEC 17). Remove a regulator comment (the frontend DELETE path). Workspace-scoped, fail-closed on a missing row. { id }.

Call POST /v/regulator.comment.delete with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool regulator.comment.delete.

Listregulator.comment.list

PropertyValue
Capabilityform.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

([2026] CC-OPBOX 29). The regulator correspondence THREAD for a submission (the rows regulator.comment.add/respond write to the new regulator_comment store). Ordered oldest-first (the thread). { submissionId }. RLS-scoped. The one consolidated read for the store.

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

Respondregulator.comment.respond

PropertyValue
Capabilityform.write
Risk classWrite - autonomy L1
Min. permissionMember
AvailabilityCore - always on (MCP tier 1)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)

([2026] CC-OPBOX 29). Record the firm’s reply to a regulator comment (linked via parent_comment_id), and advance the PARENT (responded_at + status=RESPONDED). The reply inherits the parent’s submission + authority. { parentCommentId, body, author? }.

Call POST /v/regulator.comment.respond with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool regulator.comment.respond.

Updateregulator.comment.update

PropertyValue
Capabilityform.write
Risk classWrite - autonomy L1
Min. permissionMember
AvailabilityCore - always on (MCP tier 1)
IdempotentNo
EgressNone - in-box (pure Postgres, no outbound call)

([2026] VJS-DEC 17). The frontend PATCH path: edit status, priority, category, filing reference, inline response, due/closed on a regulator comment IN PLACE (the frontend treats a comment as one row with an inline response, distinct from the threaded respond). Only provided fields change (COALESCE keeps the rest). { id, status?, priority?, category?, filingReference?, responseText?, respondedBy?, dueDate?, closed? }.

Call POST /v/regulator.comment.update with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool regulator.comment.update.