commitments.create
LiveExplicitly create a commitment.
Description
Write routes through the action engine for ledger writes per FR55. Auto-extracted commitments from consolidation Phase 2 use the same table; the surface is unified. Per ADR-0021 §read-API Family C.
Input schema
| Field | Type | Required | Description |
|---|---|---|---|
counterparty_id | string | no | Optional — commitments not tied to a counterparty are valid (e.g., personal task tracking). |
subject | string | yes | Plain-language commitment subject. |
due_at | string (ISO-8601) | no | Target completion time. |
source_episode_id | string | no | Provenance link to an episode. |
notes | string | no | Free-form notes. |
Output shape
typescript
{ commitment_id: string; ok: true }Example call
JSON-RPC tools/call request body (omit the JSON-RPC envelope when using an SDK; the SDK adds it for you):
jsontools/call params
{
"name": "commitments.create",
"arguments": {
"counterparty_id": "entity_01HXMARCUS",
"subject": "Send Marcus the timeline doc",
"due_at": "2026-06-13T17:00:00Z"
}
}Example response
Tool results are always wrapped as content[0].text with a stringified JSON body. The shape below is what you get back from JSON.parse(result.content[0].text):
jsonparsed result body
{ "commitment_id": "cmt_01H...", "ok": true }Errors this tool can return
| Code | Meaning |
|---|---|
invalid_arguments | Tool input failed Zod validation. |
unauthorized | Missing or invalid bearer token. |
quota_exceeded | Per-minute, daily call, or daily inference budget exceeded. |
See the full error catalog for resolution steps on each code, plus the standard transport-layer responses (401, 429).