Tool tree
gradeNot graded
join_boardAction
Identify the agent collaborating on this board. Call this before inspecting or changing the canvas so every later action has durable, visible provenance.
View tool JSON
{
"name": "join_board",
"kind": "act",
"impl": "imperative",
"description": "Identify the agent collaborating on this board. Call this before inspecting or changing the canvas so every later action has durable, visible provenance.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Human-readable collaborator name, such as Canvas agent."
},
"id": {
"type": "string",
"description": "Optional stable agent id reused across calls."
},
"color": {
"type": "string",
"description": "Optional CSS color for collaborator presence."
}
},
"required": [
"name"
],
"additionalProperties": false
},
"page": "/b/bf03061315de47dca9fb3935"
}inspect_canvasAction
Read structured shape, text, bounds, selection, and connection data plus workflow-agnostic composition diagnostics. Use selection for the user’s active context, viewport for visible work, or page for the whole board. After changing a board, inspect again and resolve overlap or connector-crossing warnings before presenting it.
View tool JSON
{
"name": "inspect_canvas",
"kind": "act",
"impl": "imperative",
"description": "Read structured shape, text, bounds, selection, and connection data plus workflow-agnostic composition diagnostics. Use selection for the user’s active context, viewport for visible work, or page for the whole board. After changing a board, inspect again and resolve overlap or connector-crossing warnings before presenting it.",
"inputSchema": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"selection",
"viewport",
"page"
],
"default": "viewport",
"description": "Which part of the canvas to inspect."
}
},
"required": [],
"additionalProperties": false
},
"page": "/b/bf03061315de47dca9fb3935"
}create_shapesAction
Create up to 40 notes, text labels, rectangles, ellipses, or diamonds on the Relay canvas. Returns exact ids, actual rendered bounds, and immediate full-board composition diagnostics. Visible text can make notes and structured cards grow beyond requested dimensions, so always use the returned bounds for the next placement. For a readable composition, keep one idea per shape, keep new clusters near the existing board, use short text labels for hierarchy, use rectangles for structured cards, and reserve notes for compact annotations. If a connected group grows beyond four cards, arrange it before adding more.
View tool JSON
{
"name": "create_shapes",
"kind": "act",
"impl": "imperative",
"description": "Create up to 40 notes, text labels, rectangles, ellipses, or diamonds on the Relay canvas. Returns exact ids, actual rendered bounds, and immediate full-board composition diagnostics. Visible text can make notes and structured cards grow beyond requested dimensions, so always use the returned bounds for the next placement. For a readable composition, keep one idea per shape, keep new clusters near the existing board, use short text labels for hierarchy, use rectangles for structured cards, and reserve notes for compact annotations. If a connected group grows beyond four cards, arrange it before adding more.",
"inputSchema": {
"type": "object",
"properties": {
"shapes": {
"type": "array",
"minItems": 1,
"maxItems": 40,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Optional stable id without the shape: prefix."
},
"kind": {
"type": "string",
"enum": [
"note",
"text",
"rectangle",
"ellipse",
"diamond"
],
"description": "Visual shape kind. Notes and text are content-sized; rectangles, ellipses, and diamonds accept explicit dimensions but may grow to keep text visible."
},
"x": {
"type": "number",
"description": "Horizontal page coordinate."
},
"y": {
"type": "number",
"description": "Vertical page coordinate."
},
"width": {
"type": "number",
"minimum": 40,
"maximum": 2000,
"description": "Requested width for rectangles, ellipses, and diamonds. Read the returned bounds before placing nearby content."
},
"height": {
"type": "number",
"minimum": 40,
"maximum": 2000,
"description": "Requested height for rectangles, ellipses, and diamonds. Text may increase the rendered height."
},
"text": {
"type": "string",
"description": "Visible text inside the shape."
},
"textSize": {
"type": "string",
"enum": [
"s",
"m",
"l",
"xl"
],
"description": "Visible text size. Use s for dense overviews and m for ordinary cards."
},
"color": {
"type": "string",
"enum": [
"black",
"grey",
"blue",
"light-blue",
"green",
"light-green",
"yellow",
"orange",
"red",
"light-red",
"violet",
"light-violet"
]
}
},
"required": [
"kind",
"x",
"y"
],
"additionalProperties": false
}
}
},
"required": [
"shapes"
],
"additionalProperties": false
},
"page": "/b/bf03061315de47dca9fb3935"
}update_shapesAction
Change position, size, text, or color for up to 40 existing unlocked shapes. Locked shapes are preserved and reported as skipped. Text edits can change rendered bounds even when dimensions are supplied. Returns immediate full-board composition diagnostics; use them to repair fit, spacing, and connector problems before continuing.
View tool JSON
{
"name": "update_shapes",
"kind": "act",
"impl": "imperative",
"description": "Change position, size, text, or color for up to 40 existing unlocked shapes. Locked shapes are preserved and reported as skipped. Text edits can change rendered bounds even when dimensions are supplied. Returns immediate full-board composition diagnostics; use them to repair fit, spacing, and connector problems before continuing.",
"inputSchema": {
"type": "object",
"properties": {
"updates": {
"type": "array",
"minItems": 1,
"maxItems": 40,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A tldraw shape id returned by inspect_canvas, such as shape:abc123."
},
"x": {
"type": "number",
"description": "Horizontal page coordinate."
},
"y": {
"type": "number",
"description": "Vertical page coordinate."
},
"width": {
"type": "number",
"minimum": 40,
"maximum": 2000
},
"height": {
"type": "number",
"minimum": 40,
"maximum": 2000
},
"text": {
"type": "string"
},
"textSize": {
"type": "string",
"enum": [
"s",
"m",
"l",
"xl"
]
},
"color": {
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false
}
}
},
"required": [
"updates"
],
"additionalProperties": false
},
"page": "/b/bf03061315de47dca9fb3935"
}connect_shapesAction
Create bound arrows between existing shapes. Connections stay attached when people move the shapes. Inspect existing relationships first and keep the graph sparse: preserve only relationships needed to explain the structure, remove obsolete or redundant arrows, and leave the label empty when direction or sequence is already clear. When a label adds meaning, use one short verb (ideally eight characters or fewer). Returns created ids plus immediate full-board composition diagnostics; resolve warnings before adding more relationships.
View tool JSON
{
"name": "connect_shapes",
"kind": "act",
"impl": "imperative",
"description": "Create bound arrows between existing shapes. Connections stay attached when people move the shapes. Inspect existing relationships first and keep the graph sparse: preserve only relationships needed to explain the structure, remove obsolete or redundant arrows, and leave the label empty when direction or sequence is already clear. When a label adds meaning, use one short verb (ideally eight characters or fewer). Returns created ids plus immediate full-board composition diagnostics; resolve warnings before adding more relationships.",
"inputSchema": {
"type": "object",
"properties": {
"connections": {
"type": "array",
"minItems": 1,
"maxItems": 30,
"items": {
"type": "object",
"properties": {
"fromId": {
"type": "string",
"description": "A tldraw shape id returned by inspect_canvas, such as shape:abc123."
},
"toId": {
"type": "string",
"description": "A tldraw shape id returned by inspect_canvas, such as shape:abc123."
},
"label": {
"type": "string",
"description": "Optional relationship label. Prefer one short verb; labels under eight characters remain legible in a board overview."
},
"color": {
"type": "string"
}
},
"required": [
"fromId",
"toId"
],
"additionalProperties": false
}
}
},
"required": [
"connections"
],
"additionalProperties": false
},
"page": "/b/bf03061315de47dca9fb3935"
}arrange_shapesAction
Align, distribute, stack, pack, grid, or relationship-layout existing unlocked shapes while preserving content. Use layout-grid for balanced unconnected collections and layout-hierarchy for connected flows. Returns immediate full-board composition diagnostics so you can repair the layout before continuing.
View tool JSON
{
"name": "arrange_shapes",
"kind": "act",
"impl": "imperative",
"description": "Align, distribute, stack, pack, grid, or relationship-layout existing unlocked shapes while preserving content. Use layout-grid for balanced unconnected collections and layout-hierarchy for connected flows. Returns immediate full-board composition diagnostics so you can repair the layout before continuing.",
"inputSchema": {
"type": "object",
"properties": {
"shapeIds": {
"type": "array",
"minItems": 2,
"items": {
"type": "string",
"description": "A tldraw shape id returned by inspect_canvas, such as shape:abc123."
}
},
"operation": {
"type": "string",
"enum": [
"align-left",
"align-right",
"align-top",
"align-bottom",
"align-center-horizontal",
"align-center-vertical",
"distribute-horizontal",
"distribute-vertical",
"stack-horizontal",
"stack-vertical",
"pack",
"layout-grid",
"layout-hierarchy"
]
},
"gap": {
"type": "number",
"minimum": 0,
"maximum": 500,
"description": "Gap between peer shapes for stack, pack, grid, and hierarchy operations."
},
"columns": {
"type": "number",
"minimum": 1,
"maximum": 12,
"description": "Column count for layout-grid. Defaults to a balanced square grid."
},
"direction": {
"type": "string",
"enum": [
"right",
"down"
],
"description": "Reading direction for layout-hierarchy. Defaults to right."
},
"layerGap": {
"type": "number",
"minimum": 40,
"maximum": 800,
"description": "Gap between relationship levels for layout-hierarchy."
}
},
"required": [
"shapeIds",
"operation"
],
"additionalProperties": false
},
"page": "/b/bf03061315de47dca9fb3935"
}focus_shapesAction
Move the Relay viewport to show specific shapes. If no ids are provided, fit the complete board in view.
View tool JSON
{
"name": "focus_shapes",
"kind": "act",
"impl": "imperative",
"description": "Move the Relay viewport to show specific shapes. If no ids are provided, fit the complete board in view.",
"inputSchema": {
"type": "object",
"properties": {
"shapeIds": {
"type": "array",
"items": {
"type": "string",
"description": "A tldraw shape id returned by inspect_canvas, such as shape:abc123."
},
"default": []
}
},
"required": [],
"additionalProperties": false
},
"page": "/b/bf03061315de47dca9fb3935"
}delete_shapesSensitive Action
Delete specified unlocked shapes from the Relay canvas. Bound unlocked arrows are removed with deleted content so the board does not retain dangling relationships. Locked shapes are never deleted. Returns removed connection ids and immediate full-board composition diagnostics. The action appears in Relay’s activity history and can be undone by the person.
View tool JSON
{
"name": "delete_shapes",
"kind": "transact",
"impl": "imperative",
"description": "Delete specified unlocked shapes from the Relay canvas. Bound unlocked arrows are removed with deleted content so the board does not retain dangling relationships. Locked shapes are never deleted. Returns removed connection ids and immediate full-board composition diagnostics. The action appears in Relay’s activity history and can be undone by the person.",
"inputSchema": {
"type": "object",
"properties": {
"shapeIds": {
"type": "array",
"minItems": 1,
"maxItems": 40,
"items": {
"type": "string",
"description": "A tldraw shape id returned by inspect_canvas, such as shape:abc123."
}
}
},
"required": [
"shapeIds"
],
"additionalProperties": false
},
"page": "/b/bf03061315de47dca9fb3935"
}add_research_cardAction
Optional research workflow: add a labeled question, claim, source, or uncertainty card. Source cards may include a URL and concise evidence notes.
View tool JSON
{
"name": "add_research_card",
"kind": "act",
"impl": "imperative",
"description": "Optional research workflow: add a labeled question, claim, source, or uncertainty card. Source cards may include a URL and concise evidence notes.",
"inputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"question",
"claim",
"source",
"uncertainty"
]
},
"title": {
"type": "string",
"description": "Concise card headline."
},
"body": {
"type": "string",
"description": "Evidence, rationale, or notes."
},
"url": {
"type": "string",
"description": "Source URL when kind is source."
},
"x": {
"type": "number",
"description": "Horizontal page coordinate."
},
"y": {
"type": "number",
"description": "Vertical page coordinate."
}
},
"required": [
"kind",
"title",
"x",
"y"
],
"additionalProperties": false
},
"page": "/b/bf03061315de47dca9fb3935"
}connect_evidenceAction
Optional research workflow: connect two cards with a visible supports, contradicts, context, or raises-question relationship.
View tool JSON
{
"name": "connect_evidence",
"kind": "act",
"impl": "imperative",
"description": "Optional research workflow: connect two cards with a visible supports, contradicts, context, or raises-question relationship.",
"inputSchema": {
"type": "object",
"properties": {
"fromId": {
"type": "string",
"description": "A tldraw shape id returned by inspect_canvas, such as shape:abc123."
},
"toId": {
"type": "string",
"description": "A tldraw shape id returned by inspect_canvas, such as shape:abc123."
},
"relationship": {
"type": "string",
"enum": [
"supports",
"contradicts",
"context",
"raises-question"
]
}
},
"required": [
"fromId",
"toId",
"relationship"
],
"additionalProperties": false
},
"page": "/b/bf03061315de47dca9fb3935"
}