changedInput schema / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "description": "action=\"list\": List the project's Timeline: automatic events captured on graph writes and task lifecycle actions, interleaved with one-line custom entries logged by agents and automations, newest first. Filters (AND-combined): verbs, action type, actor user/agent, capture source, status, component, node (matches the entry's subject or a linked node), and a time range. A custom entry's linked nodes resolve to compact references (id, type, title, status) — never raw uuids. Keyset-paginated, not offset-based: pass a previous page's `next_before` back as `before` to fetch the next (older) page.",
- "properties": {
- "action": {
- "const": "list",
- "type": "string"
- },
- "agent": {
- "description": "Filter to entries attributed to this agent name.",
- "type": "string"
- },
- "before": {
- "description": "Cursor from a previous page's `next_before` — fetch the next (older) page. Omit for the first (newest) page. Not offset-based: pass the value back unmodified.",
- "type": "string"
- },
- "component_id": {
- "description": "Limit to entries about a node under this component.",
- "type": "string"
- },
- "from": {
- "description": "ISO timestamp — only entries at or after this time.",
- "type": "string"
- },
- "limit": {
- "description": "Page size (default 50, max 100).",
- "exclusiveMinimum": 0,
- "maximum": 100,
- "type": "integer"
- },
- "node_id": {
- "description": "Limit to entries whose subject is this node, OR that link to it.",
- "type": "string"
- },
- "project_slug": {
- "description": "Project slug, e.g. \"acme-app\" — list(what=\"projects\") returns yours.",
- "minLength": 1,
- "type": "string"
- },
- "query": {
- "description": "Substring scan over the entry text and the subject node's title — not ranked search. For a broad relevance-ranked pull use `search` or `recall` instead.",
- "type": "string"
- },
- "source": {
- "description": "Filter to one capture surface, e.g. \"mcp\", \"cli\", \"web\".",
- "type": "string"
- },
- "status": {
- "description": "Filter to custom entries with this outcome. Has no effect on automatic events.",
- "enum": [
- "completed",
- "partial",
- "failed",
- "blocked"
- ],
- "type": "string"
- },
- "to": {
- "description": "ISO timestamp — only entries before this time.",
- "type": "string"
- },
- "type": {
- "description": "Filter to custom entries with this exact action type (e.g. \"operator.run\"). Has no effect on automatic events, which carry no action type.",
- "type": "string"
- },
- "user": {
- "description": "Filter to entries attributed to this user (uuid, not a shareable id).",
- "format": "uuid",
- "type": "string"
- },
- "verbs": {
- "description": "Filter to these event verbs. Omit for every verb, automatic and custom interleaved.",
- "items": {
- "enum": [
- "created",
- "updated",
- "status_changed",
- "superseded",
- "commented",
- "claimed",
- "released",
- "custom",
- "linked",
- "unlinked"
- ],
- "type": "string"
- },
- "type": "array"
- }
- },
- "required": [
- "action",
- "project_slug"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "action=\"log\": Append a one-line entry to the project's Timeline — for an agent or automation to journal a milestone, with links to the graph items holding the substance. `message` is a short, human-readable line: one thing that happened, never the reasoning behind it or the decision it produced — put those in a knowledge or task node and reference them with `link` instead. `type` is a free-form, caller-namespaced label so entries from different automations don't collide. The Timeline is append-only: a correction is a new entry, not an edit. This capability can be turned off for a project; when it is, the call succeeds but writes nothing, and the response says so.",
- "properties": {
- "action": {
- "const": "log",
- "type": "string"
- },
- "link": {
- "description": "Up to 20 nodes this entry is about — the graph items holding the substance.",
- "items": {
- "description": "Limit to entries about a node under this component.",
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "message": {
- "description": "REQUIRED — one short line describing what happened. Timeline entries are a journal, not a place for reasoning, decisions, or knowledge — write those as graph nodes instead and reference them with `link`.",
- "maxLength": 500,
- "minLength": 1,
- "type": "string"
- },
- "privacy_bypass": {
- "description": "true writes despite a privacy flag on a public project. Only meaningful after a flag; the user decides whether the content can be public.",
- "type": "boolean"
- },
- "privacy_false_positive": {
- "description": "With privacy_bypass: true reports the privacy flag as wrong.",
- "type": "boolean"
- },
- "privacy_judgement_id": {
- "description": "With privacy_bypass: the judgement_id the privacy flag returned.",
- "type": "string"
- },
- "privacy_note": {
- "description": "With privacy_bypass: an optional short reason, kept with the bypass.",
- "maxLength": 500,
- "type": "string"
- },
- "project_slug": {
- "description": "Project slug, e.g. \"acme-app\" — list(what=\"projects\") returns yours.",
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "description": "Outcome of the journaled action. Omit unless you have one to report.",
- "enum": [
- "completed",
- "partial",
- "failed",
- "blocked"
- ],
- "type": "string"
- },
- "type": {
- "description": "REQUIRED — caller-namespaced action type, e.g. \"operator.run\". Free-form; namespace it so entries from different automations don't collide.",
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "action",
- "project_slug",
- "type",
- "message"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "description": "action=\"list\": List the project's Timeline: automatic events captured on graph writes and task lifecycle actions, interleaved with one-line custom entries logged by agents and automations, newest first. Filters (AND-combined): verbs, action type, actor user/agent, capture source, status, component, node (matches the entry's subject or a linked node), and a time range. A custom entry's linked nodes resolve to compact references (id, type, title, status) — never raw uuids. Keyset-paginated, not offset-based: pass a previous page's `next_before` back as `before` to fetch the next (older) page.",
+ "properties": {
+ "action": {
+ "const": "list",
+ "type": "string"
+ },
+ "agent": {
+ "description": "Filter to entries attributed to this agent name.",
+ "type": "string"
+ },
+ "before": {
+ "description": "Cursor from a previous page's `next_before` — fetch the next (older) page. Omit for the first (newest) page. Not offset-based: pass the value back unmodified.",
+ "type": "string"
+ },
+ "component_id": {
+ "description": "Limit to entries about a node under this component.",
+ "type": "string"
+ },
+ "from": {
+ "description": "ISO timestamp — only entries at or after this time.",
+ "type": "string"
+ },
+ "limit": {
+ "description": "Page size (default 50, max 100).",
+ "exclusiveMinimum": 0,
+ "maximum": 100,
+ "type": "integer"
+ },
+ "node_id": {
+ "description": "Limit to entries whose subject is this node, OR that link to it.",
+ "type": "string"
+ },
+ "project_slug": {
+ "description": "Project slug, e.g. \"acme-app\" — list(what=\"projects\") returns yours.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "query": {
+ "description": "Substring scan over the entry text and the subject node's title — not ranked search. For a broad relevance-ranked pull use `search` or `recall` instead.",
+ "type": "string"
+ },
+ "source": {
+ "description": "Filter to one capture surface, e.g. \"mcp\", \"cli\", \"web\".",
+ "type": "string"
+ },
+ "status": {
+ "description": "Filter to custom entries with this outcome. Has no effect on automatic events.",
+ "enum": [
+ "completed",
+ "partial",
+ "failed",
+ "blocked"
+ ],
+ "type": "string"
+ },
+ "to": {
+ "description": "ISO timestamp — only entries before this time.",
+ "type": "string"
+ },
+ "type": {
+ "description": "Filter to custom entries with this exact action type (e.g. \"operator.run\"). Has no effect on automatic events, which carry no action type.",
+ "type": "string"
+ },
+ "user": {
+ "description": "Filter to entries attributed to this user (uuid, not a shareable id).",
+ "format": "uuid",
+ "type": "string"
+ },
+ "verbs": {
+ "description": "Filter to these event verbs. Omit for every verb, automatic and custom interleaved.",
+ "items": {
+ "enum": [
+ "created",
+ "updated",
+ "status_changed",
+ "superseded",
+ "commented",
+ "claimed",
+ "released",
+ "custom",
+ "linked",
+ "unlinked"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "action",
+ "project_slug"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "action=\"log\": Append a one-line entry to the project's Timeline — for an agent or automation to journal a milestone, with links to the graph items holding the substance. `message` is a short, human-readable line: one thing that happened, never the reasoning behind it or the decision it produced — put those in a knowledge or task node and reference them with `link` instead. `type` is a free-form, caller-namespaced label so entries from different automations don't collide. The Timeline is append-only: a correction is a new entry, not an edit. This capability can be turned off for a project; when it is, the call succeeds but writes nothing, and the response says so.",
+ "properties": {
+ "action": {
+ "const": "log",
+ "type": "string"
+ },
+ "link": {
+ "description": "Up to 20 nodes this entry is about — the graph items holding the substance.",
+ "items": {
+ "description": "Limit to entries about a node under this component.",
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "message": {
+ "description": "REQUIRED — one short line describing what happened. Timeline entries are a journal, not a place for reasoning, decisions, or knowledge — write those as graph nodes instead and reference them with `link`.",
+ "maxLength": 500,
+ "minLength": 1,
+ "type": "string"
+ },
+ "privacy_bypass": {
+ "description": "true writes despite a privacy flag. Only meaningful after a flag; the user decides whether the content can be written.",
+ "type": "boolean"
+ },
+ "privacy_false_positive": {
+ "description": "With privacy_bypass: true reports the privacy flag as wrong.",
+ "type": "boolean"
+ },
+ "privacy_judgement_id": {
+ "description": "With privacy_bypass: the judgement_id the privacy flag returned.",
+ "type": "string"
+ },
+ "privacy_note": {
+ "description": "With privacy_bypass: an optional short reason, kept with the bypass.",
+ "maxLength": 500,
+ "type": "string"
+ },
+ "project_slug": {
+ "description": "Project slug, e.g. \"acme-app\" — list(what=\"projects\") returns yours.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "description": "Outcome of the journaled action. Omit unless you have one to report.",
+ "enum": [
+ "completed",
+ "partial",
+ "failed",
+ "blocked"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "REQUIRED — caller-namespaced action type, e.g. \"operator.run\". Free-form; namespace it so entries from different automations don't collide.",
+ "maxLength": 100,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "action",
+ "project_slug",
+ "type",
+ "message"
+ ],
+ "type": "object"
+ }
+]