pmx-canvas 0.7.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/extensions/pmx-canvas/THIRD_PARTY_LICENSES.txt +331 -0
- package/.github/extensions/pmx-canvas/extension.mjs +25 -172
- package/.github/extensions/pmx-canvas/mcp-bootstrap.ts +198 -0
- package/.github/extensions/pmx-canvas/runtime.d.mts +41 -0
- package/.github/extensions/pmx-canvas/runtime.json +3 -0
- package/.github/extensions/pmx-canvas/runtime.mjs +194 -0
- package/.github/extensions/pmx-canvas/start-mcp.mjs +51 -0
- package/.github/extensions/pmx-canvas/tools.json +2560 -0
- package/CHANGELOG.md +47 -0
- package/Readme.md +21 -7
- package/dist/canvas/fonts/OFL.txt +93 -0
- package/dist/canvas/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
- package/dist/canvas/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
- package/dist/canvas/fonts/ibm-plex-mono-latin-ext-400-normal.woff2 +0 -0
- package/dist/canvas/fonts/ibm-plex-mono-latin-ext-500-normal.woff2 +0 -0
- package/dist/canvas/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
- package/dist/canvas/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
- package/dist/canvas/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
- package/dist/canvas/fonts/ibm-plex-sans-latin-ext-400-normal.woff2 +0 -0
- package/dist/canvas/fonts/ibm-plex-sans-latin-ext-500-normal.woff2 +0 -0
- package/dist/canvas/fonts/ibm-plex-sans-latin-ext-600-normal.woff2 +0 -0
- package/dist/canvas/global.css +723 -672
- package/dist/canvas/index.js +90 -88
- package/dist/canvas/mcp-app.html +7878 -0
- package/dist/canvas/mermaid-entry.js +1 -1
- package/dist/canvas/surface-theme.css +151 -46
- package/dist/json-render/index.css +1 -1
- package/dist/types/cli/commands/record.d.ts +1 -1
- package/dist/types/client/canvas/NodeContextMark.d.ts +24 -0
- package/dist/types/client/canvas/SessionReceipt.d.ts +3 -1
- package/dist/types/client/icons.d.ts +1 -2
- package/dist/types/client/mcp-app/index.d.ts +1 -0
- package/dist/types/client/nodes/ax-node-actions.d.ts +2 -2
- package/dist/types/client/nodes/markdown-sanitize.d.ts +2 -0
- package/dist/types/client/nodes/use-workbench-asset.d.ts +2 -0
- package/dist/types/client/state/attention-store.d.ts +0 -5
- package/dist/types/client/state/context-status-store.d.ts +53 -0
- package/dist/types/client/state/intent-bridge.d.ts +3 -0
- package/dist/types/client/state/near-pin-store.d.ts +16 -0
- package/dist/types/client/state/presence-store.d.ts +5 -0
- package/dist/types/client/state/session-store.d.ts +33 -3
- package/dist/types/client/state/workbench-transport.d.ts +16 -0
- package/dist/types/client/theme/tokens.d.ts +1 -3
- package/dist/types/client/types.d.ts +9 -0
- package/dist/types/json-render/server.d.ts +1 -1
- package/dist/types/mcp/app-server.d.ts +3 -0
- package/dist/types/mcp/canvas-access.d.ts +1 -1
- package/dist/types/mcp/canvas-app.d.ts +4 -0
- package/dist/types/mcp/workbench-app.d.ts +4 -0
- package/dist/types/server/agent-presence.d.ts +1 -1
- package/dist/types/server/ax-state.d.ts +1 -1
- package/dist/types/server/canvas-db.d.ts +8 -0
- package/dist/types/server/canvas-geometry.d.ts +25 -0
- package/dist/types/server/canvas-operations.d.ts +1 -11
- package/dist/types/server/canvas-state.d.ts +25 -3
- package/dist/types/server/context-brief.d.ts +8 -1
- package/dist/types/server/context-reads.d.ts +30 -7
- package/dist/types/server/index.d.ts +6 -1
- package/dist/types/server/mcp-app-runtime.d.ts +1 -0
- package/dist/types/server/operations/http.d.ts +2 -0
- package/dist/types/server/operations/invoker.d.ts +4 -2
- package/dist/types/server/operations/ops/nodes.d.ts +0 -6
- package/dist/types/server/server.d.ts +1 -0
- package/dist/types/server/spatial-analysis.d.ts +2 -0
- package/dist/types/shared/agent-context.d.ts +22 -0
- package/dist/types/shared/agent-presence.d.ts +3 -10
- package/dist/types/shared/canvas-app.d.ts +54 -0
- package/dist/types/shared/themes.d.ts +1 -1
- package/docs/RELEASE.md +7 -3
- package/docs/agent-plugin.md +123 -0
- package/docs/ax-state-contract.md +40 -0
- package/docs/cli.md +7 -2
- package/docs/design/AgentContext.dc.html +186 -0
- package/docs/design/Before.dc.html +208 -0
- package/docs/design/BoardPins.dc.html +151 -0
- package/docs/design/Chrome.dc.html +208 -0
- package/docs/design/Context.dc.html +239 -0
- package/docs/design/Flows.dc.html +181 -0
- package/docs/design/Home.dc.html +209 -0
- package/docs/design/HomeGraph.dc.html +211 -0
- package/docs/design/HomeMap.dc.html +117 -0
- package/docs/design/HomeTeam.dc.html +176 -0
- package/docs/design/Light.dc.html +28 -0
- package/docs/design/Main.dc.html +280 -0
- package/docs/design/NearPin.dc.html +260 -0
- package/docs/design/Pane600.dc.html +120 -0
- package/docs/design/Relations.dc.html +297 -0
- package/docs/design/Themes.dc.html +121 -0
- package/docs/design/TokenSystem.dc.html +136 -0
- package/docs/design/Tokens.dc.html +163 -0
- package/docs/design/Types1.dc.html +177 -0
- package/docs/design/Types2.dc.html +226 -0
- package/docs/design/Types3.dc.html +195 -0
- package/docs/design/Uses.dc.html +152 -0
- package/docs/design/Vision.dc.html +116 -0
- package/docs/design/Zoom.dc.html +82 -0
- package/docs/design/canvas.json +274 -0
- package/docs/design.md +214 -0
- package/docs/environment.md +1 -1
- package/docs/http-api.md +80 -15
- package/docs/mcp.md +198 -3
- package/docs/node-types.md +34 -10
- package/docs/plans/plan-009-tech-debt-backlog.md +1 -1
- package/docs/plans/plan-015-design-foundation-wave-0.md +177 -0
- package/docs/plans/plan-016-context-made-visible-wave-1.md +148 -0
- package/docs/product-vision-2026-09.md +47 -7
- package/docs/screenshot.png +0 -0
- package/docs/sdk.md +1 -0
- package/package.json +10 -4
- package/plugins/pmx-canvas/LICENSE +21 -0
- package/plugins/pmx-canvas/THIRD_PARTY_LICENSES.txt +331 -0
- package/plugins/pmx-canvas/assets/preview.png +0 -0
- package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/extension.mjs +930 -0
- package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.json +3 -0
- package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.mjs +194 -0
- package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/steering-delivery.mjs +79 -0
- package/plugins/pmx-canvas/mcp.json +12 -0
- package/plugins/pmx-canvas/plugin.json +24 -0
- package/plugins/pmx-canvas/runtime.json +3 -0
- package/plugins/pmx-canvas/runtime.mjs +194 -0
- package/plugins/pmx-canvas/start-mcp.mjs +51 -0
- package/plugins/pmx-canvas/tools.json +2560 -0
- package/skills/pmx-canvas/SKILL.md +10 -7
- package/skills/pmx-canvas/references/full-reference.md +11 -7
- package/skills/pmx-canvas/references/github-copilot-app-adapter.md +20 -8
- package/skills/pmx-canvas/references/installing-pmx-canvas.md +6 -6
- package/skills/pmx-canvas-testing/SKILL.md +5 -4
- package/src/cli/commands/copilot.ts +5 -0
- package/src/cli/commands/view.ts +1 -1
- package/src/cli/index.ts +8 -3
- package/src/client/App.tsx +6 -1
- package/src/client/canvas/AgentPresenceLayer.tsx +3 -3
- package/src/client/canvas/AnnotationLayer.tsx +1 -1
- package/src/client/canvas/CanvasNode.tsx +32 -49
- package/src/client/canvas/CanvasViewport.tsx +0 -2
- package/src/client/canvas/CommandPalette.tsx +3 -2
- package/src/client/canvas/ContextMenu.tsx +11 -0
- package/src/client/canvas/EdgeLayer.tsx +1 -1
- package/src/client/canvas/ExportDialog.tsx +33 -6
- package/src/client/canvas/IntentLayer.tsx +2 -2
- package/src/client/canvas/Minimap.tsx +12 -7
- package/src/client/canvas/NodeContextMark.tsx +156 -0
- package/src/client/canvas/SessionPanel.tsx +4 -7
- package/src/client/canvas/SessionReceipt.tsx +114 -17
- package/src/client/canvas/ShortcutOverlay.tsx +6 -1
- package/src/client/canvas/SnapshotPanel.tsx +11 -2
- package/src/client/canvas/ToolRail.tsx +12 -9
- package/src/client/canvas/TopBar.tsx +16 -11
- package/src/client/icons.tsx +2 -12
- package/src/client/mcp-app/index.tsx +137 -0
- package/src/client/mcp-app/style.css +10 -0
- package/src/client/nodes/AttachmentNode.tsx +8 -1
- package/src/client/nodes/AxStepControls.tsx +1 -1
- package/src/client/nodes/ContextNode.tsx +9 -9
- package/src/client/nodes/ExtAppFrame.tsx +13 -8
- package/src/client/nodes/FileNode.tsx +8 -5
- package/src/client/nodes/ImageNode.tsx +4 -2
- package/src/client/nodes/InlineMarkdownEditor.tsx +2 -1
- package/src/client/nodes/LedgerNode.tsx +2 -2
- package/src/client/nodes/MarkdownNode.tsx +44 -9
- package/src/client/nodes/McpAppNode.tsx +6 -4
- package/src/client/nodes/PromptNode.tsx +5 -17
- package/src/client/nodes/ResponseNode.tsx +3 -15
- package/src/client/nodes/StatusNode.tsx +2 -2
- package/src/client/nodes/StatusSummary.tsx +3 -1
- package/src/client/nodes/TraceNode.tsx +6 -4
- package/src/client/nodes/WebpageNode.tsx +1 -1
- package/src/client/nodes/ax-node-actions.ts +2 -2
- package/src/client/nodes/iframe-document-url.ts +3 -2
- package/src/client/nodes/markdown-sanitize.ts +10 -0
- package/src/client/nodes/surface-url.ts +10 -0
- package/src/client/nodes/use-surface-frame.ts +3 -1
- package/src/client/nodes/use-workbench-asset.ts +26 -0
- package/src/client/state/attention-bridge.ts +0 -8
- package/src/client/state/attention-store.ts +0 -17
- package/src/client/state/canvas-store.ts +4 -2
- package/src/client/state/context-status-store.ts +66 -0
- package/src/client/state/human-store.ts +2 -0
- package/src/client/state/iframe-mode.ts +5 -0
- package/src/client/state/intent-bridge.ts +10 -4
- package/src/client/state/near-pin-store.ts +53 -0
- package/src/client/state/presence-store.ts +5 -10
- package/src/client/state/session-store.ts +106 -9
- package/src/client/state/sse-bridge.ts +26 -7
- package/src/client/state/theme-override.ts +1 -1
- package/src/client/state/workbench-transport.ts +36 -0
- package/src/client/theme/global.css +723 -672
- package/src/client/theme/surface-theme.css +151 -46
- package/src/client/theme/tokens.ts +7 -11
- package/src/client/types.ts +10 -0
- package/src/json-render/server.ts +71 -14
- package/src/mcp/app-server.ts +64 -0
- package/src/mcp/canvas-access.ts +14 -11
- package/src/mcp/canvas-app.ts +318 -0
- package/src/mcp/server.ts +1 -1
- package/src/mcp/workbench-app.ts +211 -0
- package/src/server/agent-presence.ts +45 -6
- package/src/server/ax-context.ts +1 -1
- package/src/server/ax-state.ts +1 -1
- package/src/server/board-export.ts +5 -2
- package/src/server/canvas-db.ts +46 -12
- package/src/server/canvas-geometry.ts +64 -0
- package/src/server/canvas-operations.ts +6 -24
- package/src/server/canvas-state.ts +105 -15
- package/src/server/canvas-validation.ts +19 -4
- package/src/server/context-brief.ts +39 -2
- package/src/server/context-reads.ts +86 -15
- package/src/server/demo-state.json +31 -31
- package/src/server/html-surface.ts +4 -5
- package/src/server/index.ts +19 -3
- package/src/server/mcp-app-runtime.ts +11 -0
- package/src/server/operations/composites.ts +4 -3
- package/src/server/operations/http.ts +4 -4
- package/src/server/operations/invoker.ts +13 -4
- package/src/server/operations/ops/ax-read.ts +1 -1
- package/src/server/operations/ops/ax-timeline.ts +37 -0
- package/src/server/operations/ops/boards.ts +1 -1
- package/src/server/operations/ops/canvas-wire.ts +3 -6
- package/src/server/operations/ops/intent.ts +31 -2
- package/src/server/operations/ops/json-render.ts +1 -1
- package/src/server/operations/ops/nodes.ts +8 -76
- package/src/server/operations/ops/query.ts +8 -2
- package/src/server/operations/ops/snapshots.ts +4 -1
- package/src/server/operations/ops/viewport.ts +29 -5
- package/src/server/operations/registry.ts +38 -4
- package/src/server/scope-fence.ts +55 -10
- package/src/server/server.ts +83 -5
- package/src/server/spatial-analysis.ts +2 -2
- package/src/server/workboard.ts +6 -1
- package/src/{server → shared}/agent-context.ts +2 -2
- package/src/shared/agent-presence.ts +3 -15
- package/src/shared/canvas-app.ts +62 -0
- package/src/shared/themes.ts +5 -5
- package/src/client/canvas/FocusFieldLayer.tsx +0 -116
- package/src/client/canvas/kind-colors.ts +0 -23
|
@@ -0,0 +1,2560 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tools": [
|
|
3
|
+
{
|
|
4
|
+
"name": "canvas_pin_nodes",
|
|
5
|
+
"description": "Pin nodes to include them in the agent context. Pinned nodes appear in the canvas://pinned-context resource. The human can also pin nodes by clicking in the browser.",
|
|
6
|
+
"inputSchema": {
|
|
7
|
+
"type": "object",
|
|
8
|
+
"properties": {
|
|
9
|
+
"nodeIds": {
|
|
10
|
+
"type": "array",
|
|
11
|
+
"items": {
|
|
12
|
+
"type": "string"
|
|
13
|
+
},
|
|
14
|
+
"description": "Array of node IDs to pin"
|
|
15
|
+
},
|
|
16
|
+
"mode": {
|
|
17
|
+
"description": "set: replace all pins, add: add to existing pins, remove: unpin these nodes (default: set)",
|
|
18
|
+
"type": "string",
|
|
19
|
+
"enum": [
|
|
20
|
+
"set",
|
|
21
|
+
"add",
|
|
22
|
+
"remove"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"reason": {
|
|
26
|
+
"description": "Why these nodes matter; kept with newly pinned nodes and shown to the human on hover.",
|
|
27
|
+
"type": "string"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"required": [
|
|
31
|
+
"nodeIds"
|
|
32
|
+
],
|
|
33
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
34
|
+
"additionalProperties": {}
|
|
35
|
+
},
|
|
36
|
+
"execution": {
|
|
37
|
+
"taskSupport": "forbidden"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "canvas_invoke_command",
|
|
42
|
+
"description": "Invoke a registry-gated PMX command intent (pmx.plan | pmx.execute | pmx.promote-context | pmx.summarize | pmx.review). Records a timeline event a host/agent can observe — NOT arbitrary execution; unknown names are rejected.",
|
|
43
|
+
"inputSchema": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"properties": {
|
|
46
|
+
"name": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"description": "A command name from the PMX command registry."
|
|
49
|
+
},
|
|
50
|
+
"args": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"propertyNames": {
|
|
53
|
+
"type": "string"
|
|
54
|
+
},
|
|
55
|
+
"additionalProperties": {}
|
|
56
|
+
},
|
|
57
|
+
"source": {
|
|
58
|
+
"description": "Optional host/source label. Defaults to mcp.",
|
|
59
|
+
"type": "string",
|
|
60
|
+
"enum": [
|
|
61
|
+
"agent",
|
|
62
|
+
"amp",
|
|
63
|
+
"api",
|
|
64
|
+
"browser",
|
|
65
|
+
"cli",
|
|
66
|
+
"codex",
|
|
67
|
+
"copilot",
|
|
68
|
+
"mcp",
|
|
69
|
+
"sdk",
|
|
70
|
+
"system"
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"required": [
|
|
75
|
+
"name"
|
|
76
|
+
],
|
|
77
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
78
|
+
"additionalProperties": {}
|
|
79
|
+
},
|
|
80
|
+
"execution": {
|
|
81
|
+
"taskSupport": "forbidden"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "canvas_batch",
|
|
86
|
+
"description": "Run a non-atomic batch of canvas operations with optional assigned references. Use assign to name a result, then reference it later as \"$name\" for the created node id or \"$name.id\" for a specific result field. On failure, earlier successful operations remain applied and the response includes ok:false, failedIndex, error, results, and refs. Supports node.add, node.update, node.remove, graph.add, edge.add, edge.remove, group.create, group.add, group.remove, pin.set/add/remove, snapshot.save, and arrange.",
|
|
87
|
+
"inputSchema": {
|
|
88
|
+
"type": "object",
|
|
89
|
+
"properties": {
|
|
90
|
+
"operations": {
|
|
91
|
+
"type": "array",
|
|
92
|
+
"items": {
|
|
93
|
+
"type": "object",
|
|
94
|
+
"properties": {
|
|
95
|
+
"op": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"description": "Operation name, e.g. \"node.add\" or \"edge.add\""
|
|
98
|
+
},
|
|
99
|
+
"assign": {
|
|
100
|
+
"description": "Optional reference name for later operations",
|
|
101
|
+
"type": "string"
|
|
102
|
+
},
|
|
103
|
+
"args": {
|
|
104
|
+
"description": "Operation arguments",
|
|
105
|
+
"type": "object",
|
|
106
|
+
"propertyNames": {
|
|
107
|
+
"type": "string"
|
|
108
|
+
},
|
|
109
|
+
"additionalProperties": {}
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"required": [
|
|
113
|
+
"op"
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
"description": "Ordered array of batch operations"
|
|
117
|
+
},
|
|
118
|
+
"full": {
|
|
119
|
+
"description": "Return full batch operation results. Default false compacts node-like payloads.",
|
|
120
|
+
"type": "boolean"
|
|
121
|
+
},
|
|
122
|
+
"verbose": {
|
|
123
|
+
"description": "Alias for full:true.",
|
|
124
|
+
"type": "boolean"
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"required": [
|
|
128
|
+
"operations"
|
|
129
|
+
],
|
|
130
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
131
|
+
"additionalProperties": {}
|
|
132
|
+
},
|
|
133
|
+
"execution": {
|
|
134
|
+
"taskSupport": "forbidden"
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"name": "canvas_import",
|
|
139
|
+
"description": "Agent-assisted document ingestion. List jobs, read attachment metadata/download bytes, submit bounded Markdown extraction, or report unavailable. Request, commit, and cancel are human-only HTTP actions.",
|
|
140
|
+
"inputSchema": {
|
|
141
|
+
"type": "object",
|
|
142
|
+
"properties": {
|
|
143
|
+
"action": {
|
|
144
|
+
"type": "string",
|
|
145
|
+
"enum": [
|
|
146
|
+
"list",
|
|
147
|
+
"read",
|
|
148
|
+
"submit",
|
|
149
|
+
"unavailable"
|
|
150
|
+
],
|
|
151
|
+
"description": "Operation to perform: list | read | submit | unavailable."
|
|
152
|
+
},
|
|
153
|
+
"boardId": {
|
|
154
|
+
"type": "string"
|
|
155
|
+
},
|
|
156
|
+
"id": {
|
|
157
|
+
"type": "string",
|
|
158
|
+
"minLength": 1
|
|
159
|
+
},
|
|
160
|
+
"inline": {
|
|
161
|
+
"type": "boolean"
|
|
162
|
+
},
|
|
163
|
+
"sections": {
|
|
164
|
+
"minItems": 1,
|
|
165
|
+
"maxItems": 32,
|
|
166
|
+
"type": "array",
|
|
167
|
+
"items": {
|
|
168
|
+
"type": "object",
|
|
169
|
+
"properties": {
|
|
170
|
+
"title": {
|
|
171
|
+
"type": "string",
|
|
172
|
+
"minLength": 1,
|
|
173
|
+
"maxLength": 500
|
|
174
|
+
},
|
|
175
|
+
"markdown": {
|
|
176
|
+
"type": "string",
|
|
177
|
+
"minLength": 1
|
|
178
|
+
},
|
|
179
|
+
"reference": {
|
|
180
|
+
"type": "string",
|
|
181
|
+
"minLength": 1,
|
|
182
|
+
"maxLength": 2000
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
"required": [
|
|
186
|
+
"title",
|
|
187
|
+
"markdown"
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"warnings": {
|
|
192
|
+
"maxItems": 20,
|
|
193
|
+
"type": "array",
|
|
194
|
+
"items": {
|
|
195
|
+
"type": "string",
|
|
196
|
+
"minLength": 1,
|
|
197
|
+
"maxLength": 2000
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"agentDescription": {
|
|
201
|
+
"type": "string",
|
|
202
|
+
"minLength": 1,
|
|
203
|
+
"maxLength": 4000
|
|
204
|
+
},
|
|
205
|
+
"reason": {
|
|
206
|
+
"type": "string"
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"required": [
|
|
210
|
+
"action"
|
|
211
|
+
],
|
|
212
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
213
|
+
"additionalProperties": {}
|
|
214
|
+
},
|
|
215
|
+
"execution": {
|
|
216
|
+
"taskSupport": "forbidden"
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"name": "canvas_snapshot",
|
|
221
|
+
"description": "Canvas snapshots: save the current state, list saved snapshots, restore one, delete one, garbage-collect old ones, or diff the live canvas against one. Action \"save\" stores a named snapshot; \"list\" returns saved snapshots (newest first); \"restore\" replaces the live canvas with a snapshot; \"delete\" removes one; \"gc\" keeps the newest N and deletes the rest (dryRun to preview); \"diff\" shows added/removed/modified nodes and edges versus a snapshot (by name or id).",
|
|
222
|
+
"inputSchema": {
|
|
223
|
+
"type": "object",
|
|
224
|
+
"properties": {
|
|
225
|
+
"action": {
|
|
226
|
+
"type": "string",
|
|
227
|
+
"enum": [
|
|
228
|
+
"save",
|
|
229
|
+
"list",
|
|
230
|
+
"restore",
|
|
231
|
+
"delete",
|
|
232
|
+
"gc",
|
|
233
|
+
"diff"
|
|
234
|
+
],
|
|
235
|
+
"description": "Operation to perform: save | list | restore | delete | gc | diff."
|
|
236
|
+
},
|
|
237
|
+
"name": {
|
|
238
|
+
"type": "string",
|
|
239
|
+
"description": "Name for this snapshot (e.g., \"before refactor\", \"investigation v2\")"
|
|
240
|
+
},
|
|
241
|
+
"limit": {
|
|
242
|
+
"description": "Maximum snapshots to return (default: 20)",
|
|
243
|
+
"type": "number"
|
|
244
|
+
},
|
|
245
|
+
"q": {
|
|
246
|
+
"description": "Query alias used by the HTTP/CLI surface"
|
|
247
|
+
},
|
|
248
|
+
"query": {
|
|
249
|
+
"description": "Optional case-insensitive ID/name filter",
|
|
250
|
+
"type": "string"
|
|
251
|
+
},
|
|
252
|
+
"before": {
|
|
253
|
+
"description": "Only return snapshots created at or before this ISO timestamp",
|
|
254
|
+
"type": "string"
|
|
255
|
+
},
|
|
256
|
+
"after": {
|
|
257
|
+
"description": "Only return snapshots created at or after this ISO timestamp",
|
|
258
|
+
"type": "string"
|
|
259
|
+
},
|
|
260
|
+
"all": {
|
|
261
|
+
"description": "Return all snapshots instead of the default limit",
|
|
262
|
+
"type": "boolean"
|
|
263
|
+
},
|
|
264
|
+
"id": {
|
|
265
|
+
"description": "Snapshot ID or name to restore (from canvas_snapshot or snapshot list)",
|
|
266
|
+
"type": "string"
|
|
267
|
+
},
|
|
268
|
+
"keep": {
|
|
269
|
+
"description": "Number of newest snapshots to keep (default: 20)",
|
|
270
|
+
"type": "number"
|
|
271
|
+
},
|
|
272
|
+
"dryRun": {
|
|
273
|
+
"description": "Preview deletions without removing snapshot files",
|
|
274
|
+
"type": "boolean"
|
|
275
|
+
},
|
|
276
|
+
"snapshot": {
|
|
277
|
+
"type": "string",
|
|
278
|
+
"description": "Snapshot name or ID to compare against"
|
|
279
|
+
}
|
|
280
|
+
},
|
|
281
|
+
"required": [
|
|
282
|
+
"action"
|
|
283
|
+
],
|
|
284
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
285
|
+
"additionalProperties": {}
|
|
286
|
+
},
|
|
287
|
+
"execution": {
|
|
288
|
+
"taskSupport": "forbidden"
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"name": "canvas_board",
|
|
293
|
+
"description": "Boards in this workspace — the library of the human's and your working memory, filed in categories on Home. Your writes always go to the open board (activeBoardId); on Home (no board open) your first write opens the most recent board, or a new one when there are none. Action \"list\" returns every board (with its category), most recently opened first; \"get\" reads one (default: the open board); \"create\" makes a new empty board WITHOUT opening it (optional category); \"open\" explicitly switches the shared workbench to id (null or omitted opens Home), changing the visible board and subsequent write target. After creating a board, open its returned id and verify activeBoardId before writing; another participant can switch the board later. \"update\" renames a board, files it under a category (category \"\" removes it), or designates its README via readmeNodeId. As part of normal board authoring, read the board metadata; if readmeNodeId is null, choose or create a concise markdown introduction explaining its purpose and key context, then designate that node with \"update\". Preserve an existing README unless the human asks to change it; humans can override the designation manually. Only the human deletes boards.",
|
|
294
|
+
"inputSchema": {
|
|
295
|
+
"type": "object",
|
|
296
|
+
"properties": {
|
|
297
|
+
"action": {
|
|
298
|
+
"type": "string",
|
|
299
|
+
"enum": [
|
|
300
|
+
"list",
|
|
301
|
+
"get",
|
|
302
|
+
"create",
|
|
303
|
+
"create-from",
|
|
304
|
+
"open",
|
|
305
|
+
"update"
|
|
306
|
+
],
|
|
307
|
+
"description": "Operation to perform: list | get | create | create-from | open | update."
|
|
308
|
+
},
|
|
309
|
+
"id": {
|
|
310
|
+
"description": "Board id (default: the open board)"
|
|
311
|
+
},
|
|
312
|
+
"name": {
|
|
313
|
+
"description": "Board name"
|
|
314
|
+
},
|
|
315
|
+
"category": {
|
|
316
|
+
"description": "Folder path on Home, e.g. Engineering/Canvas"
|
|
317
|
+
},
|
|
318
|
+
"sourceBoardId": {
|
|
319
|
+
"type": "string",
|
|
320
|
+
"description": "Source board id"
|
|
321
|
+
},
|
|
322
|
+
"nodeIds": {
|
|
323
|
+
"type": "array",
|
|
324
|
+
"items": {
|
|
325
|
+
"type": "string"
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
"includeReadme": {
|
|
329
|
+
"type": "boolean"
|
|
330
|
+
},
|
|
331
|
+
"includeStructure": {
|
|
332
|
+
"type": "boolean"
|
|
333
|
+
},
|
|
334
|
+
"preview": {
|
|
335
|
+
"description": "Return reusable cards and structure without creating",
|
|
336
|
+
"type": "boolean"
|
|
337
|
+
},
|
|
338
|
+
"readmeNodeId": {
|
|
339
|
+
"description": "Markdown node id used as the board README",
|
|
340
|
+
"anyOf": [
|
|
341
|
+
{
|
|
342
|
+
"type": "string"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"type": "null"
|
|
346
|
+
}
|
|
347
|
+
]
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
"required": [
|
|
351
|
+
"action"
|
|
352
|
+
],
|
|
353
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
354
|
+
"additionalProperties": {}
|
|
355
|
+
},
|
|
356
|
+
"execution": {
|
|
357
|
+
"taskSupport": "forbidden"
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"name": "canvas_node",
|
|
362
|
+
"description": "Create, read, update, or remove a canvas node. One tool for node CRUD: action \"add\" creates a node (requires type — markdown, status, context, ledger, trace, file, image, webpage, html, group, etc.); \"get\" reads one node by id; \"update\" patches an existing node (title, content, position, size, data); \"remove\" deletes a node by id. For spec-driven content (json-render, graph) use canvas_render; for external/built apps use canvas_app (actions: open-mcp-app, diagram, build-artifact).",
|
|
363
|
+
"inputSchema": {
|
|
364
|
+
"type": "object",
|
|
365
|
+
"properties": {
|
|
366
|
+
"action": {
|
|
367
|
+
"type": "string",
|
|
368
|
+
"enum": [
|
|
369
|
+
"add",
|
|
370
|
+
"get",
|
|
371
|
+
"update",
|
|
372
|
+
"remove"
|
|
373
|
+
],
|
|
374
|
+
"description": "Operation to perform: add | get | update | remove."
|
|
375
|
+
},
|
|
376
|
+
"intentId": {
|
|
377
|
+
"description": "Ghost intent id returned by canvas_intent signal. A vetoed or expired intent blocks this mutation.",
|
|
378
|
+
"type": "string"
|
|
379
|
+
},
|
|
380
|
+
"type": {
|
|
381
|
+
"type": "string",
|
|
382
|
+
"enum": [
|
|
383
|
+
"markdown",
|
|
384
|
+
"status",
|
|
385
|
+
"context",
|
|
386
|
+
"ledger",
|
|
387
|
+
"trace",
|
|
388
|
+
"file",
|
|
389
|
+
"diff",
|
|
390
|
+
"mermaid",
|
|
391
|
+
"image",
|
|
392
|
+
"webpage",
|
|
393
|
+
"mcp-app",
|
|
394
|
+
"html",
|
|
395
|
+
"group"
|
|
396
|
+
],
|
|
397
|
+
"description": "Node type (prefer canvas_group {action:\"create\"} for groups)"
|
|
398
|
+
},
|
|
399
|
+
"title": {
|
|
400
|
+
"description": "Node title",
|
|
401
|
+
"type": "string"
|
|
402
|
+
},
|
|
403
|
+
"content": {
|
|
404
|
+
"description": "Node content (markdown for markdown nodes, file path for file nodes, image path/URL/data-URI for image nodes, URL for webpage nodes)",
|
|
405
|
+
"type": "string"
|
|
406
|
+
},
|
|
407
|
+
"path": {
|
|
408
|
+
"description": "Compatibility alias for image node content. Prefer content for image paths.",
|
|
409
|
+
"type": "string"
|
|
410
|
+
},
|
|
411
|
+
"url": {
|
|
412
|
+
"description": "Canonical webpage URL field for webpage nodes. Overrides content when both are provided.",
|
|
413
|
+
"type": "string"
|
|
414
|
+
},
|
|
415
|
+
"x": {
|
|
416
|
+
"description": "X position (auto-placed if omitted)",
|
|
417
|
+
"type": "number"
|
|
418
|
+
},
|
|
419
|
+
"y": {
|
|
420
|
+
"description": "Y position (auto-placed if omitted)",
|
|
421
|
+
"type": "number"
|
|
422
|
+
},
|
|
423
|
+
"width": {
|
|
424
|
+
"description": "Width in pixels (default: 720)",
|
|
425
|
+
"type": "number"
|
|
426
|
+
},
|
|
427
|
+
"height": {
|
|
428
|
+
"description": "Height in pixels (default: 600)",
|
|
429
|
+
"type": "number"
|
|
430
|
+
},
|
|
431
|
+
"strictSize": {
|
|
432
|
+
"description": "Keep explicit width/height fixed and scroll overflowing content instead of browser auto-fitting",
|
|
433
|
+
"type": "boolean"
|
|
434
|
+
},
|
|
435
|
+
"children": {
|
|
436
|
+
"description": "Group-only alias for childIds. Node IDs to include in a generic group node."
|
|
437
|
+
},
|
|
438
|
+
"childIds": {
|
|
439
|
+
"description": "Group-only field. Node IDs to include in a generic group node. Prefer canvas_group {action:\"create\"} for groups."
|
|
440
|
+
},
|
|
441
|
+
"childLayout": {
|
|
442
|
+
"description": "Group-only optional layout for grouped children.",
|
|
443
|
+
"type": "string",
|
|
444
|
+
"enum": [
|
|
445
|
+
"grid",
|
|
446
|
+
"column",
|
|
447
|
+
"flow"
|
|
448
|
+
]
|
|
449
|
+
},
|
|
450
|
+
"color": {
|
|
451
|
+
"description": "Group-only frame accent color.",
|
|
452
|
+
"type": "string"
|
|
453
|
+
},
|
|
454
|
+
"toolName": {
|
|
455
|
+
"description": "Trace node tool or operation label",
|
|
456
|
+
"type": "string"
|
|
457
|
+
},
|
|
458
|
+
"category": {
|
|
459
|
+
"description": "Trace node category: mcp, file, subagent, or other",
|
|
460
|
+
"type": "string"
|
|
461
|
+
},
|
|
462
|
+
"status": {
|
|
463
|
+
"description": "Trace node status: running, success, or failed",
|
|
464
|
+
"type": "string"
|
|
465
|
+
},
|
|
466
|
+
"duration": {
|
|
467
|
+
"description": "Trace node duration badge text",
|
|
468
|
+
"type": "string"
|
|
469
|
+
},
|
|
470
|
+
"resultSummary": {
|
|
471
|
+
"description": "Trace node result summary",
|
|
472
|
+
"type": "string"
|
|
473
|
+
},
|
|
474
|
+
"error": {
|
|
475
|
+
"description": "Trace node error message",
|
|
476
|
+
"type": "string"
|
|
477
|
+
},
|
|
478
|
+
"data": {
|
|
479
|
+
"description": "Extra node data merged into the created node."
|
|
480
|
+
},
|
|
481
|
+
"html": {
|
|
482
|
+
"description": "HTML node document/fragment (html nodes only)."
|
|
483
|
+
},
|
|
484
|
+
"primitive": {
|
|
485
|
+
"description": "HTML primitive kind (html-primitive creation)."
|
|
486
|
+
},
|
|
487
|
+
"kind": {
|
|
488
|
+
"description": "Alias for primitive."
|
|
489
|
+
},
|
|
490
|
+
"summary": {
|
|
491
|
+
"description": "Agent-readable semantic summary (html nodes).",
|
|
492
|
+
"type": "string"
|
|
493
|
+
},
|
|
494
|
+
"agentSummary": {
|
|
495
|
+
"description": "Explicit agent-readable summary (html nodes).",
|
|
496
|
+
"type": "string"
|
|
497
|
+
},
|
|
498
|
+
"description": {
|
|
499
|
+
"description": "Short description included in search and pinned/spatial context (html nodes).",
|
|
500
|
+
"type": "string"
|
|
501
|
+
},
|
|
502
|
+
"presentation": {
|
|
503
|
+
"description": "Marks an html node as a fullscreen presentation/deck.",
|
|
504
|
+
"type": "boolean"
|
|
505
|
+
},
|
|
506
|
+
"slideTitles": {
|
|
507
|
+
"description": "Agent-readable slide titles for presentation HTML."
|
|
508
|
+
},
|
|
509
|
+
"embeddedNodeIds": {
|
|
510
|
+
"description": "Canvas node IDs embedded or represented by this HTML surface."
|
|
511
|
+
},
|
|
512
|
+
"embeddedUrls": {
|
|
513
|
+
"description": "URLs embedded or represented by this HTML surface."
|
|
514
|
+
},
|
|
515
|
+
"axCapabilities": {
|
|
516
|
+
"description": "Opt an html node into AX interactions. Merged into node data for html nodes; clamped to the node-type ceiling server-side."
|
|
517
|
+
},
|
|
518
|
+
"position": {
|
|
519
|
+
"description": "Geometry alias: { x, y } object form."
|
|
520
|
+
},
|
|
521
|
+
"size": {
|
|
522
|
+
"description": "Geometry alias: { width, height } object form."
|
|
523
|
+
},
|
|
524
|
+
"full": {
|
|
525
|
+
"description": "Return the full created node payload. Default false returns compact metadata.",
|
|
526
|
+
"type": "boolean"
|
|
527
|
+
},
|
|
528
|
+
"verbose": {
|
|
529
|
+
"description": "Alias for full:true.",
|
|
530
|
+
"type": "boolean"
|
|
531
|
+
},
|
|
532
|
+
"id": {
|
|
533
|
+
"type": "string",
|
|
534
|
+
"description": "The node ID to retrieve"
|
|
535
|
+
},
|
|
536
|
+
"board": {
|
|
537
|
+
"description": "Board id to read without opening it.",
|
|
538
|
+
"type": "string"
|
|
539
|
+
},
|
|
540
|
+
"includeBlobs": {
|
|
541
|
+
"description": "Include full blob payloads instead of blob summaries."
|
|
542
|
+
},
|
|
543
|
+
"expectedContentRevision": {
|
|
544
|
+
"description": "Reject an edit based on stale content",
|
|
545
|
+
"type": "integer",
|
|
546
|
+
"minimum": 0,
|
|
547
|
+
"maximum": 9007199254740991
|
|
548
|
+
},
|
|
549
|
+
"spec": {
|
|
550
|
+
"description": "New json-render spec, or a graph payload with graphType/data for graph nodes",
|
|
551
|
+
"type": "object",
|
|
552
|
+
"propertyNames": {
|
|
553
|
+
"type": "string"
|
|
554
|
+
},
|
|
555
|
+
"additionalProperties": {}
|
|
556
|
+
},
|
|
557
|
+
"graphType": {
|
|
558
|
+
"description": "Graph type when updating a graph node",
|
|
559
|
+
"type": "string"
|
|
560
|
+
},
|
|
561
|
+
"xKey": {
|
|
562
|
+
"description": "Graph x/category key",
|
|
563
|
+
"type": "string"
|
|
564
|
+
},
|
|
565
|
+
"yKey": {
|
|
566
|
+
"description": "Graph y/value key",
|
|
567
|
+
"type": "string"
|
|
568
|
+
},
|
|
569
|
+
"chartHeight": {
|
|
570
|
+
"description": "Graph chart content height, distinct from node height",
|
|
571
|
+
"type": "number"
|
|
572
|
+
},
|
|
573
|
+
"collapsed": {
|
|
574
|
+
"description": "Collapse or expand the node",
|
|
575
|
+
"type": "boolean"
|
|
576
|
+
},
|
|
577
|
+
"pinned": {
|
|
578
|
+
"description": "Pin or unpin the node to exclude it from auto-arrange",
|
|
579
|
+
"type": "boolean"
|
|
580
|
+
},
|
|
581
|
+
"arrangeLocked": {
|
|
582
|
+
"description": "Prevent auto-arrange from moving this node. Pinned nodes are also skipped.",
|
|
583
|
+
"type": "boolean"
|
|
584
|
+
},
|
|
585
|
+
"refresh": {
|
|
586
|
+
"description": "Webpage nodes: pass true to re-fetch the page instead of patching fields."
|
|
587
|
+
}
|
|
588
|
+
},
|
|
589
|
+
"required": [
|
|
590
|
+
"action"
|
|
591
|
+
],
|
|
592
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
593
|
+
"additionalProperties": {}
|
|
594
|
+
},
|
|
595
|
+
"execution": {
|
|
596
|
+
"taskSupport": "forbidden"
|
|
597
|
+
}
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
"name": "canvas_render",
|
|
601
|
+
"description": "Spec-driven content: discover the schema, validate a payload, or create a json-render / graph node. Action \"describe-schema\" returns the json-render component catalog + create schemas; \"validate\" checks a spec or graph payload without creating a node; \"add-json-render\" creates a json-render node from a complete spec; \"stream-json-render\" progressively builds one from SpecStream patches (omit nodeId to create, pass it back to append, done=true to finish); \"add-graph\" creates a chart node (line, bar, pie, area, scatter, radar, stacked-bar, composed, sparkline, dot-plot, bullet, slopegraph); \"workboard\" materializes a live AX work-item board (a json-render node with a column per status) that auto-refreshes whenever work items change — idempotent, rebuilding the existing board in place.",
|
|
602
|
+
"inputSchema": {
|
|
603
|
+
"type": "object",
|
|
604
|
+
"properties": {
|
|
605
|
+
"action": {
|
|
606
|
+
"type": "string",
|
|
607
|
+
"enum": [
|
|
608
|
+
"describe-schema",
|
|
609
|
+
"validate",
|
|
610
|
+
"add-json-render",
|
|
611
|
+
"stream-json-render",
|
|
612
|
+
"add-graph",
|
|
613
|
+
"workboard"
|
|
614
|
+
],
|
|
615
|
+
"description": "Operation to perform: describe-schema | validate | add-json-render | stream-json-render | add-graph | workboard."
|
|
616
|
+
},
|
|
617
|
+
"type": {
|
|
618
|
+
"type": "string",
|
|
619
|
+
"enum": [
|
|
620
|
+
"json-render",
|
|
621
|
+
"graph",
|
|
622
|
+
"html-primitive"
|
|
623
|
+
],
|
|
624
|
+
"description": "Structured payload type to validate"
|
|
625
|
+
},
|
|
626
|
+
"spec": {
|
|
627
|
+
"description": "json-render spec to validate when type=\"json-render\""
|
|
628
|
+
},
|
|
629
|
+
"kind": {
|
|
630
|
+
"description": "HTML primitive kind when type=\"html-primitive\"",
|
|
631
|
+
"type": "string"
|
|
632
|
+
},
|
|
633
|
+
"primitive": {
|
|
634
|
+
"description": "Alias for kind when type=\"html-primitive\"",
|
|
635
|
+
"type": "string"
|
|
636
|
+
},
|
|
637
|
+
"primitiveData": {
|
|
638
|
+
"description": "HTML primitive data payload when type=\"html-primitive\"",
|
|
639
|
+
"type": "object",
|
|
640
|
+
"propertyNames": {
|
|
641
|
+
"type": "string"
|
|
642
|
+
},
|
|
643
|
+
"additionalProperties": {}
|
|
644
|
+
},
|
|
645
|
+
"data": {
|
|
646
|
+
"description": "Graph dataset when type=\"graph\""
|
|
647
|
+
},
|
|
648
|
+
"title": {
|
|
649
|
+
"description": "Optional graph title",
|
|
650
|
+
"type": "string"
|
|
651
|
+
},
|
|
652
|
+
"graphType": {
|
|
653
|
+
"description": "Graph type when type=\"graph\"",
|
|
654
|
+
"type": "string"
|
|
655
|
+
},
|
|
656
|
+
"xKey": {
|
|
657
|
+
"description": "X-axis key for line/bar graphs",
|
|
658
|
+
"type": "string"
|
|
659
|
+
},
|
|
660
|
+
"yKey": {
|
|
661
|
+
"description": "Y-axis key for line/bar graphs",
|
|
662
|
+
"type": "string"
|
|
663
|
+
},
|
|
664
|
+
"zKey": {
|
|
665
|
+
"description": "Optional bubble-size key for scatter charts",
|
|
666
|
+
"type": "string"
|
|
667
|
+
},
|
|
668
|
+
"nameKey": {
|
|
669
|
+
"description": "Slice name key for pie graphs",
|
|
670
|
+
"type": "string"
|
|
671
|
+
},
|
|
672
|
+
"valueKey": {
|
|
673
|
+
"description": "Value key for pie slices, sparkline, dot-plot, and the bullet measure",
|
|
674
|
+
"type": "string"
|
|
675
|
+
},
|
|
676
|
+
"axisKey": {
|
|
677
|
+
"description": "Category key for radar charts",
|
|
678
|
+
"type": "string"
|
|
679
|
+
},
|
|
680
|
+
"metrics": {
|
|
681
|
+
"description": "Series keys to plot as radar polygons",
|
|
682
|
+
"type": "array",
|
|
683
|
+
"items": {
|
|
684
|
+
"type": "string"
|
|
685
|
+
}
|
|
686
|
+
},
|
|
687
|
+
"series": {
|
|
688
|
+
"description": "Series keys for stacked-bar segments",
|
|
689
|
+
"type": "array",
|
|
690
|
+
"items": {
|
|
691
|
+
"type": "string"
|
|
692
|
+
}
|
|
693
|
+
},
|
|
694
|
+
"barKey": {
|
|
695
|
+
"description": "Bar series key for composed charts",
|
|
696
|
+
"type": "string"
|
|
697
|
+
},
|
|
698
|
+
"lineKey": {
|
|
699
|
+
"description": "Line series key for composed charts",
|
|
700
|
+
"type": "string"
|
|
701
|
+
},
|
|
702
|
+
"aggregate": {
|
|
703
|
+
"description": "Optional aggregation for repeated keys",
|
|
704
|
+
"type": "string",
|
|
705
|
+
"enum": [
|
|
706
|
+
"sum",
|
|
707
|
+
"count",
|
|
708
|
+
"avg"
|
|
709
|
+
]
|
|
710
|
+
},
|
|
711
|
+
"color": {
|
|
712
|
+
"description": "Optional graph color",
|
|
713
|
+
"type": "string"
|
|
714
|
+
},
|
|
715
|
+
"colorBy": {
|
|
716
|
+
"description": "Bar charts only: how bars are colored (default 'series')",
|
|
717
|
+
"type": "string",
|
|
718
|
+
"enum": [
|
|
719
|
+
"series",
|
|
720
|
+
"category",
|
|
721
|
+
"value",
|
|
722
|
+
"none"
|
|
723
|
+
]
|
|
724
|
+
},
|
|
725
|
+
"highlight": {
|
|
726
|
+
"description": "Bar charts only, colorBy='series': which bar gets the accent",
|
|
727
|
+
"anyOf": [
|
|
728
|
+
{
|
|
729
|
+
"anyOf": [
|
|
730
|
+
{
|
|
731
|
+
"type": "number"
|
|
732
|
+
},
|
|
733
|
+
{
|
|
734
|
+
"type": "string",
|
|
735
|
+
"enum": [
|
|
736
|
+
"max",
|
|
737
|
+
"min"
|
|
738
|
+
]
|
|
739
|
+
}
|
|
740
|
+
]
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
"type": "null"
|
|
744
|
+
}
|
|
745
|
+
]
|
|
746
|
+
},
|
|
747
|
+
"barColor": {
|
|
748
|
+
"description": "Optional bar color for composed charts",
|
|
749
|
+
"type": "string"
|
|
750
|
+
},
|
|
751
|
+
"lineColor": {
|
|
752
|
+
"description": "Optional line color for composed charts",
|
|
753
|
+
"type": "string"
|
|
754
|
+
},
|
|
755
|
+
"labelKey": {
|
|
756
|
+
"description": "Category label key for dot-plot / bullet / slopegraph rows",
|
|
757
|
+
"type": "string"
|
|
758
|
+
},
|
|
759
|
+
"targetKey": {
|
|
760
|
+
"description": "Per-row target value key for bullet charts",
|
|
761
|
+
"type": "string"
|
|
762
|
+
},
|
|
763
|
+
"rangesKey": {
|
|
764
|
+
"description": "Per-row qualitative band thresholds key (number[]) for bullet charts",
|
|
765
|
+
"type": "string"
|
|
766
|
+
},
|
|
767
|
+
"beforeKey": {
|
|
768
|
+
"description": "Left-column value key for slopegraph",
|
|
769
|
+
"type": "string"
|
|
770
|
+
},
|
|
771
|
+
"afterKey": {
|
|
772
|
+
"description": "Right-column value key for slopegraph",
|
|
773
|
+
"type": "string"
|
|
774
|
+
},
|
|
775
|
+
"beforeLabel": {
|
|
776
|
+
"description": "Header label for the slopegraph left column",
|
|
777
|
+
"type": "string"
|
|
778
|
+
},
|
|
779
|
+
"afterLabel": {
|
|
780
|
+
"description": "Header label for the slopegraph right column",
|
|
781
|
+
"type": "string"
|
|
782
|
+
},
|
|
783
|
+
"sort": {
|
|
784
|
+
"description": "Row sort order for dot-plot (defaults to desc)",
|
|
785
|
+
"type": "string",
|
|
786
|
+
"enum": [
|
|
787
|
+
"asc",
|
|
788
|
+
"desc",
|
|
789
|
+
"none"
|
|
790
|
+
]
|
|
791
|
+
},
|
|
792
|
+
"fill": {
|
|
793
|
+
"description": "Sparkline: draw a light area fill under the line",
|
|
794
|
+
"type": "boolean"
|
|
795
|
+
},
|
|
796
|
+
"showEndDot": {
|
|
797
|
+
"description": "Sparkline: draw a dot at the last point (default true)",
|
|
798
|
+
"type": "boolean"
|
|
799
|
+
},
|
|
800
|
+
"showMinMax": {
|
|
801
|
+
"description": "Sparkline: mark the min and max points",
|
|
802
|
+
"type": "boolean"
|
|
803
|
+
},
|
|
804
|
+
"showValue": {
|
|
805
|
+
"description": "Sparkline: print the last value inline",
|
|
806
|
+
"type": "boolean"
|
|
807
|
+
},
|
|
808
|
+
"colorByDirection": {
|
|
809
|
+
"description": "Slopegraph: accent rising lines and mute falling ones (default off)",
|
|
810
|
+
"type": "boolean"
|
|
811
|
+
},
|
|
812
|
+
"height": {
|
|
813
|
+
"description": "Optional graph content height",
|
|
814
|
+
"type": "number"
|
|
815
|
+
},
|
|
816
|
+
"intentId": {
|
|
817
|
+
"description": "Ghost intent id returned by canvas_intent signal. A vetoed or expired intent blocks this mutation.",
|
|
818
|
+
"type": "string"
|
|
819
|
+
},
|
|
820
|
+
"x": {
|
|
821
|
+
"description": "Optional X position",
|
|
822
|
+
"type": "number"
|
|
823
|
+
},
|
|
824
|
+
"y": {
|
|
825
|
+
"description": "Optional Y position",
|
|
826
|
+
"type": "number"
|
|
827
|
+
},
|
|
828
|
+
"width": {
|
|
829
|
+
"description": "Optional node width",
|
|
830
|
+
"type": "number"
|
|
831
|
+
},
|
|
832
|
+
"nodeHeight": {
|
|
833
|
+
"description": "Alias for height — the frame-height name the graph and stream actions use",
|
|
834
|
+
"type": "number"
|
|
835
|
+
},
|
|
836
|
+
"strictSize": {
|
|
837
|
+
"description": "Keep explicit width/height fixed and scroll overflowing content instead of browser auto-fitting",
|
|
838
|
+
"type": "boolean"
|
|
839
|
+
},
|
|
840
|
+
"nodeId": {
|
|
841
|
+
"description": "Existing streaming node id to append to; omit to create a new streaming node",
|
|
842
|
+
"type": "string"
|
|
843
|
+
},
|
|
844
|
+
"patches": {
|
|
845
|
+
"description": "SpecStream patches to apply this call: JSON-Patch objects ({op,path,value}) or raw JSONL patch lines",
|
|
846
|
+
"type": "array",
|
|
847
|
+
"items": {
|
|
848
|
+
"anyOf": [
|
|
849
|
+
{
|
|
850
|
+
"type": "string"
|
|
851
|
+
},
|
|
852
|
+
{
|
|
853
|
+
"type": "object",
|
|
854
|
+
"propertyNames": {
|
|
855
|
+
"type": "string"
|
|
856
|
+
},
|
|
857
|
+
"additionalProperties": {}
|
|
858
|
+
}
|
|
859
|
+
]
|
|
860
|
+
}
|
|
861
|
+
},
|
|
862
|
+
"done": {
|
|
863
|
+
"description": "Set true on the final call to mark the stream complete",
|
|
864
|
+
"type": "boolean"
|
|
865
|
+
},
|
|
866
|
+
"showLegend": {
|
|
867
|
+
"description": "Show chart legend when supported; pass false for compact node layouts",
|
|
868
|
+
"type": "boolean"
|
|
869
|
+
},
|
|
870
|
+
"showLabels": {
|
|
871
|
+
"description": "Show direct labels when supported, such as pie slice labels (defaults to true)",
|
|
872
|
+
"type": "boolean"
|
|
873
|
+
},
|
|
874
|
+
"heightPx": {
|
|
875
|
+
"description": "SDK alias for nodeHeight (node frame height)",
|
|
876
|
+
"type": "number"
|
|
877
|
+
}
|
|
878
|
+
},
|
|
879
|
+
"required": [
|
|
880
|
+
"action"
|
|
881
|
+
],
|
|
882
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
883
|
+
"additionalProperties": {}
|
|
884
|
+
},
|
|
885
|
+
"execution": {
|
|
886
|
+
"taskSupport": "forbidden"
|
|
887
|
+
}
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
"name": "canvas_edge",
|
|
891
|
+
"description": "Add, update, or remove an edge (connection) between two nodes. Action \"add\" connects two nodes (type: flow=sequential, depends-on=dependency, relation=general, references=cross-reference; from/to take node ids, or fromSearch/toSearch resolve by title/content); \"update\" patches an existing edge in place (label, type, style, animated); \"remove\" deletes an edge by id.",
|
|
892
|
+
"inputSchema": {
|
|
893
|
+
"type": "object",
|
|
894
|
+
"properties": {
|
|
895
|
+
"action": {
|
|
896
|
+
"type": "string",
|
|
897
|
+
"enum": [
|
|
898
|
+
"add",
|
|
899
|
+
"update",
|
|
900
|
+
"remove"
|
|
901
|
+
],
|
|
902
|
+
"description": "Operation to perform: add | remove."
|
|
903
|
+
},
|
|
904
|
+
"intentId": {
|
|
905
|
+
"description": "Ghost intent id returned by canvas_intent signal. A vetoed or expired intent blocks this mutation.",
|
|
906
|
+
"type": "string"
|
|
907
|
+
},
|
|
908
|
+
"from": {
|
|
909
|
+
"description": "Source node ID",
|
|
910
|
+
"type": "string"
|
|
911
|
+
},
|
|
912
|
+
"to": {
|
|
913
|
+
"description": "Target node ID",
|
|
914
|
+
"type": "string"
|
|
915
|
+
},
|
|
916
|
+
"fromSearch": {
|
|
917
|
+
"description": "Resolve the source node by exact or fuzzy title/content search",
|
|
918
|
+
"type": "string"
|
|
919
|
+
},
|
|
920
|
+
"toSearch": {
|
|
921
|
+
"description": "Resolve the target node by exact or fuzzy title/content search",
|
|
922
|
+
"type": "string"
|
|
923
|
+
},
|
|
924
|
+
"type": {
|
|
925
|
+
"description": "Edge type: flow, depends-on, relation, or references"
|
|
926
|
+
},
|
|
927
|
+
"label": {
|
|
928
|
+
"description": "Edge label text"
|
|
929
|
+
},
|
|
930
|
+
"style": {
|
|
931
|
+
"description": "Optional edge stroke style: solid, dashed, or dotted"
|
|
932
|
+
},
|
|
933
|
+
"animated": {
|
|
934
|
+
"description": "Animate the edge stroke"
|
|
935
|
+
},
|
|
936
|
+
"id": {
|
|
937
|
+
"description": "Edge ID to update",
|
|
938
|
+
"type": "string"
|
|
939
|
+
},
|
|
940
|
+
"edge_id": {
|
|
941
|
+
"description": "Alias for id (legacy HTTP body field)",
|
|
942
|
+
"type": "string"
|
|
943
|
+
}
|
|
944
|
+
},
|
|
945
|
+
"required": [
|
|
946
|
+
"action"
|
|
947
|
+
],
|
|
948
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
949
|
+
"additionalProperties": {}
|
|
950
|
+
},
|
|
951
|
+
"execution": {
|
|
952
|
+
"taskSupport": "forbidden"
|
|
953
|
+
}
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
"name": "canvas_group",
|
|
957
|
+
"description": "Manage node groups. Action \"create\" makes a new group (optionally with initial child node ids); \"add\" moves nodes into an existing group; \"ungroup\" dissolves a group, releasing its children.",
|
|
958
|
+
"inputSchema": {
|
|
959
|
+
"type": "object",
|
|
960
|
+
"properties": {
|
|
961
|
+
"action": {
|
|
962
|
+
"type": "string",
|
|
963
|
+
"enum": [
|
|
964
|
+
"create",
|
|
965
|
+
"add",
|
|
966
|
+
"ungroup"
|
|
967
|
+
],
|
|
968
|
+
"description": "Operation to perform: create | add | ungroup."
|
|
969
|
+
},
|
|
970
|
+
"intentId": {
|
|
971
|
+
"description": "Ghost intent id returned by canvas_intent signal. A vetoed or expired intent blocks this mutation.",
|
|
972
|
+
"type": "string"
|
|
973
|
+
},
|
|
974
|
+
"title": {
|
|
975
|
+
"description": "Group title (default: \"Group\")",
|
|
976
|
+
"type": "string"
|
|
977
|
+
},
|
|
978
|
+
"childIds": {
|
|
979
|
+
"description": "Node IDs to include in the group. Group auto-sizes to fit them."
|
|
980
|
+
},
|
|
981
|
+
"color": {
|
|
982
|
+
"description": "Group accent color (CSS color string, e.g. \"#4a9eff\")",
|
|
983
|
+
"type": "string"
|
|
984
|
+
},
|
|
985
|
+
"x": {
|
|
986
|
+
"description": "X position (auto-computed from children if omitted)",
|
|
987
|
+
"type": "number"
|
|
988
|
+
},
|
|
989
|
+
"y": {
|
|
990
|
+
"description": "Y position (auto-computed from children if omitted)",
|
|
991
|
+
"type": "number"
|
|
992
|
+
},
|
|
993
|
+
"width": {
|
|
994
|
+
"description": "Width (auto-computed from children if omitted)",
|
|
995
|
+
"type": "number"
|
|
996
|
+
},
|
|
997
|
+
"height": {
|
|
998
|
+
"description": "Height (auto-computed from children if omitted)",
|
|
999
|
+
"type": "number"
|
|
1000
|
+
},
|
|
1001
|
+
"childLayout": {
|
|
1002
|
+
"description": "Optional child auto-layout. Omit to preserve current child positions.",
|
|
1003
|
+
"type": "string",
|
|
1004
|
+
"enum": [
|
|
1005
|
+
"grid",
|
|
1006
|
+
"column",
|
|
1007
|
+
"flow"
|
|
1008
|
+
]
|
|
1009
|
+
},
|
|
1010
|
+
"full": {
|
|
1011
|
+
"description": "Return the full created group payload. Default false returns compact metadata.",
|
|
1012
|
+
"type": "boolean"
|
|
1013
|
+
},
|
|
1014
|
+
"verbose": {
|
|
1015
|
+
"description": "Alias for full:true.",
|
|
1016
|
+
"type": "boolean"
|
|
1017
|
+
},
|
|
1018
|
+
"groupId": {
|
|
1019
|
+
"description": "The group node ID",
|
|
1020
|
+
"type": "string"
|
|
1021
|
+
}
|
|
1022
|
+
},
|
|
1023
|
+
"required": [
|
|
1024
|
+
"action"
|
|
1025
|
+
],
|
|
1026
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1027
|
+
"additionalProperties": {}
|
|
1028
|
+
},
|
|
1029
|
+
"execution": {
|
|
1030
|
+
"taskSupport": "forbidden"
|
|
1031
|
+
}
|
|
1032
|
+
},
|
|
1033
|
+
{
|
|
1034
|
+
"name": "canvas_history",
|
|
1035
|
+
"description": "Step through canvas mutation history. Action \"undo\" reverses the last mutation; \"redo\" reapplies it. History is session-scoped (in-memory, last 200 operations).",
|
|
1036
|
+
"inputSchema": {
|
|
1037
|
+
"type": "object",
|
|
1038
|
+
"properties": {
|
|
1039
|
+
"action": {
|
|
1040
|
+
"type": "string",
|
|
1041
|
+
"enum": [
|
|
1042
|
+
"undo",
|
|
1043
|
+
"redo"
|
|
1044
|
+
],
|
|
1045
|
+
"description": "Operation to perform: undo | redo."
|
|
1046
|
+
}
|
|
1047
|
+
},
|
|
1048
|
+
"required": [
|
|
1049
|
+
"action"
|
|
1050
|
+
],
|
|
1051
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1052
|
+
"additionalProperties": {}
|
|
1053
|
+
},
|
|
1054
|
+
"execution": {
|
|
1055
|
+
"taskSupport": "forbidden"
|
|
1056
|
+
}
|
|
1057
|
+
},
|
|
1058
|
+
{
|
|
1059
|
+
"name": "canvas_view",
|
|
1060
|
+
"description": "Canvas viewport and layout control. Action \"arrange\" auto-lays-out nodes (grid/columns/etc.); \"focus\" pans/zooms the viewport to a node; \"fit\" zooms to fit all nodes in view; \"clear\" removes every node and edge from the canvas; \"remove-annotation\" deletes a human-drawn annotation by id.",
|
|
1061
|
+
"inputSchema": {
|
|
1062
|
+
"type": "object",
|
|
1063
|
+
"properties": {
|
|
1064
|
+
"action": {
|
|
1065
|
+
"type": "string",
|
|
1066
|
+
"enum": [
|
|
1067
|
+
"get-tour",
|
|
1068
|
+
"set-tour",
|
|
1069
|
+
"arrange",
|
|
1070
|
+
"focus",
|
|
1071
|
+
"fit",
|
|
1072
|
+
"clear",
|
|
1073
|
+
"remove-annotation"
|
|
1074
|
+
],
|
|
1075
|
+
"description": "Operation to perform: arrange | focus | fit | clear | remove-annotation | get-tour | set-tour."
|
|
1076
|
+
},
|
|
1077
|
+
"tour": {
|
|
1078
|
+
"anyOf": [
|
|
1079
|
+
{
|
|
1080
|
+
"type": "object",
|
|
1081
|
+
"properties": {
|
|
1082
|
+
"stops": {
|
|
1083
|
+
"maxItems": 1000,
|
|
1084
|
+
"type": "array",
|
|
1085
|
+
"items": {
|
|
1086
|
+
"type": "object",
|
|
1087
|
+
"properties": {
|
|
1088
|
+
"target": {
|
|
1089
|
+
"anyOf": [
|
|
1090
|
+
{
|
|
1091
|
+
"type": "object",
|
|
1092
|
+
"properties": {
|
|
1093
|
+
"nodeId": {
|
|
1094
|
+
"type": "string",
|
|
1095
|
+
"minLength": 1
|
|
1096
|
+
}
|
|
1097
|
+
},
|
|
1098
|
+
"required": [
|
|
1099
|
+
"nodeId"
|
|
1100
|
+
],
|
|
1101
|
+
"additionalProperties": false
|
|
1102
|
+
},
|
|
1103
|
+
{
|
|
1104
|
+
"type": "object",
|
|
1105
|
+
"properties": {
|
|
1106
|
+
"viewport": {
|
|
1107
|
+
"type": "object",
|
|
1108
|
+
"properties": {
|
|
1109
|
+
"x": {
|
|
1110
|
+
"type": "number"
|
|
1111
|
+
},
|
|
1112
|
+
"y": {
|
|
1113
|
+
"type": "number"
|
|
1114
|
+
},
|
|
1115
|
+
"scale": {
|
|
1116
|
+
"type": "number",
|
|
1117
|
+
"exclusiveMinimum": 0
|
|
1118
|
+
}
|
|
1119
|
+
},
|
|
1120
|
+
"required": [
|
|
1121
|
+
"x",
|
|
1122
|
+
"y",
|
|
1123
|
+
"scale"
|
|
1124
|
+
]
|
|
1125
|
+
}
|
|
1126
|
+
},
|
|
1127
|
+
"required": [
|
|
1128
|
+
"viewport"
|
|
1129
|
+
],
|
|
1130
|
+
"additionalProperties": false
|
|
1131
|
+
}
|
|
1132
|
+
]
|
|
1133
|
+
},
|
|
1134
|
+
"duration": {
|
|
1135
|
+
"type": "number",
|
|
1136
|
+
"minimum": 0,
|
|
1137
|
+
"maximum": 3600
|
|
1138
|
+
},
|
|
1139
|
+
"easing": {
|
|
1140
|
+
"type": "string",
|
|
1141
|
+
"enum": [
|
|
1142
|
+
"linear",
|
|
1143
|
+
"ease-in-out",
|
|
1144
|
+
"ease-out"
|
|
1145
|
+
]
|
|
1146
|
+
},
|
|
1147
|
+
"padding": {
|
|
1148
|
+
"type": "number",
|
|
1149
|
+
"minimum": 0
|
|
1150
|
+
},
|
|
1151
|
+
"pullback": {
|
|
1152
|
+
"type": "number",
|
|
1153
|
+
"minimum": 0,
|
|
1154
|
+
"maximum": 4
|
|
1155
|
+
}
|
|
1156
|
+
},
|
|
1157
|
+
"required": [
|
|
1158
|
+
"target"
|
|
1159
|
+
]
|
|
1160
|
+
}
|
|
1161
|
+
}
|
|
1162
|
+
},
|
|
1163
|
+
"required": [
|
|
1164
|
+
"stops"
|
|
1165
|
+
]
|
|
1166
|
+
},
|
|
1167
|
+
{
|
|
1168
|
+
"type": "null"
|
|
1169
|
+
}
|
|
1170
|
+
],
|
|
1171
|
+
"description": "Ordered camera stops, or null to derive from groups"
|
|
1172
|
+
},
|
|
1173
|
+
"layout": {
|
|
1174
|
+
"description": "Arrangement layout (default: grid)",
|
|
1175
|
+
"type": "string",
|
|
1176
|
+
"enum": [
|
|
1177
|
+
"grid",
|
|
1178
|
+
"column",
|
|
1179
|
+
"flow"
|
|
1180
|
+
]
|
|
1181
|
+
},
|
|
1182
|
+
"id": {
|
|
1183
|
+
"description": "Node ID to focus on"
|
|
1184
|
+
},
|
|
1185
|
+
"noPan": {
|
|
1186
|
+
"description": "If true, raise/select the node without panning the viewport. Default false.",
|
|
1187
|
+
"type": "boolean"
|
|
1188
|
+
},
|
|
1189
|
+
"width": {
|
|
1190
|
+
"description": "Viewport width used for fit math (default 1440)",
|
|
1191
|
+
"type": "number"
|
|
1192
|
+
},
|
|
1193
|
+
"height": {
|
|
1194
|
+
"description": "Viewport height used for fit math (default 900)",
|
|
1195
|
+
"type": "number"
|
|
1196
|
+
},
|
|
1197
|
+
"padding": {
|
|
1198
|
+
"description": "World-space padding around fitted nodes (default 60)",
|
|
1199
|
+
"type": "number"
|
|
1200
|
+
},
|
|
1201
|
+
"maxScale": {
|
|
1202
|
+
"description": "Maximum zoom scale (default 1)",
|
|
1203
|
+
"type": "number"
|
|
1204
|
+
},
|
|
1205
|
+
"nodeIds": {
|
|
1206
|
+
"description": "Optional node IDs to fit instead of the whole canvas",
|
|
1207
|
+
"type": "array",
|
|
1208
|
+
"items": {
|
|
1209
|
+
"type": "string"
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
},
|
|
1213
|
+
"required": [
|
|
1214
|
+
"action"
|
|
1215
|
+
],
|
|
1216
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1217
|
+
"additionalProperties": {}
|
|
1218
|
+
},
|
|
1219
|
+
"execution": {
|
|
1220
|
+
"taskSupport": "forbidden"
|
|
1221
|
+
}
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
"name": "canvas_query",
|
|
1225
|
+
"description": "Read the board cheapest-first. Action \"context\" returns a budgeted cross-board brief with a durable consumer cursor (budget is UTF-16 characters); \"search\" finds nodes by title/content keywords; \"layout\" returns the full layout; \"validate\" checks geometry and endpoints.",
|
|
1226
|
+
"inputSchema": {
|
|
1227
|
+
"type": "object",
|
|
1228
|
+
"properties": {
|
|
1229
|
+
"action": {
|
|
1230
|
+
"type": "string",
|
|
1231
|
+
"enum": [
|
|
1232
|
+
"context",
|
|
1233
|
+
"search",
|
|
1234
|
+
"layout",
|
|
1235
|
+
"validate"
|
|
1236
|
+
],
|
|
1237
|
+
"description": "Operation to perform: context | search | layout | validate."
|
|
1238
|
+
},
|
|
1239
|
+
"consumer": {
|
|
1240
|
+
"description": "Stable consumer id used for the durable board-scoped cursor"
|
|
1241
|
+
},
|
|
1242
|
+
"since": {
|
|
1243
|
+
"description": "Explicit content revision; bypasses the durable consumer cursor"
|
|
1244
|
+
},
|
|
1245
|
+
"budget": {
|
|
1246
|
+
"description": "Maximum response size in UTF-16 code units"
|
|
1247
|
+
},
|
|
1248
|
+
"q": {
|
|
1249
|
+
"description": "Search query — matches against node titles, content, and file paths"
|
|
1250
|
+
},
|
|
1251
|
+
"scope": {
|
|
1252
|
+
"description": "Search the active board or the full board library",
|
|
1253
|
+
"type": "string",
|
|
1254
|
+
"enum": [
|
|
1255
|
+
"active",
|
|
1256
|
+
"library"
|
|
1257
|
+
]
|
|
1258
|
+
},
|
|
1259
|
+
"limit": {
|
|
1260
|
+
"description": "Max results to return (default: 10)",
|
|
1261
|
+
"type": "number"
|
|
1262
|
+
},
|
|
1263
|
+
"query": {
|
|
1264
|
+
"type": "string",
|
|
1265
|
+
"description": "Search query — matches against node titles, content, and file paths"
|
|
1266
|
+
},
|
|
1267
|
+
"board": {
|
|
1268
|
+
"description": "Board id to read without opening it.",
|
|
1269
|
+
"type": "string"
|
|
1270
|
+
},
|
|
1271
|
+
"includeBlobs": {
|
|
1272
|
+
"description": "Include full blob payloads instead of blob summaries."
|
|
1273
|
+
},
|
|
1274
|
+
"full": {
|
|
1275
|
+
"description": "Return the full layout including node data. Default false keeps responses compact.",
|
|
1276
|
+
"type": "boolean"
|
|
1277
|
+
},
|
|
1278
|
+
"verbose": {
|
|
1279
|
+
"description": "Alias for full:true.",
|
|
1280
|
+
"type": "boolean"
|
|
1281
|
+
}
|
|
1282
|
+
},
|
|
1283
|
+
"required": [
|
|
1284
|
+
"action"
|
|
1285
|
+
],
|
|
1286
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1287
|
+
"additionalProperties": {}
|
|
1288
|
+
},
|
|
1289
|
+
"execution": {
|
|
1290
|
+
"taskSupport": "forbidden"
|
|
1291
|
+
}
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
"name": "canvas_app",
|
|
1295
|
+
"description": "Open external / built-content apps on the canvas. Action \"open-mcp-app\" connects to an external MCP server that declares a ui:// app resource, calls a tool, and opens the result inside an mcp-app node (full transport call — pass transport + toolName); \"diagram\" draws a hand-drawn diagram via the hosted Excalidraw preset (pass elements); \"build-artifact\" bundles a single-file HTML web artifact from React/Tailwind source (title + appTsx) and optionally opens it on the canvas. build-artifact can be long-running (minutes) on cold workspaces — set a long client timeout.",
|
|
1296
|
+
"inputSchema": {
|
|
1297
|
+
"type": "object",
|
|
1298
|
+
"properties": {
|
|
1299
|
+
"action": {
|
|
1300
|
+
"type": "string",
|
|
1301
|
+
"enum": [
|
|
1302
|
+
"open-mcp-app",
|
|
1303
|
+
"diagram",
|
|
1304
|
+
"build-artifact"
|
|
1305
|
+
],
|
|
1306
|
+
"description": "Operation to perform: open-mcp-app | diagram | build-artifact."
|
|
1307
|
+
},
|
|
1308
|
+
"toolName": {
|
|
1309
|
+
"type": "string",
|
|
1310
|
+
"description": "Tool name on the external MCP server"
|
|
1311
|
+
},
|
|
1312
|
+
"serverName": {
|
|
1313
|
+
"description": "Optional display name for the external MCP server",
|
|
1314
|
+
"type": "string"
|
|
1315
|
+
},
|
|
1316
|
+
"toolArguments": {
|
|
1317
|
+
"description": "Arguments passed to the external tool call",
|
|
1318
|
+
"type": "object",
|
|
1319
|
+
"propertyNames": {
|
|
1320
|
+
"type": "string"
|
|
1321
|
+
},
|
|
1322
|
+
"additionalProperties": {}
|
|
1323
|
+
},
|
|
1324
|
+
"nodeId": {
|
|
1325
|
+
"description": "Existing mcp-app node ID to update in place instead of creating a new node.",
|
|
1326
|
+
"type": "string"
|
|
1327
|
+
},
|
|
1328
|
+
"title": {
|
|
1329
|
+
"description": "Optional canvas node title override",
|
|
1330
|
+
"type": "string"
|
|
1331
|
+
},
|
|
1332
|
+
"x": {
|
|
1333
|
+
"description": "X position (auto-placed if omitted)",
|
|
1334
|
+
"type": "number"
|
|
1335
|
+
},
|
|
1336
|
+
"y": {
|
|
1337
|
+
"description": "Y position (auto-placed if omitted)",
|
|
1338
|
+
"type": "number"
|
|
1339
|
+
},
|
|
1340
|
+
"width": {
|
|
1341
|
+
"description": "Width in pixels (default: 720)",
|
|
1342
|
+
"type": "number"
|
|
1343
|
+
},
|
|
1344
|
+
"height": {
|
|
1345
|
+
"description": "Height in pixels (default: 500)",
|
|
1346
|
+
"type": "number"
|
|
1347
|
+
},
|
|
1348
|
+
"timeoutMs": {
|
|
1349
|
+
"description": "Optional MCP request timeout in milliseconds for cold external app servers",
|
|
1350
|
+
"type": "number"
|
|
1351
|
+
},
|
|
1352
|
+
"transport": {
|
|
1353
|
+
"anyOf": [
|
|
1354
|
+
{
|
|
1355
|
+
"type": "object",
|
|
1356
|
+
"properties": {
|
|
1357
|
+
"type": {
|
|
1358
|
+
"type": "string",
|
|
1359
|
+
"const": "stdio"
|
|
1360
|
+
},
|
|
1361
|
+
"command": {
|
|
1362
|
+
"type": "string",
|
|
1363
|
+
"description": "Executable used to start the external MCP server"
|
|
1364
|
+
},
|
|
1365
|
+
"args": {
|
|
1366
|
+
"description": "Arguments for the executable",
|
|
1367
|
+
"type": "array",
|
|
1368
|
+
"items": {
|
|
1369
|
+
"type": "string"
|
|
1370
|
+
}
|
|
1371
|
+
},
|
|
1372
|
+
"cwd": {
|
|
1373
|
+
"description": "Optional working directory",
|
|
1374
|
+
"type": "string"
|
|
1375
|
+
},
|
|
1376
|
+
"env": {
|
|
1377
|
+
"description": "Optional environment overrides",
|
|
1378
|
+
"type": "object",
|
|
1379
|
+
"propertyNames": {
|
|
1380
|
+
"type": "string"
|
|
1381
|
+
},
|
|
1382
|
+
"additionalProperties": {
|
|
1383
|
+
"type": "string"
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1386
|
+
},
|
|
1387
|
+
"required": [
|
|
1388
|
+
"type",
|
|
1389
|
+
"command"
|
|
1390
|
+
]
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
"type": "object",
|
|
1394
|
+
"properties": {
|
|
1395
|
+
"type": {
|
|
1396
|
+
"type": "string",
|
|
1397
|
+
"const": "http"
|
|
1398
|
+
},
|
|
1399
|
+
"url": {
|
|
1400
|
+
"type": "string",
|
|
1401
|
+
"description": "Streamable HTTP MCP endpoint URL"
|
|
1402
|
+
},
|
|
1403
|
+
"headers": {
|
|
1404
|
+
"description": "Optional HTTP headers",
|
|
1405
|
+
"type": "object",
|
|
1406
|
+
"propertyNames": {
|
|
1407
|
+
"type": "string"
|
|
1408
|
+
},
|
|
1409
|
+
"additionalProperties": {
|
|
1410
|
+
"type": "string"
|
|
1411
|
+
}
|
|
1412
|
+
}
|
|
1413
|
+
},
|
|
1414
|
+
"required": [
|
|
1415
|
+
"type",
|
|
1416
|
+
"url"
|
|
1417
|
+
]
|
|
1418
|
+
}
|
|
1419
|
+
],
|
|
1420
|
+
"description": "How PMX Canvas should connect to the external MCP server"
|
|
1421
|
+
},
|
|
1422
|
+
"elements": {
|
|
1423
|
+
"anyOf": [
|
|
1424
|
+
{
|
|
1425
|
+
"type": "string",
|
|
1426
|
+
"description": "JSON array string of Excalidraw elements"
|
|
1427
|
+
},
|
|
1428
|
+
{
|
|
1429
|
+
"type": "array",
|
|
1430
|
+
"items": {
|
|
1431
|
+
"type": "object",
|
|
1432
|
+
"propertyNames": {
|
|
1433
|
+
"type": "string"
|
|
1434
|
+
},
|
|
1435
|
+
"additionalProperties": {}
|
|
1436
|
+
},
|
|
1437
|
+
"description": "Array of Excalidraw elements"
|
|
1438
|
+
}
|
|
1439
|
+
],
|
|
1440
|
+
"description": "Excalidraw elements to render. See https://github.com/excalidraw/excalidraw-mcp for the element format."
|
|
1441
|
+
},
|
|
1442
|
+
"appTsx": {
|
|
1443
|
+
"type": "string",
|
|
1444
|
+
"description": "Contents for src/App.tsx"
|
|
1445
|
+
},
|
|
1446
|
+
"indexCss": {
|
|
1447
|
+
"description": "Optional contents for src/index.css",
|
|
1448
|
+
"type": "string"
|
|
1449
|
+
},
|
|
1450
|
+
"mainTsx": {
|
|
1451
|
+
"description": "Optional contents for src/main.tsx",
|
|
1452
|
+
"type": "string"
|
|
1453
|
+
},
|
|
1454
|
+
"indexHtml": {
|
|
1455
|
+
"description": "Optional contents for index.html",
|
|
1456
|
+
"type": "string"
|
|
1457
|
+
},
|
|
1458
|
+
"files": {
|
|
1459
|
+
"description": "Optional map of additional project-relative file paths to file contents",
|
|
1460
|
+
"type": "object",
|
|
1461
|
+
"propertyNames": {
|
|
1462
|
+
"type": "string"
|
|
1463
|
+
},
|
|
1464
|
+
"additionalProperties": {
|
|
1465
|
+
"type": "string"
|
|
1466
|
+
}
|
|
1467
|
+
},
|
|
1468
|
+
"deps": {
|
|
1469
|
+
"description": "Optional npm dependencies to install before bundling (e.g. [\"recharts\", \"framer-motion@^11\"]). Validated against npm-name format; flags and shell metacharacters are rejected.",
|
|
1470
|
+
"type": "array",
|
|
1471
|
+
"items": {
|
|
1472
|
+
"type": "string"
|
|
1473
|
+
}
|
|
1474
|
+
},
|
|
1475
|
+
"projectPath": {
|
|
1476
|
+
"description": "Optional workspace-relative reusable project path. Defaults to .pmx-canvas/artifacts/.web-artifacts/<slug>",
|
|
1477
|
+
"type": "string"
|
|
1478
|
+
},
|
|
1479
|
+
"outputPath": {
|
|
1480
|
+
"description": "Optional workspace-relative HTML output path. Defaults to .pmx-canvas/artifacts/<slug>.html",
|
|
1481
|
+
"type": "string"
|
|
1482
|
+
},
|
|
1483
|
+
"openInCanvas": {
|
|
1484
|
+
"description": "Open the generated artifact in canvas after build (default true)",
|
|
1485
|
+
"type": "boolean"
|
|
1486
|
+
},
|
|
1487
|
+
"includeLogs": {
|
|
1488
|
+
"description": "Include raw build stdout/stderr in the response (default false)",
|
|
1489
|
+
"type": "boolean"
|
|
1490
|
+
},
|
|
1491
|
+
"initScriptPath": {
|
|
1492
|
+
"description": "Optional script path override for tests/debugging. Must resolve inside the workspace.",
|
|
1493
|
+
"type": "string"
|
|
1494
|
+
},
|
|
1495
|
+
"bundleScriptPath": {
|
|
1496
|
+
"description": "Optional script path override for tests/debugging. Must resolve inside the workspace.",
|
|
1497
|
+
"type": "string"
|
|
1498
|
+
}
|
|
1499
|
+
},
|
|
1500
|
+
"required": [
|
|
1501
|
+
"action"
|
|
1502
|
+
],
|
|
1503
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1504
|
+
"additionalProperties": {}
|
|
1505
|
+
},
|
|
1506
|
+
"execution": {
|
|
1507
|
+
"taskSupport": "forbidden"
|
|
1508
|
+
}
|
|
1509
|
+
},
|
|
1510
|
+
{
|
|
1511
|
+
"name": "canvas_webview",
|
|
1512
|
+
"description": "Drive the headless Bun.WebView automation session for the workbench. Action \"status\" reads automation status (supported, active, backend, viewport, url); \"start\" starts/replaces the session (backend chrome|webkit, width, height, chromePath, chromeArgv, dataStoreDir); \"stop\" stops the active session; \"resize\" sets the viewport (width, height required); \"evaluate\" runs JavaScript in the page (pass exactly one of expression or script; script is wrapped in an async IIFE). Capturing a screenshot is NOT folded here — use the standalone canvas_screenshot tool (it returns a binary image payload).",
|
|
1513
|
+
"inputSchema": {
|
|
1514
|
+
"type": "object",
|
|
1515
|
+
"properties": {
|
|
1516
|
+
"action": {
|
|
1517
|
+
"type": "string",
|
|
1518
|
+
"enum": [
|
|
1519
|
+
"status",
|
|
1520
|
+
"start",
|
|
1521
|
+
"stop",
|
|
1522
|
+
"resize",
|
|
1523
|
+
"evaluate"
|
|
1524
|
+
],
|
|
1525
|
+
"description": "Operation to perform: status | start | stop | resize | evaluate."
|
|
1526
|
+
},
|
|
1527
|
+
"backend": {
|
|
1528
|
+
"description": "Automation backend. Default: webkit on macOS, chrome elsewhere.",
|
|
1529
|
+
"type": "string",
|
|
1530
|
+
"enum": [
|
|
1531
|
+
"chrome",
|
|
1532
|
+
"webkit"
|
|
1533
|
+
]
|
|
1534
|
+
},
|
|
1535
|
+
"width": {
|
|
1536
|
+
"description": "Viewport width in pixels (default: 1280)"
|
|
1537
|
+
},
|
|
1538
|
+
"height": {
|
|
1539
|
+
"description": "Viewport height in pixels (default: 800)"
|
|
1540
|
+
},
|
|
1541
|
+
"chromePath": {
|
|
1542
|
+
"description": "Optional Chrome/Chromium executable path",
|
|
1543
|
+
"type": "string"
|
|
1544
|
+
},
|
|
1545
|
+
"chromeArgv": {
|
|
1546
|
+
"description": "Optional extra Chrome launch args",
|
|
1547
|
+
"type": "array",
|
|
1548
|
+
"items": {
|
|
1549
|
+
"type": "string"
|
|
1550
|
+
}
|
|
1551
|
+
},
|
|
1552
|
+
"dataStoreDir": {
|
|
1553
|
+
"description": "Optional persistent data store directory",
|
|
1554
|
+
"type": "string"
|
|
1555
|
+
},
|
|
1556
|
+
"expression": {
|
|
1557
|
+
"description": "JavaScript expression to evaluate in the page context",
|
|
1558
|
+
"type": "string"
|
|
1559
|
+
},
|
|
1560
|
+
"script": {
|
|
1561
|
+
"description": "Multi-statement JavaScript body. The MCP server wraps it in an async IIFE and evaluates the resolved return value.",
|
|
1562
|
+
"type": "string"
|
|
1563
|
+
}
|
|
1564
|
+
},
|
|
1565
|
+
"required": [
|
|
1566
|
+
"action"
|
|
1567
|
+
],
|
|
1568
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1569
|
+
"additionalProperties": {}
|
|
1570
|
+
},
|
|
1571
|
+
"execution": {
|
|
1572
|
+
"taskSupport": "forbidden"
|
|
1573
|
+
}
|
|
1574
|
+
},
|
|
1575
|
+
{
|
|
1576
|
+
"name": "canvas_ax_state",
|
|
1577
|
+
"description": "Read or set host-agnostic PMX AX state. Action \"get\" reads the AX state + agent-ready context (pinned/focused context, focus field); \"set-focus\" places node IDs in the AX focus field (nodeIds); \"set-policy\" patches the tool/prompt policy (tools.allowed|excluded|approvalRequired, prompt.systemAppend|mode — merges with existing); \"report-capability\" records a host/session capability for diagnostics; \"presence\" reads agent presence (who is writing, phase, attached session, context budget); \"set-presence\" updates this caller's presence (phase idle|thinking|tooling|waiting-approval, detail, focusNodeId, cursor, attached — attached:true starts a session, false ends it; contextUsage {used,total} reports the agent's real token window so the board's meter shows it instead of the pinned-context estimate). Adapters may pass a source label (e.g. codex).",
|
|
1578
|
+
"inputSchema": {
|
|
1579
|
+
"type": "object",
|
|
1580
|
+
"properties": {
|
|
1581
|
+
"action": {
|
|
1582
|
+
"type": "string",
|
|
1583
|
+
"enum": [
|
|
1584
|
+
"get",
|
|
1585
|
+
"set-focus",
|
|
1586
|
+
"set-policy",
|
|
1587
|
+
"report-capability",
|
|
1588
|
+
"presence",
|
|
1589
|
+
"set-presence"
|
|
1590
|
+
],
|
|
1591
|
+
"description": "Operation to perform: get | set-focus | set-policy | report-capability | presence | set-presence."
|
|
1592
|
+
},
|
|
1593
|
+
"includeContext": {
|
|
1594
|
+
"description": "Include serialized agent-ready AX context. Default true.",
|
|
1595
|
+
"type": "boolean"
|
|
1596
|
+
},
|
|
1597
|
+
"nodeIds": {
|
|
1598
|
+
"type": "array",
|
|
1599
|
+
"items": {
|
|
1600
|
+
"type": "string"
|
|
1601
|
+
},
|
|
1602
|
+
"description": "Node IDs to place in the AX focus field. Missing nodes are ignored."
|
|
1603
|
+
},
|
|
1604
|
+
"source": {
|
|
1605
|
+
"description": "Optional host/source label for adapter-originated focus. Defaults to mcp. Use codex from the Codex app adapter."
|
|
1606
|
+
},
|
|
1607
|
+
"tools": {
|
|
1608
|
+
"description": "Tool policy patch: allowed/excluded/approvalRequired arrays."
|
|
1609
|
+
},
|
|
1610
|
+
"prompt": {
|
|
1611
|
+
"type": "object",
|
|
1612
|
+
"properties": {
|
|
1613
|
+
"systemAppend": {
|
|
1614
|
+
"type": "string"
|
|
1615
|
+
},
|
|
1616
|
+
"mode": {
|
|
1617
|
+
"type": "string"
|
|
1618
|
+
}
|
|
1619
|
+
}
|
|
1620
|
+
},
|
|
1621
|
+
"scope": {
|
|
1622
|
+
"description": "Scope fence (human-owned, set from the workbench): { nodeIds, padding? } limits agent WRITES to those nodes plus padding px around them; null clears it. Agent calls that include it are refused (403) — read policy.scope instead."
|
|
1623
|
+
},
|
|
1624
|
+
"agentScopes": {
|
|
1625
|
+
"description": "Per-agent territories: writer key (agentId or source) → { nodeIds, padding? } | null. The orchestration surface — fence each worker to its lane; you cannot set your own key.",
|
|
1626
|
+
"type": "object",
|
|
1627
|
+
"propertyNames": {
|
|
1628
|
+
"type": "string"
|
|
1629
|
+
},
|
|
1630
|
+
"additionalProperties": {
|
|
1631
|
+
"anyOf": [
|
|
1632
|
+
{
|
|
1633
|
+
"type": "object",
|
|
1634
|
+
"properties": {
|
|
1635
|
+
"nodeIds": {
|
|
1636
|
+
"type": "array",
|
|
1637
|
+
"items": {
|
|
1638
|
+
"type": "string"
|
|
1639
|
+
}
|
|
1640
|
+
},
|
|
1641
|
+
"padding": {
|
|
1642
|
+
"type": "number"
|
|
1643
|
+
}
|
|
1644
|
+
},
|
|
1645
|
+
"required": [
|
|
1646
|
+
"nodeIds"
|
|
1647
|
+
]
|
|
1648
|
+
},
|
|
1649
|
+
{
|
|
1650
|
+
"type": "null"
|
|
1651
|
+
}
|
|
1652
|
+
]
|
|
1653
|
+
}
|
|
1654
|
+
},
|
|
1655
|
+
"host": {
|
|
1656
|
+
"description": "Host identifier (e.g. copilot, codex).",
|
|
1657
|
+
"type": "string"
|
|
1658
|
+
},
|
|
1659
|
+
"canvas": {
|
|
1660
|
+
"type": "boolean"
|
|
1661
|
+
},
|
|
1662
|
+
"hooks": {
|
|
1663
|
+
"type": "boolean"
|
|
1664
|
+
},
|
|
1665
|
+
"sessionMessaging": {
|
|
1666
|
+
"type": "boolean"
|
|
1667
|
+
},
|
|
1668
|
+
"permissions": {
|
|
1669
|
+
"type": "boolean"
|
|
1670
|
+
},
|
|
1671
|
+
"files": {
|
|
1672
|
+
"type": "boolean"
|
|
1673
|
+
},
|
|
1674
|
+
"uiPrompts": {
|
|
1675
|
+
"type": "boolean"
|
|
1676
|
+
},
|
|
1677
|
+
"raw": {
|
|
1678
|
+
"description": "Optional raw capability payload for diagnostics.",
|
|
1679
|
+
"type": "object",
|
|
1680
|
+
"propertyNames": {
|
|
1681
|
+
"type": "string"
|
|
1682
|
+
},
|
|
1683
|
+
"additionalProperties": {}
|
|
1684
|
+
},
|
|
1685
|
+
"agentId": {
|
|
1686
|
+
"description": "Stable identity for a genuinely separate agent, not a task name. Omit for the main agent when a host adapter already owns its session.",
|
|
1687
|
+
"anyOf": [
|
|
1688
|
+
{
|
|
1689
|
+
"type": "string",
|
|
1690
|
+
"minLength": 1,
|
|
1691
|
+
"maxLength": 80
|
|
1692
|
+
},
|
|
1693
|
+
{
|
|
1694
|
+
"type": "null"
|
|
1695
|
+
}
|
|
1696
|
+
]
|
|
1697
|
+
},
|
|
1698
|
+
"label": {
|
|
1699
|
+
"description": "Display name for this writer; use detail for the current task",
|
|
1700
|
+
"type": "string",
|
|
1701
|
+
"minLength": 1,
|
|
1702
|
+
"maxLength": 120
|
|
1703
|
+
},
|
|
1704
|
+
"phase": {
|
|
1705
|
+
"description": "idle | thinking | tooling | waiting-approval",
|
|
1706
|
+
"type": "string",
|
|
1707
|
+
"enum": [
|
|
1708
|
+
"idle",
|
|
1709
|
+
"thinking",
|
|
1710
|
+
"tooling",
|
|
1711
|
+
"waiting-approval"
|
|
1712
|
+
]
|
|
1713
|
+
},
|
|
1714
|
+
"detail": {
|
|
1715
|
+
"description": "Tool / step name shown beside the phase",
|
|
1716
|
+
"anyOf": [
|
|
1717
|
+
{
|
|
1718
|
+
"type": "string",
|
|
1719
|
+
"maxLength": 200
|
|
1720
|
+
},
|
|
1721
|
+
{
|
|
1722
|
+
"type": "null"
|
|
1723
|
+
}
|
|
1724
|
+
]
|
|
1725
|
+
},
|
|
1726
|
+
"focusNodeId": {
|
|
1727
|
+
"description": "Node the agent is working on",
|
|
1728
|
+
"anyOf": [
|
|
1729
|
+
{
|
|
1730
|
+
"type": "string",
|
|
1731
|
+
"maxLength": 200
|
|
1732
|
+
},
|
|
1733
|
+
{
|
|
1734
|
+
"type": "null"
|
|
1735
|
+
}
|
|
1736
|
+
]
|
|
1737
|
+
},
|
|
1738
|
+
"cursor": {
|
|
1739
|
+
"description": "Agent cursor in world coordinates",
|
|
1740
|
+
"anyOf": [
|
|
1741
|
+
{
|
|
1742
|
+
"type": "object",
|
|
1743
|
+
"properties": {
|
|
1744
|
+
"x": {
|
|
1745
|
+
"type": "number"
|
|
1746
|
+
},
|
|
1747
|
+
"y": {
|
|
1748
|
+
"type": "number"
|
|
1749
|
+
}
|
|
1750
|
+
},
|
|
1751
|
+
"required": [
|
|
1752
|
+
"x",
|
|
1753
|
+
"y"
|
|
1754
|
+
]
|
|
1755
|
+
},
|
|
1756
|
+
{
|
|
1757
|
+
"type": "null"
|
|
1758
|
+
}
|
|
1759
|
+
]
|
|
1760
|
+
},
|
|
1761
|
+
"attached": {
|
|
1762
|
+
"description": "true attaches a session; false detaches it. Read presence first and reuse your host adapter session instead of attaching another. Only detach sessions you own.",
|
|
1763
|
+
"type": "boolean"
|
|
1764
|
+
},
|
|
1765
|
+
"contextUsage": {
|
|
1766
|
+
"description": "The agent's real token window as {used,total} — shown on the board's context meter instead of the pinned-context estimate (null clears it)",
|
|
1767
|
+
"anyOf": [
|
|
1768
|
+
{
|
|
1769
|
+
"type": "object",
|
|
1770
|
+
"properties": {
|
|
1771
|
+
"used": {
|
|
1772
|
+
"type": "number",
|
|
1773
|
+
"minimum": 0
|
|
1774
|
+
},
|
|
1775
|
+
"total": {
|
|
1776
|
+
"type": "number",
|
|
1777
|
+
"exclusiveMinimum": 0
|
|
1778
|
+
}
|
|
1779
|
+
},
|
|
1780
|
+
"required": [
|
|
1781
|
+
"used",
|
|
1782
|
+
"total"
|
|
1783
|
+
]
|
|
1784
|
+
},
|
|
1785
|
+
{
|
|
1786
|
+
"type": "null"
|
|
1787
|
+
}
|
|
1788
|
+
]
|
|
1789
|
+
}
|
|
1790
|
+
},
|
|
1791
|
+
"required": [
|
|
1792
|
+
"action"
|
|
1793
|
+
],
|
|
1794
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1795
|
+
"additionalProperties": {}
|
|
1796
|
+
},
|
|
1797
|
+
"execution": {
|
|
1798
|
+
"taskSupport": "forbidden"
|
|
1799
|
+
}
|
|
1800
|
+
},
|
|
1801
|
+
{
|
|
1802
|
+
"name": "canvas_ax_work",
|
|
1803
|
+
"description": "Manage canvas-bound AX work items and review annotations. Action \"add\" creates a work item (title, optional status todo|in-progress|blocked|done|cancelled, detail, nodeIds); \"update\" patches a work item by id (title/status/detail/nodeIds); \"annotate\" adds a review annotation (comment/finding) anchored to a node, file, or region (body, kind, severity, anchorType, nodeId/file/region). Work items and review annotations participate in snapshots and are exposed via canvas://ax-work.",
|
|
1804
|
+
"inputSchema": {
|
|
1805
|
+
"type": "object",
|
|
1806
|
+
"properties": {
|
|
1807
|
+
"action": {
|
|
1808
|
+
"type": "string",
|
|
1809
|
+
"enum": [
|
|
1810
|
+
"add",
|
|
1811
|
+
"update",
|
|
1812
|
+
"annotate"
|
|
1813
|
+
],
|
|
1814
|
+
"description": "Operation to perform: add | update | annotate."
|
|
1815
|
+
},
|
|
1816
|
+
"title": {
|
|
1817
|
+
"description": "Short title of the work item."
|
|
1818
|
+
},
|
|
1819
|
+
"status": {
|
|
1820
|
+
"description": "Work item status. Defaults to todo."
|
|
1821
|
+
},
|
|
1822
|
+
"detail": {
|
|
1823
|
+
"description": "Optional longer description."
|
|
1824
|
+
},
|
|
1825
|
+
"nodeIds": {
|
|
1826
|
+
"description": "Optional node IDs this work item is tied to."
|
|
1827
|
+
},
|
|
1828
|
+
"source": {
|
|
1829
|
+
"description": "Optional host/source label. Defaults to mcp."
|
|
1830
|
+
},
|
|
1831
|
+
"agentId": {
|
|
1832
|
+
"description": "Optional per-agent identity within the host."
|
|
1833
|
+
},
|
|
1834
|
+
"id": {
|
|
1835
|
+
"type": "string",
|
|
1836
|
+
"description": "Work item ID to update."
|
|
1837
|
+
},
|
|
1838
|
+
"body": {
|
|
1839
|
+
"type": "string",
|
|
1840
|
+
"description": "Annotation body text."
|
|
1841
|
+
},
|
|
1842
|
+
"kind": {
|
|
1843
|
+
"description": "Annotation kind. Default comment.",
|
|
1844
|
+
"type": "string",
|
|
1845
|
+
"enum": [
|
|
1846
|
+
"comment",
|
|
1847
|
+
"finding"
|
|
1848
|
+
]
|
|
1849
|
+
},
|
|
1850
|
+
"severity": {
|
|
1851
|
+
"description": "Severity. Default info.",
|
|
1852
|
+
"type": "string",
|
|
1853
|
+
"enum": [
|
|
1854
|
+
"info",
|
|
1855
|
+
"warning",
|
|
1856
|
+
"error"
|
|
1857
|
+
]
|
|
1858
|
+
},
|
|
1859
|
+
"anchorType": {
|
|
1860
|
+
"description": "Anchor type. Default node.",
|
|
1861
|
+
"type": "string",
|
|
1862
|
+
"enum": [
|
|
1863
|
+
"node",
|
|
1864
|
+
"file",
|
|
1865
|
+
"region"
|
|
1866
|
+
]
|
|
1867
|
+
},
|
|
1868
|
+
"nodeId": {
|
|
1869
|
+
"description": "Node ID when anchorType is node.",
|
|
1870
|
+
"type": "string"
|
|
1871
|
+
},
|
|
1872
|
+
"file": {
|
|
1873
|
+
"description": "File path when anchorType is file.",
|
|
1874
|
+
"type": "string"
|
|
1875
|
+
},
|
|
1876
|
+
"region": {
|
|
1877
|
+
"description": "Region descriptor when anchorType is region.",
|
|
1878
|
+
"type": "object",
|
|
1879
|
+
"properties": {
|
|
1880
|
+
"line": {
|
|
1881
|
+
"type": "number"
|
|
1882
|
+
},
|
|
1883
|
+
"endLine": {
|
|
1884
|
+
"type": "number"
|
|
1885
|
+
},
|
|
1886
|
+
"label": {
|
|
1887
|
+
"type": "string"
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1890
|
+
},
|
|
1891
|
+
"author": {
|
|
1892
|
+
"description": "Optional author label.",
|
|
1893
|
+
"type": "string"
|
|
1894
|
+
}
|
|
1895
|
+
},
|
|
1896
|
+
"required": [
|
|
1897
|
+
"action"
|
|
1898
|
+
],
|
|
1899
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
1900
|
+
"additionalProperties": {}
|
|
1901
|
+
},
|
|
1902
|
+
"execution": {
|
|
1903
|
+
"taskSupport": "forbidden"
|
|
1904
|
+
}
|
|
1905
|
+
},
|
|
1906
|
+
{
|
|
1907
|
+
"name": "canvas_ax_gate",
|
|
1908
|
+
"description": "Drive the full lifecycle of a canvas-bound AX gate — request, resolve, or await — across all three gate kinds. kind: approval | elicitation | mode. action: request (open a pending gate), resolve (approval/mode take a decision approved|rejected; elicitation takes a response object), await (block until the gate leaves pending or timeoutMs elapses; 0 = immediate read). Gates are canvas-bound, snapshotted, and exposed via canvas://ax-work. NOTE: the approval machine-readable action identifier is passed as approvalAction (the action field is the lifecycle discriminator).",
|
|
1909
|
+
"inputSchema": {
|
|
1910
|
+
"type": "object",
|
|
1911
|
+
"properties": {
|
|
1912
|
+
"action": {
|
|
1913
|
+
"type": "string",
|
|
1914
|
+
"enum": [
|
|
1915
|
+
"request",
|
|
1916
|
+
"resolve",
|
|
1917
|
+
"await"
|
|
1918
|
+
],
|
|
1919
|
+
"description": "Operation to perform: request | resolve | await (× kind: approval | elicitation | mode)."
|
|
1920
|
+
},
|
|
1921
|
+
"kind": {
|
|
1922
|
+
"type": "string",
|
|
1923
|
+
"enum": [
|
|
1924
|
+
"approval",
|
|
1925
|
+
"elicitation",
|
|
1926
|
+
"mode"
|
|
1927
|
+
],
|
|
1928
|
+
"description": "Gate kind: approval | elicitation | mode."
|
|
1929
|
+
},
|
|
1930
|
+
"title": {
|
|
1931
|
+
"type": "string",
|
|
1932
|
+
"description": "Short title of what needs approval."
|
|
1933
|
+
},
|
|
1934
|
+
"detail": {
|
|
1935
|
+
"description": "Optional explanation of the action and its impact.",
|
|
1936
|
+
"type": "string"
|
|
1937
|
+
},
|
|
1938
|
+
"approvalAction": {
|
|
1939
|
+
"description": "Optional machine-readable action identifier the approval gates.",
|
|
1940
|
+
"type": "string"
|
|
1941
|
+
},
|
|
1942
|
+
"nodeIds": {
|
|
1943
|
+
"description": "Optional node IDs this approval relates to."
|
|
1944
|
+
},
|
|
1945
|
+
"ttlMs": {
|
|
1946
|
+
"description": "Unattended-approval TTL in ms; the gate auto-holds if unanswered (default 5 min, max 24 h).",
|
|
1947
|
+
"type": "number"
|
|
1948
|
+
},
|
|
1949
|
+
"source": {
|
|
1950
|
+
"description": "Optional host/source label. Defaults to mcp."
|
|
1951
|
+
},
|
|
1952
|
+
"id": {
|
|
1953
|
+
"description": "Approval gate ID to resolve.",
|
|
1954
|
+
"type": "string"
|
|
1955
|
+
},
|
|
1956
|
+
"decision": {
|
|
1957
|
+
"description": "Approval decision."
|
|
1958
|
+
},
|
|
1959
|
+
"resolution": {
|
|
1960
|
+
"description": "Optional human-readable resolution note."
|
|
1961
|
+
},
|
|
1962
|
+
"timeoutMs": {
|
|
1963
|
+
"description": "Max ms to block (0 = immediate read; capped at 120000)."
|
|
1964
|
+
},
|
|
1965
|
+
"prompt": {
|
|
1966
|
+
"type": "string",
|
|
1967
|
+
"description": "The question or instruction for the human."
|
|
1968
|
+
},
|
|
1969
|
+
"fields": {
|
|
1970
|
+
"description": "Optional field names to request (a simple structured form).",
|
|
1971
|
+
"type": "array",
|
|
1972
|
+
"items": {
|
|
1973
|
+
"type": "string"
|
|
1974
|
+
}
|
|
1975
|
+
},
|
|
1976
|
+
"response": {
|
|
1977
|
+
"type": "object",
|
|
1978
|
+
"propertyNames": {
|
|
1979
|
+
"type": "string"
|
|
1980
|
+
},
|
|
1981
|
+
"additionalProperties": {},
|
|
1982
|
+
"description": "The structured answer."
|
|
1983
|
+
},
|
|
1984
|
+
"mode": {
|
|
1985
|
+
"type": "string",
|
|
1986
|
+
"enum": [
|
|
1987
|
+
"plan",
|
|
1988
|
+
"execute",
|
|
1989
|
+
"autonomous"
|
|
1990
|
+
],
|
|
1991
|
+
"description": "Requested target mode."
|
|
1992
|
+
},
|
|
1993
|
+
"reason": {
|
|
1994
|
+
"type": "string"
|
|
1995
|
+
}
|
|
1996
|
+
},
|
|
1997
|
+
"required": [
|
|
1998
|
+
"action",
|
|
1999
|
+
"kind"
|
|
2000
|
+
],
|
|
2001
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2002
|
+
"additionalProperties": {}
|
|
2003
|
+
},
|
|
2004
|
+
"execution": {
|
|
2005
|
+
"taskSupport": "forbidden"
|
|
2006
|
+
}
|
|
2007
|
+
},
|
|
2008
|
+
{
|
|
2009
|
+
"name": "canvas_ax_timeline",
|
|
2010
|
+
"description": "Read or write the bounded PMX AX timeline. Action \"read\" returns recent agent-events, evidence, and steering messages plus counts (limit); \"record-event\" records a normalized agent-event (kind prompt|assistant-message|tool-start|tool-result|failure|approval|steering, summary, detail, data); \"add-evidence\" records an evidence item (kind logs|tool-result|screenshot|file|diff|test-output, title, body, ref); \"send-steering\" records a steering message (message); \"reads\" returns the context read log — which canvas context each agent read and which pinned nodes reached it — with a per-consumer summary (limit); \"read-status\" returns, per node on a board, when an agent last read its content, who, and the content revision it read (board). Timeline rows persist for diagnostics/continuity but are not restored by snapshots; exposed via canvas://ax-timeline.",
|
|
2011
|
+
"inputSchema": {
|
|
2012
|
+
"type": "object",
|
|
2013
|
+
"properties": {
|
|
2014
|
+
"action": {
|
|
2015
|
+
"type": "string",
|
|
2016
|
+
"enum": [
|
|
2017
|
+
"read",
|
|
2018
|
+
"record-event",
|
|
2019
|
+
"add-evidence",
|
|
2020
|
+
"send-steering",
|
|
2021
|
+
"reads",
|
|
2022
|
+
"read-status"
|
|
2023
|
+
],
|
|
2024
|
+
"description": "Operation to perform: read | record-event | add-evidence | send-steering | reads | read-status."
|
|
2025
|
+
},
|
|
2026
|
+
"limit": {
|
|
2027
|
+
"description": "Max rows per timeline table (default 50, max 200)."
|
|
2028
|
+
},
|
|
2029
|
+
"kind": {
|
|
2030
|
+
"description": "Normalized event kind."
|
|
2031
|
+
},
|
|
2032
|
+
"summary": {
|
|
2033
|
+
"type": "string",
|
|
2034
|
+
"description": "Short human-readable summary of the event."
|
|
2035
|
+
},
|
|
2036
|
+
"detail": {
|
|
2037
|
+
"description": "Optional longer detail or payload text.",
|
|
2038
|
+
"type": "string"
|
|
2039
|
+
},
|
|
2040
|
+
"nodeIds": {
|
|
2041
|
+
"description": "Optional node IDs this event relates to."
|
|
2042
|
+
},
|
|
2043
|
+
"data": {
|
|
2044
|
+
"description": "Optional structured data payload."
|
|
2045
|
+
},
|
|
2046
|
+
"source": {
|
|
2047
|
+
"description": "Optional host/source label. Defaults to mcp."
|
|
2048
|
+
},
|
|
2049
|
+
"agentId": {
|
|
2050
|
+
"description": "Optional per-agent identity within the host."
|
|
2051
|
+
},
|
|
2052
|
+
"title": {
|
|
2053
|
+
"type": "string",
|
|
2054
|
+
"description": "Short human-readable title for the evidence."
|
|
2055
|
+
},
|
|
2056
|
+
"body": {
|
|
2057
|
+
"description": "Optional inline body/content.",
|
|
2058
|
+
"type": "string"
|
|
2059
|
+
},
|
|
2060
|
+
"ref": {
|
|
2061
|
+
"description": "Optional reference (path, URL, or external locator).",
|
|
2062
|
+
"type": "string"
|
|
2063
|
+
},
|
|
2064
|
+
"message": {
|
|
2065
|
+
"type": "string",
|
|
2066
|
+
"description": "The steering instruction to deliver to the active agent session."
|
|
2067
|
+
},
|
|
2068
|
+
"target": {
|
|
2069
|
+
"description": "The agentId/consumer this steer is addressed to. Omit to broadcast to all consumers.",
|
|
2070
|
+
"type": "string",
|
|
2071
|
+
"minLength": 1,
|
|
2072
|
+
"maxLength": 80
|
|
2073
|
+
},
|
|
2074
|
+
"board": {
|
|
2075
|
+
"description": "Board id; defaults to the open board.",
|
|
2076
|
+
"type": "string"
|
|
2077
|
+
}
|
|
2078
|
+
},
|
|
2079
|
+
"required": [
|
|
2080
|
+
"action"
|
|
2081
|
+
],
|
|
2082
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2083
|
+
"additionalProperties": {}
|
|
2084
|
+
},
|
|
2085
|
+
"execution": {
|
|
2086
|
+
"taskSupport": "forbidden"
|
|
2087
|
+
}
|
|
2088
|
+
},
|
|
2089
|
+
{
|
|
2090
|
+
"name": "canvas_ax_delivery",
|
|
2091
|
+
"description": "Adapterless PMX AX delivery. Action \"claim\" claims pending undelivered steering for a consumer (loop-safe — never returns steering the consumer originated) plus pendingActivity (open work items / approval gates / elicitations / mode requests awaiting the agent); \"mark\" marks a steering message delivered by id so it is not handed out again. Resolve pendingActivity via canvas_ax_gate / canvas_ax_work, not mark.",
|
|
2092
|
+
"inputSchema": {
|
|
2093
|
+
"type": "object",
|
|
2094
|
+
"properties": {
|
|
2095
|
+
"action": {
|
|
2096
|
+
"type": "string",
|
|
2097
|
+
"enum": [
|
|
2098
|
+
"claim",
|
|
2099
|
+
"mark"
|
|
2100
|
+
],
|
|
2101
|
+
"description": "Operation to perform: claim | mark."
|
|
2102
|
+
},
|
|
2103
|
+
"consumer": {
|
|
2104
|
+
"description": "Consumer/source label to exclude from results (e.g. copilot, mcp)."
|
|
2105
|
+
},
|
|
2106
|
+
"limit": {
|
|
2107
|
+
"description": "Max steering messages to return.",
|
|
2108
|
+
"type": "number"
|
|
2109
|
+
},
|
|
2110
|
+
"order": {
|
|
2111
|
+
"description": "Order of returned steering: \"oldest\" (FIFO, default) for ordered processing, or \"newest\" first to see the latest browser action when limited.",
|
|
2112
|
+
"type": "string",
|
|
2113
|
+
"enum": [
|
|
2114
|
+
"newest",
|
|
2115
|
+
"oldest"
|
|
2116
|
+
]
|
|
2117
|
+
},
|
|
2118
|
+
"timeoutMs": {
|
|
2119
|
+
"description": "Max ms to block until steering arrives (0/omitted = immediate read).",
|
|
2120
|
+
"type": "number",
|
|
2121
|
+
"minimum": 0,
|
|
2122
|
+
"maximum": 120000
|
|
2123
|
+
},
|
|
2124
|
+
"id": {
|
|
2125
|
+
"type": "string",
|
|
2126
|
+
"description": "The steering message id to mark delivered."
|
|
2127
|
+
}
|
|
2128
|
+
},
|
|
2129
|
+
"required": [
|
|
2130
|
+
"action"
|
|
2131
|
+
],
|
|
2132
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2133
|
+
"additionalProperties": {}
|
|
2134
|
+
},
|
|
2135
|
+
"execution": {
|
|
2136
|
+
"taskSupport": "forbidden"
|
|
2137
|
+
}
|
|
2138
|
+
},
|
|
2139
|
+
{
|
|
2140
|
+
"name": "canvas_intent",
|
|
2141
|
+
"description": "Ghost Cursor of Intent — announce the spatial move you are ABOUT to make so the canvas paints a faint pre-commit placeholder (legibility: the human sees the next move forming, and can veto it). Action \"signal\" registers an intent (kind create|move|connect|remove|edit; pass position for move — omit it for create to ghost where the canvas will place the node, and the linked create lands there — nodeId for move/edit/remove, edge for connect; optional label, reason, confidence 0..1, seq, ttlMs, and a stable id); \"update\" patches a live intent by id; \"clear\" abandons/dissolves it. To make veto authoritative, pass the returned id as intentId on the real canvas_node/canvas_edge/canvas_group/canvas_render mutation: vetoed or expired intents are rejected, and a successful linked mutation settles the ghost automatically. Intents are ephemeral presence: never persisted, never snapshotted, auto-expire (~8s).",
|
|
2142
|
+
"inputSchema": {
|
|
2143
|
+
"type": "object",
|
|
2144
|
+
"properties": {
|
|
2145
|
+
"action": {
|
|
2146
|
+
"type": "string",
|
|
2147
|
+
"enum": [
|
|
2148
|
+
"signal",
|
|
2149
|
+
"update",
|
|
2150
|
+
"clear"
|
|
2151
|
+
],
|
|
2152
|
+
"description": "Operation to perform: signal | update | clear."
|
|
2153
|
+
},
|
|
2154
|
+
"kind": {
|
|
2155
|
+
"description": "create | move | connect | remove | edit — the move about to be made.",
|
|
2156
|
+
"type": "string",
|
|
2157
|
+
"enum": [
|
|
2158
|
+
"create",
|
|
2159
|
+
"move",
|
|
2160
|
+
"connect",
|
|
2161
|
+
"remove",
|
|
2162
|
+
"edit"
|
|
2163
|
+
]
|
|
2164
|
+
},
|
|
2165
|
+
"position": {
|
|
2166
|
+
"description": "World coords: the destination of a move, or where a create forms. Omit it for a create to ghost where the canvas will place the node.",
|
|
2167
|
+
"type": "object",
|
|
2168
|
+
"properties": {
|
|
2169
|
+
"x": {
|
|
2170
|
+
"type": "number"
|
|
2171
|
+
},
|
|
2172
|
+
"y": {
|
|
2173
|
+
"type": "number"
|
|
2174
|
+
}
|
|
2175
|
+
},
|
|
2176
|
+
"required": [
|
|
2177
|
+
"x",
|
|
2178
|
+
"y"
|
|
2179
|
+
]
|
|
2180
|
+
},
|
|
2181
|
+
"nodeId": {
|
|
2182
|
+
"description": "The existing node a move/edit/remove targets.",
|
|
2183
|
+
"type": "string"
|
|
2184
|
+
},
|
|
2185
|
+
"edge": {
|
|
2186
|
+
"description": "connect: the edge about to be drawn (from/to node ids + type).",
|
|
2187
|
+
"type": "object",
|
|
2188
|
+
"properties": {
|
|
2189
|
+
"from": {
|
|
2190
|
+
"type": "string"
|
|
2191
|
+
},
|
|
2192
|
+
"to": {
|
|
2193
|
+
"type": "string"
|
|
2194
|
+
},
|
|
2195
|
+
"type": {
|
|
2196
|
+
"type": "string",
|
|
2197
|
+
"enum": [
|
|
2198
|
+
"relation",
|
|
2199
|
+
"depends-on",
|
|
2200
|
+
"flow",
|
|
2201
|
+
"references"
|
|
2202
|
+
]
|
|
2203
|
+
}
|
|
2204
|
+
},
|
|
2205
|
+
"required": [
|
|
2206
|
+
"from",
|
|
2207
|
+
"to",
|
|
2208
|
+
"type"
|
|
2209
|
+
]
|
|
2210
|
+
},
|
|
2211
|
+
"nodeType": {
|
|
2212
|
+
"description": "Node type the ghost renders (icon + type badge).",
|
|
2213
|
+
"type": "string"
|
|
2214
|
+
},
|
|
2215
|
+
"label": {
|
|
2216
|
+
"description": "Short action label shown on the ghost chip (\"Add evidence\").",
|
|
2217
|
+
"type": "string"
|
|
2218
|
+
},
|
|
2219
|
+
"reason": {
|
|
2220
|
+
"description": "Why — shown beneath the ghost. The legibility payoff.",
|
|
2221
|
+
"type": "string"
|
|
2222
|
+
},
|
|
2223
|
+
"confidence": {
|
|
2224
|
+
"description": "0..1 → ghost opacity/solidity.",
|
|
2225
|
+
"type": "number"
|
|
2226
|
+
},
|
|
2227
|
+
"seq": {
|
|
2228
|
+
"description": "Ordering hint for staged-batch ghosts (numbered previsualization).",
|
|
2229
|
+
"type": "number"
|
|
2230
|
+
},
|
|
2231
|
+
"ttlMs": {
|
|
2232
|
+
"description": "Auto-expire after this many ms (default 8000, max 60000).",
|
|
2233
|
+
"type": "number"
|
|
2234
|
+
},
|
|
2235
|
+
"id": {
|
|
2236
|
+
"description": "Stable id to update/clear/veto later; auto-generated if omitted.",
|
|
2237
|
+
"type": "string"
|
|
2238
|
+
},
|
|
2239
|
+
"source": {
|
|
2240
|
+
"description": "Optional source label of the signalling surface.",
|
|
2241
|
+
"type": "string"
|
|
2242
|
+
},
|
|
2243
|
+
"vetoed": {
|
|
2244
|
+
"description": "Veto the intent: dissolves the ghost AND poisons the id so a later linked settle is rejected (same as clear { vetoed:true }).",
|
|
2245
|
+
"type": "boolean"
|
|
2246
|
+
},
|
|
2247
|
+
"settledNodeId": {
|
|
2248
|
+
"description": "The real node this intent became — triggers the settle morph.",
|
|
2249
|
+
"type": "string"
|
|
2250
|
+
}
|
|
2251
|
+
},
|
|
2252
|
+
"required": [
|
|
2253
|
+
"action"
|
|
2254
|
+
],
|
|
2255
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
2256
|
+
"additionalProperties": {}
|
|
2257
|
+
},
|
|
2258
|
+
"execution": {
|
|
2259
|
+
"taskSupport": "forbidden"
|
|
2260
|
+
}
|
|
2261
|
+
},
|
|
2262
|
+
{
|
|
2263
|
+
"name": "canvas_ax_interaction",
|
|
2264
|
+
"description": "Submit a node-originated AX interaction: a capability-gated, validated event from an eligible node that maps onto an AX operation (work item, evidence, approval, review, focus, steering, event). Returns { ok: false, code } if the node type/metadata does not allow the interaction type or the payload is invalid.",
|
|
2265
|
+
"inputSchema": {
|
|
2266
|
+
"type": "object",
|
|
2267
|
+
"properties": {
|
|
2268
|
+
"type": {
|
|
2269
|
+
"type": "string",
|
|
2270
|
+
"enum": [
|
|
2271
|
+
"ax.event.record",
|
|
2272
|
+
"ax.steer",
|
|
2273
|
+
"ax.work.create",
|
|
2274
|
+
"ax.work.update",
|
|
2275
|
+
"ax.evidence.add",
|
|
2276
|
+
"ax.approval.request",
|
|
2277
|
+
"ax.approval.resolve",
|
|
2278
|
+
"ax.review.add",
|
|
2279
|
+
"ax.focus.set",
|
|
2280
|
+
"ax.command.invoke",
|
|
2281
|
+
"ax.elicitation.request",
|
|
2282
|
+
"ax.mode.request",
|
|
2283
|
+
"ax.flow.materialize"
|
|
2284
|
+
],
|
|
2285
|
+
"description": "Interaction type, e.g. ax.work.create, ax.evidence.add, ax.focus.set."
|
|
2286
|
+
},
|
|
2287
|
+
"sourceNodeId": {
|
|
2288
|
+
"type": "string",
|
|
2289
|
+
"description": "The node emitting the interaction."
|
|
2290
|
+
},
|
|
2291
|
+
"payload": {
|
|
2292
|
+
"description": "Type-specific payload, e.g. {\"title\":\"...\"} for ax.work.create.",
|
|
2293
|
+
"type": "object",
|
|
2294
|
+
"propertyNames": {
|
|
2295
|
+
"type": "string"
|
|
2296
|
+
},
|
|
2297
|
+
"additionalProperties": {}
|
|
2298
|
+
},
|
|
2299
|
+
"sourceSurface": {
|
|
2300
|
+
"type": "string",
|
|
2301
|
+
"enum": [
|
|
2302
|
+
"native-node",
|
|
2303
|
+
"json-render",
|
|
2304
|
+
"html-node",
|
|
2305
|
+
"mcp-app",
|
|
2306
|
+
"adapter"
|
|
2307
|
+
]
|
|
2308
|
+
},
|
|
2309
|
+
"correlationId": {
|
|
2310
|
+
"type": "string"
|
|
2311
|
+
},
|
|
2312
|
+
"source": {
|
|
2313
|
+
"description": "Optional host/source label. Defaults to mcp.",
|
|
2314
|
+
"type": "string",
|
|
2315
|
+
"enum": [
|
|
2316
|
+
"agent",
|
|
2317
|
+
"amp",
|
|
2318
|
+
"api",
|
|
2319
|
+
"browser",
|
|
2320
|
+
"cli",
|
|
2321
|
+
"codex",
|
|
2322
|
+
"copilot",
|
|
2323
|
+
"mcp",
|
|
2324
|
+
"sdk",
|
|
2325
|
+
"system"
|
|
2326
|
+
]
|
|
2327
|
+
}
|
|
2328
|
+
},
|
|
2329
|
+
"required": [
|
|
2330
|
+
"type",
|
|
2331
|
+
"sourceNodeId"
|
|
2332
|
+
],
|
|
2333
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
2334
|
+
},
|
|
2335
|
+
"execution": {
|
|
2336
|
+
"taskSupport": "forbidden"
|
|
2337
|
+
}
|
|
2338
|
+
},
|
|
2339
|
+
{
|
|
2340
|
+
"name": "canvas_ingest_activity",
|
|
2341
|
+
"description": "Ingest a normalized agent activity (a tool/session event your harness forwards) so the board reacts automatically — primitive A, makes AX bidirectional. Always records a timeline event; kind-driven default reactions (overridable per call via `reactions`): failure/error → work item (blocked) + review finding + evidence (logs); tool-result + outcome:\"success\" → evidence (tool-result); everything else (tool-start, session-*, command, note) → event only. Set any reaction to false to suppress it, or to an object to override its fields. Returns { event, workItem, evidence, review }.",
|
|
2342
|
+
"inputSchema": {
|
|
2343
|
+
"type": "object",
|
|
2344
|
+
"properties": {
|
|
2345
|
+
"kind": {
|
|
2346
|
+
"type": "string",
|
|
2347
|
+
"enum": [
|
|
2348
|
+
"tool-start",
|
|
2349
|
+
"tool-result",
|
|
2350
|
+
"failure",
|
|
2351
|
+
"error",
|
|
2352
|
+
"session-start",
|
|
2353
|
+
"session-end",
|
|
2354
|
+
"command",
|
|
2355
|
+
"note"
|
|
2356
|
+
]
|
|
2357
|
+
},
|
|
2358
|
+
"title": {
|
|
2359
|
+
"type": "string"
|
|
2360
|
+
},
|
|
2361
|
+
"summary": {
|
|
2362
|
+
"type": "string"
|
|
2363
|
+
},
|
|
2364
|
+
"outcome": {
|
|
2365
|
+
"type": "string",
|
|
2366
|
+
"enum": [
|
|
2367
|
+
"success",
|
|
2368
|
+
"failure"
|
|
2369
|
+
]
|
|
2370
|
+
},
|
|
2371
|
+
"ref": {
|
|
2372
|
+
"description": "A file path, URL, or commit the activity refers to (used as the review file anchor for failures).",
|
|
2373
|
+
"type": "string"
|
|
2374
|
+
},
|
|
2375
|
+
"nodeIds": {
|
|
2376
|
+
"type": "array",
|
|
2377
|
+
"items": {
|
|
2378
|
+
"type": "string"
|
|
2379
|
+
}
|
|
2380
|
+
},
|
|
2381
|
+
"data": {
|
|
2382
|
+
"type": "object",
|
|
2383
|
+
"propertyNames": {
|
|
2384
|
+
"type": "string"
|
|
2385
|
+
},
|
|
2386
|
+
"additionalProperties": {}
|
|
2387
|
+
},
|
|
2388
|
+
"reactions": {
|
|
2389
|
+
"description": "Override or suppress the kind-driven default reactions.",
|
|
2390
|
+
"type": "object",
|
|
2391
|
+
"properties": {
|
|
2392
|
+
"workItem": {
|
|
2393
|
+
"anyOf": [
|
|
2394
|
+
{
|
|
2395
|
+
"type": "boolean",
|
|
2396
|
+
"const": false
|
|
2397
|
+
},
|
|
2398
|
+
{
|
|
2399
|
+
"type": "object",
|
|
2400
|
+
"properties": {
|
|
2401
|
+
"status": {
|
|
2402
|
+
"type": "string",
|
|
2403
|
+
"enum": [
|
|
2404
|
+
"todo",
|
|
2405
|
+
"in-progress",
|
|
2406
|
+
"blocked",
|
|
2407
|
+
"done",
|
|
2408
|
+
"cancelled"
|
|
2409
|
+
]
|
|
2410
|
+
},
|
|
2411
|
+
"detail": {
|
|
2412
|
+
"anyOf": [
|
|
2413
|
+
{
|
|
2414
|
+
"type": "string"
|
|
2415
|
+
},
|
|
2416
|
+
{
|
|
2417
|
+
"type": "null"
|
|
2418
|
+
}
|
|
2419
|
+
]
|
|
2420
|
+
}
|
|
2421
|
+
}
|
|
2422
|
+
}
|
|
2423
|
+
]
|
|
2424
|
+
},
|
|
2425
|
+
"evidence": {
|
|
2426
|
+
"anyOf": [
|
|
2427
|
+
{
|
|
2428
|
+
"type": "boolean",
|
|
2429
|
+
"const": false
|
|
2430
|
+
},
|
|
2431
|
+
{
|
|
2432
|
+
"type": "object",
|
|
2433
|
+
"properties": {
|
|
2434
|
+
"kind": {
|
|
2435
|
+
"type": "string",
|
|
2436
|
+
"enum": [
|
|
2437
|
+
"logs",
|
|
2438
|
+
"tool-result",
|
|
2439
|
+
"screenshot",
|
|
2440
|
+
"file",
|
|
2441
|
+
"diff",
|
|
2442
|
+
"test-output"
|
|
2443
|
+
]
|
|
2444
|
+
},
|
|
2445
|
+
"body": {
|
|
2446
|
+
"anyOf": [
|
|
2447
|
+
{
|
|
2448
|
+
"type": "string"
|
|
2449
|
+
},
|
|
2450
|
+
{
|
|
2451
|
+
"type": "null"
|
|
2452
|
+
}
|
|
2453
|
+
]
|
|
2454
|
+
}
|
|
2455
|
+
}
|
|
2456
|
+
}
|
|
2457
|
+
]
|
|
2458
|
+
},
|
|
2459
|
+
"review": {
|
|
2460
|
+
"anyOf": [
|
|
2461
|
+
{
|
|
2462
|
+
"type": "boolean",
|
|
2463
|
+
"const": false
|
|
2464
|
+
},
|
|
2465
|
+
{
|
|
2466
|
+
"type": "object",
|
|
2467
|
+
"properties": {
|
|
2468
|
+
"severity": {
|
|
2469
|
+
"type": "string",
|
|
2470
|
+
"enum": [
|
|
2471
|
+
"info",
|
|
2472
|
+
"warning",
|
|
2473
|
+
"error"
|
|
2474
|
+
]
|
|
2475
|
+
},
|
|
2476
|
+
"kind": {
|
|
2477
|
+
"type": "string",
|
|
2478
|
+
"enum": [
|
|
2479
|
+
"comment",
|
|
2480
|
+
"finding"
|
|
2481
|
+
]
|
|
2482
|
+
},
|
|
2483
|
+
"anchorType": {
|
|
2484
|
+
"type": "string",
|
|
2485
|
+
"enum": [
|
|
2486
|
+
"node",
|
|
2487
|
+
"file",
|
|
2488
|
+
"region"
|
|
2489
|
+
]
|
|
2490
|
+
},
|
|
2491
|
+
"nodeId": {
|
|
2492
|
+
"anyOf": [
|
|
2493
|
+
{
|
|
2494
|
+
"type": "string"
|
|
2495
|
+
},
|
|
2496
|
+
{
|
|
2497
|
+
"type": "null"
|
|
2498
|
+
}
|
|
2499
|
+
]
|
|
2500
|
+
}
|
|
2501
|
+
}
|
|
2502
|
+
}
|
|
2503
|
+
]
|
|
2504
|
+
}
|
|
2505
|
+
}
|
|
2506
|
+
},
|
|
2507
|
+
"source": {
|
|
2508
|
+
"type": "string",
|
|
2509
|
+
"enum": [
|
|
2510
|
+
"agent",
|
|
2511
|
+
"amp",
|
|
2512
|
+
"api",
|
|
2513
|
+
"browser",
|
|
2514
|
+
"cli",
|
|
2515
|
+
"codex",
|
|
2516
|
+
"copilot",
|
|
2517
|
+
"mcp",
|
|
2518
|
+
"sdk",
|
|
2519
|
+
"system"
|
|
2520
|
+
]
|
|
2521
|
+
}
|
|
2522
|
+
},
|
|
2523
|
+
"required": [
|
|
2524
|
+
"kind",
|
|
2525
|
+
"title"
|
|
2526
|
+
],
|
|
2527
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
2528
|
+
},
|
|
2529
|
+
"execution": {
|
|
2530
|
+
"taskSupport": "forbidden"
|
|
2531
|
+
}
|
|
2532
|
+
},
|
|
2533
|
+
{
|
|
2534
|
+
"name": "canvas_screenshot",
|
|
2535
|
+
"description": "Capture a screenshot from the active Bun.WebView automation session. Returns both an MCP image payload and JSON metadata. Requires an active automation session started via canvas_webview with action \"start\".",
|
|
2536
|
+
"inputSchema": {
|
|
2537
|
+
"type": "object",
|
|
2538
|
+
"properties": {
|
|
2539
|
+
"format": {
|
|
2540
|
+
"description": "Screenshot format (default depends on Bun; png recommended)",
|
|
2541
|
+
"type": "string",
|
|
2542
|
+
"enum": [
|
|
2543
|
+
"png",
|
|
2544
|
+
"jpeg",
|
|
2545
|
+
"webp"
|
|
2546
|
+
]
|
|
2547
|
+
},
|
|
2548
|
+
"quality": {
|
|
2549
|
+
"description": "Optional quality for lossy formats",
|
|
2550
|
+
"type": "number"
|
|
2551
|
+
}
|
|
2552
|
+
},
|
|
2553
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
2554
|
+
},
|
|
2555
|
+
"execution": {
|
|
2556
|
+
"taskSupport": "forbidden"
|
|
2557
|
+
}
|
|
2558
|
+
}
|
|
2559
|
+
]
|
|
2560
|
+
}
|