create_block
Create a new block on a page. Block types and their props:
text: Rich markdown content. Props: {"content": "markdown text"}
checklist: Task list with checkboxes. Props: {"items": [{"id": "item-0", "text": "Task", "done": false}]} or use add_checklist_item after creation
ctlsurf_task: Agent task assignments with notes. Props: {"items": [{"id": "task-0", "text": "Task", "done": false, "notes": []}]} or use add_ctlsurf_task_item after creation
table: Structured data grid. Props: {"columns": ["Col1", "Col2"], "rows": [["val1", "val2"]]}
tree: Hierarchical tree display. Props: {"nodes": [{"id": "1", "label": "Root", "children": [{"id": "2", "label": "Child"}]}]}
react_flow: Interactive node graph (auto-creates Graph). Props: {"graph_id": "uuid"} or empty to auto-create
page_summary: Page metadata for organization. Props: {"summary": "...", "purpose": "...", "status": "active", "tags": [], "key_topics": []}
file: File/image attachment. Props: {"file_id": "uuid", "filename": "name.ext", "mime_type": "image/png", "size_bytes": 12345}. To upload, use get_upload_url + curl PUT + confirm_upload — this creates the file block for you.
mindmap: Interactive mind map with visual editor. Props: {"content": "..."} where content can be:
Option 1 - Markdown format (recommended for agents):
# Central Topic ## Branch 1 - Leaf item A - Leaf item B ## Branch 2 ### Sub-branch - [[Linked Page|page-uuid]]Use # for root, ## for branches, ### for sub-branches, - for leaf items. Link to pages with [[Display Text|page-uuid]] syntax.
Option 2 - JSON tree format:
{"id": "root", "text": "Central Topic", "children": [ {"id": "b1", "text": "Branch 1", "children": [ {"id": "l1", "text": "Leaf", "children": [], "link": "/page/uuid"} ]} ]}
Dataspace blocks (dataspace pages only — use dedicated tools instead of create_block):
datastore: (dataspace pages only) Structured data table with typed columns and row-level operations. Use
create_datastoretool instead.state: (dataspace pages only) Key-value store for agent config, counters, flags. Props: {"data": {"key": "value"}}. Use
get_state/set_statetools.log: (dataspace pages only) Append-only timestamped event stream. Props: {"entries": [], "max_entries": 1000}. Use
append_log/query_logtools.
These block types can ONLY be created on pages with type="dataspace" (e.g., the "Agent Datastore" page under your project root).
presentation: Slide deck (960x540 canvas, .pptx export). Use the
create_presentationtool, thenadd_slide_from_template/add_structured_slidefor rich structured slides. Markdowncontentslides render as flat text (no tables/bold/links) — avoid for real decks. Props: {"slides": [...], "config": {"theme": "dark"}}.
Use checklist for simple task lists, ctlsurf_task for agent-assigned work with progress notes.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Block type: text (markdown), checklist (tasks), table (grid data), tree (hierarchy), react_flow (node graph), ctlsurf_task (agent tasks), page_summary (page metadata), file (attachments/images), mindmap (interactive mind map), datastore (structured table - prefer create_datastore tool), state (key-value store), log (event stream), presentation (slide deck - prefer create_presentation tool) | |
| props | No | Block-specific properties (see tool description for each type's props structure) | |
| title | No | Optional title/header for the block | |
| page_id | Yes | The UUID of the page |