intent
Agent Intents: announce what you are working on in a workspace so peers see a collision before it happens. allocate a slot when work starts (content-free, and GET-OR-CREATE — it can hand back a slot you already hold), fill it once you know what to say (fill is also the heartbeat; there is no renewal verb), browse every live intent (topics only), expand for full detail including message, release when done. Call action='describe' for the full reference. Destructive: release.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | fill only: one-line label, max 256 characters. No newlines or tabs. This is what browse shows. | |
| action | Yes | Operation. Use 'describe' for full action reference. | |
| cursor | No | browse only: opaque cursor from a previous response. Omit for the first page. | |
| intent | No | What KIND of work this is — closed vocabulary, server-validated. Optional on allocate and fill. | |
| message | No | fill only: long-form detail, max 8192 characters. Absent from browse rows — read it with expand. | |
| node_id | No | allocate only: scope the declaration to one node. Omit for a workspace-wide intent. Part of the slot key. | |
| version | No | fill only, REQUIRED: the version you last read for this slot. Compare-and-set — a stale or omitted version is refused with 409. | |
| intent_id | No | Intent ID from allocate, or from a browse/expand row. Pass it back EXACTLY as received — do not reformat it. | |
| intent_ids | No | expand only: one or more intent IDs. Accepts an array, a JSON array string, or a comma-separated string. Max 250. | |
| workspace_id | No | Workspace ID (19-digit numeric). Required for every action except describe. Intents are workspace-only — there is no share variant. |