fact
Records an entity's scalar attribute, state, or preference as a subject, key, and value slot without LLM extraction; newer writes supersede prior values while preserving history.
Instructions
Record a scalar fact — an attribute, state, or preference — about an entity as a (subject, stateKey, value) slot, bypassing LLM extraction. The fact-shaped counterpart to relate: relate records edges between entities, fact records a single entity's slots (e.g. state.task.status=pending). A later write to the same stateKey supersedes the prior value (kept as history). Read them back via get(entities/{uid}) for the current slots, or get(facts/{uid}) for one.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Scope to write into — pick by who should see it. Defaults to personal (private to the user, syncs to their devices). Use "project" for facts tied to the current repo/codebase (shared with anyone who has repo access). Use "team" for the shared team brain (requires admitted membership, else E_PERMISSION). | |
| value | Yes | The scalar value the slot holds, e.g. "pending", "Steven". | |
| source | No | Provenance label for the appended event, e.g. "cli:fact". Optional; defaults to "mcp:fact". | |
| subject | Yes | Subject entity the fact is about: entities/{uid}, a bare ULID, the literal "self", or a human display name (resolved case-insensitively, like maz get). | |
| stateKey | Yes | Hierarchical slot address: lowercase, dot-separated, e.g. state.task.status, preference.coffee.milk. The first segment is the category (event|state|relationship|preference|plan|absence|timeless). | |
| eventStart | No | When the fact became true in the world (RFC 3339 UTC). Optional; defaults to now. | |
| sourcePriority | No | Recall-lane priority, 0..1. Optional; defaults to 1.0. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | AIP resource name of the asserted Fact; pass to get(facts/{uid}). | |
| status | Yes | Always "asserted" on success. |