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**:
```json
{"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_datastore` tool instead.
- **state**: (dataspace pages only) Key-value store for agent config, counters, flags. Props: {"data": {"key": "value"}}. Use `get_state`/`set_state` tools.
- **log**: (dataspace pages only) Append-only timestamped event stream. Props: {"entries": [], "max_entries": 1000}. Use `append_log`/`query_log` tools.
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_presentation` tool, then `add_slide_from_template` / `add_structured_slide` for rich structured slides. Markdown `content` slides 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.