The trigger.* 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.
Disabletrigger.disable
| Property | Value |
|---|---|
| Capability | trigger.write |
| Risk class | Write - autonomy L1 |
| Min. permission | Member |
| Availability | Admin only (CLI/HTTP; never advertised over MCP) |
| Idempotent | No |
| Egress | None - in-box (pure Postgres, no outbound call) |
Pause an active trigger. Sets status to PAUSED. Must affect exactly 1 row.
Call POST /v/trigger.disable with a JSON body; returns JSON (or { error, code }). Not advertised over MCP (admin-only); reachable via the CLI and HTTP doors.
Enabletrigger.enable
| Property | Value |
|---|---|
| Capability | trigger.write |
| Risk class | Write - autonomy L1 |
| Min. permission | Member |
| Availability | Admin only (CLI/HTTP; never advertised over MCP) |
| Idempotent | No |
| Egress | None - in-box (pure Postgres, no outbound call) |
Resume a paused trigger. Sets status to ACTIVE. For SCHEDULE/RECURRENCE triggers recomputes next_run_at from the cron (lenient: a legacy unparseable cron falls back to 1 hour - enable must not brick on an old row; upsert is the validation gate).
Call POST /v/trigger.enable with a JSON body; returns JSON (or { error, code }). Not advertised over MCP (admin-only); reachable via the CLI and HTTP doors.
Gettrigger.get
| Property | Value |
|---|---|
| Capability | trigger.read |
| Risk class | Read - autonomy L0 |
| Min. permission | Member |
| Availability | Admin only (CLI/HTTP; never advertised over MCP) |
| Idempotent | No |
| Egress | None - in-box (pure Postgres, no outbound call) |
| Render schema | Yes - drives an inline chat artefact and a GUI panel |
one trigger by id, plus the last 10 trigger_dispatch rows (recent fire history).
Call POST /v/trigger.get with a JSON body; returns JSON (or { error, code }). Not advertised over MCP (admin-only); reachable via the CLI and HTTP doors.
Listtrigger.list
| Property | Value |
|---|---|
| Capability | trigger.read |
| Risk class | Read - autonomy L0 |
| Min. permission | Member |
| Availability | On demand (MCP tier 2) |
| Idempotent | No |
| Egress | None - in-box (pure Postgres, no outbound call) |
| Render schema | Yes - drives an inline chat artefact and a GUI panel |
List triggers in the workspace. Optional filters: sourceKind, status. Supports limit (default
50) and offset (default 0). Returns { triggers: [...], count: N }.
Call POST /v/trigger.list with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool trigger.list.
Testtrigger.test
| Property | Value |
|---|---|
| Capability | trigger.read |
| Risk class | Read - autonomy L0 |
| Min. permission | Member |
| Availability | On demand (MCP tier 2) |
| Idempotent | No |
| Egress | None - in-box (pure Postgres, no outbound call) |
| Render schema | Yes - drives an inline chat artefact and a GUI panel |
Side-effect-free dry run. Evaluates the filter (predicate DSL: equals/not_equals/gt/lt/gte/lte/in/not_in/contains/exists/not_exists, ALL/ANY logic) against an optional sampleEvent. No writes, no audit events.
Call POST /v/trigger.test with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool trigger.test.
Upserttrigger.upsert
| Property | Value |
|---|---|
| Capability | trigger.write |
| Risk class | Write - autonomy L1 |
| Min. permission | Member |
| Availability | On demand (MCP tier 2) |
| Idempotent | No |
| Egress | None - in-box (pure Postgres, no outbound call) |
CREATE or UPDATE a trigger. If id is provided the existing row is updated (must exist, same
workspace). Otherwise a new row is inserted with a generated ID.
Call POST /v/trigger.upsert with a JSON body; returns JSON (or { error, code }). Also exposed as the MCP tool trigger.upsert.