get_tree
Get workspace tree structure. Without node_id returns root items; with node_id drills into a subtree.
OUTPUT FORMAT: Each line shows:
- title (type, node:<tree-node-id>, ref:<entity-id>)
Use node:<UUID> values as:
- node_id parameter in get_tree to drill deeper
- parent_node_id in create_page/create_folder to place items here
Use ref:<UUID> values as:
- page_id in read_page/update_page/delete_page
create_folder
Create a folder in the DashDoc workspace tree.
create_project
Create a new project in the DashDoc workspace tree. A project includes a Neo4j node, a linked page, and a workspace entry.
move_page
Move a workspace item (page or folder) to a new parent within the SAME workspace. Cross-workspace moves are not supported — use create_page + delete_page instead.
upload_file
Upload a file to DashDoc workspace (max 500 MB).
- Use file_path for local MCP servers (stdio mode) — most reliable for large files.
- Use file_base64 + file_name for remote MCP servers (http mode). For files >25 MB, use file_base64_chunks to send in parts.
- Use file_base64_chunks for very large files: call upload_file multiple times with chunk_index (0-based) and total_chunks, then the last chunk triggers assembly and upload.
reorder_workspace
Reorder workspace items within their parent.
search
Keyword search across all DashDoc content: pages, documents, meeting notes, decisions, discussions, tasks, graph nodes, canvases, boards.
USE THIS TOOL when the user:
- Asks about past discussions or conversations ("мы обсуждали", "мы говорили", "обсуждение с...")
- Mentions a person by name and asks what was discussed/decided ("с Игорем", "Саша говорил")
- Asks about decisions, agreements, or outcomes ("что решили", "к чему пришли", "что договорились")
- Wants to find a document, spec, report, or any stored content
- References something that was previously recorded or documented
- Asks "what do we know about X" or "what's the context on X"
For semantic/fuzzy queries (when exact keywords are unknown), prefer unified_search instead.
unified_search
Semantic search combining keyword matching, vector similarity, knowledge graph traversal, and conversation search. Best for natural-language queries where exact keywords are unknown.
USE THIS TOOL (preferred over basic search) when:
- The user asks about discussions, meetings, or decisions in natural language ("Мы обсуждали с Игорем проект X — что там решили?")
- The user references a person and wants related context ("что Игорь говорил про...", "переписка с Олегом о...")
- The user wants to search chat messages or conversations ("найди в переписке", "что писали в чате про...")
- The query is vague or conversational — vector search finds semantically similar content even without exact keyword matches
- The user asks about topics, themes, or concepts rather than specific document titles
- You need to find related entities through the knowledge graph (e.g., person → discussions → decisions)
Returns ranked results with relevance scores, graph connections, and matching conversations grouped by chat.
graph_search
Search graph nodes (entities) by name. Returns matching nodes with their types and properties.
list_tasks
List tasks from DashDoc with optional filters.
get_task
Get full task details by ID.
create_task
Create a new task in DashDoc. Agent tasks should always include tags: ["agent"] and board_id for Dev Board.
update_task
Update an existing task in DashDoc.
delete_task
Delete a task.
get_task_relations
Get all relations for a task (subtasks, blocked by, blocks, project, etc.).
link_tasks
Create a relationship between two tasks. Types: PART_OF (subtask→parent), BLOCKS (blocker→blocked), PART_OF_PROJECT (task→project).
unlink_tasks
Remove a relationship from a task by relation ID (get IDs from get_task_relations).
bulk_update_tasks
Bulk update status for multiple tasks at once. Max 200 tasks per call.
create_canvas_node
Create a new entity and place it on a canvas. Entity types: Person, Organization, Project, Server, Service, Agent, Interface, DataStore, Document, Task, etc.
add_node_to_canvas
Add an existing graph node to a canvas at specified position.
read_presentation
Read a DashDoc presentation (Reveal.js markdown format).
Returns markdown content, theme, and transition settings.
Slides are separated by --- (horizontal) and -- (vertical sub-slides).
Supports fragments (animations), data-background attributes, and HTML within slides.
create_spreadsheet
Create a spreadsheet with optional headers and data rows.
read_spreadsheet
Read spreadsheet data as markdown table, CSV, or JSON. For large spreadsheets (>1000 rows), consider using range parameter or CSV format.
update_cells
Update specific cells by A1 address (e.g. B2, D15). Handles optimistic locking with retry.
append_rows
Append rows to the end of a spreadsheet. Handles optimistic locking with retry.
manage_sheets
List, add, delete, rename a sheet, or toggle gridlines visibility. action=list reads sheets (workspace-optional); all others mutate.
find_cells
Search for a value in spreadsheet cells. Returns matching cell addresses.
style_cells
Apply style (bold, italic, colors, alignment, etc.) to a cell or range.
merge_cells
Merge or unmerge cells in a range.
resize_columns_rows
Set column widths and/or row heights.
save_knowledge
Save structured facts to the knowledge graph with automatic entity resolution and deduplication.
Entity resolution algorithm (in priority order):
1. Exact match by identifiers (phone, email, telegramUsername, domain, inn)
2. Exact match by name
3. Fuzzy match by name and aliases (confidence threshold: 0.8)
4. No match → create new node
Creates new nodes only when no match is found. Enriches existing nodes with new identifiers/aliases.
Uses MERGE semantics for edges (no duplicate edges).
Use this instead of manual create_node + create_edge when saving information that may reference existing entities.
Use dry_run=true first to preview resolution results before committing.
list_reminders
List reminders with optional status filter.
graph_node
Unified CRUD for knowledge-graph nodes (entities). Replaces create_node, get_node, update_node, delete_node, get_related.
Actions:
- create: requires type, name; optional properties
- get: requires node_id
- update: requires node_id; optional name, properties
- delete: requires node_id
- related: requires node_id (returns neighbors and edges)
graph_edge
Unified CRUD for knowledge-graph edges (relationships). Also used to create connections between nodes on a canvas. Replaces create_edge, get_edge, update_edge, delete_edge.
Actions:
- create: requires source_id, target_id, type; optional properties
- get: requires edge_id
- update: requires edge_id; optional type, properties
- delete: requires edge_id
graph_schema
List all entity types, relationship types, and property schemas available in the knowledge graph. Renamed from graph_types.
board
Unified CRUD for kanban boards. Replaces list_boards, get_board, create_board, update_board, delete_board.
Boards are filter views — pass filters JSON with include/exclude for projects, tags, people, statuses; matching tasks appear on the board automatically.
Actions:
- list: optional workspace_id, limit, offset
- get: requires board_id
- create: requires name, workspace_id; optional columns, filters, project_id
- update: requires board_id, workspace_id; optional name, columns, filters
- delete: requires board_id, workspace_id
canvas
Unified CRUD for canvases (visual boards). Replaces list_canvases, get_canvas, create_canvas, update_canvas, delete_canvas.
For node placement use create_canvas_node (new entity+placement) or add_node_to_canvas (attach existing). Those remain separate tools — their side effects differ.
Actions:
- list: optional workspace_id, limit, offset
- get: requires canvas_id
- create: requires name, workspace_id
- update: requires canvas_id, workspace_id; optional name, icon
- delete: requires canvas_id, workspace_id
canvas_node
Update or delete a node on a canvas. Creators (create_canvas_node, add_node_to_canvas) are separate tools.
Actions:
- update: requires canvas_id, node_id; optional x, y, shape, color, node_size, properties
- delete: requires node_id; optional canvas_id, delete_entity (default false — only removes from canvas)
canvas_edge
Update or delete an edge on a canvas (styling layer). To CREATE an edge between canvas nodes, use graph_edge(action=create).
Actions:
- update: requires edge_id; optional type, style, label, shape
- delete: requires edge_id
presentation
Unified create/update for Reveal.js presentations. Read via read_presentation.
Actions:
- create: requires title, markdown, workspace_id; optional theme, transition, parent_id
- update: requires presentation_id, workspace_id; optional markdown, theme, transition, title
Markdown: --- separates horizontal slides, -- separates vertical sub-slides.
reminder
Unified create/update/delete for reminders. Listing remains via list_reminders.
Actions:
- create: requires text, workspace_id; optional due_at (ISO 8601)
- update: requires reminder_id, workspace_id; optional text, due_at, status
- delete: requires reminder_id, workspace_id
tree_node
Update or delete an item in the workspace tree (page, folder, project, etc.).
The tree is the workspace hierarchy projection of DashDoc nodes. For CREATE use the dedicated hot-path tools: create_page, create_folder, create_project, create_spreadsheet, create_canvas, create_presentation. For MOVE use move_page; for REORDER use reorder_workspace.
Actions:
- update: requires node_id, workspace_id; optional title, icon
- delete: requires node_id, workspace_id
manage_rows_columns
Insert or delete rows/columns in a spreadsheet, shifting existing cells.
Actions:
- insert: add N rows/columns at position
- delete: remove N rows/columns at position
Position format depends on axis:
- axis=row: `at` is a 1-based row number (string or number)
- axis=column: `at` is a column letter (A, B, AA, …)