Gives your AI assistant a persistent memory layer that combines keyword, vector, and graph search in a single query. You get typed entities out of the box (people, projects, decisions, meetings, tasks) that link automatically into a knowledge graph. Works with Claude Desktop, Cursor, and ChatGPT over HTTP, authenticates via OAuth per user, and exposes tools for search, page CRUD, graph traversal, and task management. Useful when you need context that survives across sessions or want your agent to recall who decided what without manual tagging. Multilingual support for English and Russian. Hosted service with a 30 second setup through Smithery or manual config.
Public tool metadata for what this MCP can expose to an agent.
read_pageRead a DashDoc page and return its content as Markdown with metadata.2 paramsRead a DashDoc page and return its content as Markdown with metadata.
page_idstringworkspace_idstringcreate_pageCreate a new page in DashDoc workspace. Content is Markdown (auto-converted to TipTap). Returns page_id and node_id.4 paramsCreate a new page in DashDoc workspace. Content is Markdown (auto-converted to TipTap). Returns page_id and node_id.
titlestringmarkdownstringworkspace_idstringparent_node_idstringupdate_pageUpdate an existing DashDoc page. Handles optimistic locking automatically. Content is Markdown. Embedded blocks (kanban, spreadsheet, child pages) are preserved automatically.4 paramsUpdate an existing DashDoc page. Handles optimistic locking automatically. Content is Markdown. Embedded blocks (kanban, spreadsheet, child pages) are preserved automatically.
titlestringpage_idstringmarkdownstringworkspace_idstringdelete_pageSoft-delete a DashDoc page.2 paramsSoft-delete a DashDoc page.
page_idstringworkspace_idstringrestore_pageRestore a soft-deleted DashDoc page. Clears deleted_at and re-registers workspace node.2 paramsRestore a soft-deleted DashDoc page. Clears deleted_at and re-registers workspace node.
page_idstringworkspace_idstringlist_workspacesList all workspaces available to the current user. Returns workspace IDs needed for other tool calls.List all workspaces available to the current user. Returns workspace IDs needed for other tool calls.
No parameter schema in public metadata yet.
get_treeGet 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_i...2 paramsGet 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_i...
node_idstringworkspace_idstringcreate_folderCreate a folder in the DashDoc workspace tree.3 paramsCreate a folder in the DashDoc workspace tree.
titlestringworkspace_idstringparent_node_idstringcreate_projectCreate a new project in the DashDoc workspace tree. A project includes a Neo4j node, a linked page, and a workspace entry.3 paramsCreate a new project in the DashDoc workspace tree. A project includes a Neo4j node, a linked page, and a workspace entry.
namestringworkspace_idstringparent_node_idstringmove_pageMove 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.3 paramsMove 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.
node_idstringworkspace_idstringnew_parent_node_idstringupload_fileUpload 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_c...8 paramsUpload 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_c...
file_namestringfile_pathstringupload_idstringchunk_indexnumberfile_base64stringtotal_chunksnumberworkspace_idstringparent_node_idstringreorder_workspaceReorder workspace items within their parent.2 paramsReorder workspace items within their parent.
itemsarrayworkspace_idstringsearchKeyword 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...4 paramsKeyword 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...
typestringlimitnumberquerystringworkspace_idstringunified_searchSemantic 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,...10 paramsSemantic 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,...
limitnumberquerystringtypesarrayoffsetnumberweightsobjectgraph_depthnumberworkspace_idstringmessages_per_chatnumberinclude_conversationsbooleaninclude_graph_contextbooleangraph_searchSearch graph nodes (entities) by name. Returns matching nodes with their types and properties.3 paramsSearch graph nodes (entities) by name. Returns matching nodes with their types and properties.
querystringtypesstringworkspace_idstringlist_tasksList tasks from DashDoc with optional filters.7 paramsList tasks from DashDoc with optional filters.
tagsstringlimitnumberstatusstringassigneestringboard_idstringproject_idstringworkspace_idstringget_taskGet full task details by ID.2 paramsGet full task details by ID.
task_idstringworkspace_idstringcreate_taskCreate a new task in DashDoc. Agent tasks should always include tags: ["agent"] and board_id for Dev Board.11 paramsCreate a new task in DashDoc. Agent tasks should always include tags: ["agent"] and board_id for Dev Board.
tagsarraytitlestringstatusstringassigneestringboard_idstringdue_datestringprioritystringparent_idstringproject_idstringdescriptionstringworkspace_idstringupdate_taskUpdate an existing task in DashDoc.10 paramsUpdate an existing task in DashDoc.
tagsarraytitlestringstatusstringtask_idstringassigneestringdue_datestringprioritystringproject_idstringdescriptionstringworkspace_idstringdelete_taskDelete a task.2 paramsDelete a task.
task_idstringworkspace_idstringget_task_relationsGet all relations for a task (subtasks, blocked by, blocks, project, etc.).2 paramsGet all relations for a task (subtasks, blocked by, blocks, project, etc.).
task_idstringworkspace_idstringlink_tasksCreate a relationship between two tasks. Types: PART_OF (subtask→parent), BLOCKS (blocker→blocked), PART_OF_PROJECT (task→project).4 paramsCreate a relationship between two tasks. Types: PART_OF (subtask→parent), BLOCKS (blocker→blocked), PART_OF_PROJECT (task→project).
typestringtask_idstringtarget_idstringworkspace_idstringunlink_tasksRemove a relationship from a task by relation ID (get IDs from get_task_relations).3 paramsRemove a relationship from a task by relation ID (get IDs from get_task_relations).
task_idstringrelation_idstringworkspace_idstringbulk_update_tasksBulk update status for multiple tasks at once. Max 200 tasks per call.2 paramsBulk update status for multiple tasks at once. Max 200 tasks per call.
updatesstringworkspace_idstringcreate_canvas_nodeCreate a new entity and place it on a canvas. Entity types: Person, Organization, Project, Server, Service, Agent, Interface, DataStore, Document, Task, etc.7 paramsCreate a new entity and place it on a canvas. Entity types: Person, Organization, Project, Server, Service, Agent, Interface, DataStore, Document, Task, etc.
xnumberynumbernamestringcanvas_idstringpropertiesobjectentity_typestringworkspace_idstringadd_node_to_canvasAdd an existing graph node to a canvas at specified position.5 paramsAdd an existing graph node to a canvas at specified position.
xnumberynumbernode_idstringcanvas_idstringworkspace_idstringread_presentationRead 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.2 paramsRead 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.
workspace_idstringpresentation_idstringcreate_spreadsheetCreate a spreadsheet with optional headers and data rows.5 paramsCreate a spreadsheet with optional headers and data rows.
rowsarraytitlestringheadersarrayworkspace_idstringparent_node_idstringread_spreadsheetRead spreadsheet data as markdown table, CSV, or JSON. For large spreadsheets (>1000 rows), consider using range parameter or CSV format.5 paramsRead spreadsheet data as markdown table, CSV, or JSON. For large spreadsheets (>1000 rows), consider using range parameter or CSV format.
rangestringformatstringmarkdown · csv · jsonpage_idstringsheet_idstringworkspace_idstringupdate_cellsUpdate specific cells by A1 address (e.g. B2, D15). Handles optimistic locking with retry.4 paramsUpdate specific cells by A1 address (e.g. B2, D15). Handles optimistic locking with retry.
cellsarraypage_idstringsheet_idstringworkspace_idstringappend_rowsAppend rows to the end of a spreadsheet. Handles optimistic locking with retry.4 paramsAppend rows to the end of a spreadsheet. Handles optimistic locking with retry.
rowsarraypage_idstringsheet_idstringworkspace_idstringmanage_sheetsList, add, delete, rename a sheet, or toggle gridlines visibility. action=list reads sheets (workspace-optional); all others mutate.5 paramsList, add, delete, rename a sheet, or toggle gridlines visibility. action=list reads sheets (workspace-optional); all others mutate.
namestringactionstringlist · add · delete · rename · show_gridlines · hide_gridlinespage_idstringsheet_idstringworkspace_idstringfind_cellsSearch for a value in spreadsheet cells. Returns matching cell addresses.5 paramsSearch for a value in spreadsheet cells. Returns matching cell addresses.
matchstringexact · containsquerystringpage_idstringsheet_idstringworkspace_idstringstyle_cellsApply style (bold, italic, colors, alignment, etc.) to a cell or range.5 paramsApply style (bold, italic, colors, alignment, etc.) to a cell or range.
rangestringstyleobjectpage_idstringsheet_idstringworkspace_idstringmerge_cellsMerge or unmerge cells in a range.5 paramsMerge or unmerge cells in a range.
rangestringactionstringmerge · unmergepage_idstringsheet_idstringworkspace_idstringresize_columns_rowsSet column widths and/or row heights.5 paramsSet column widths and/or row heights.
rowsarraycolumnsarraypage_idstringsheet_idstringworkspace_idstringsave_knowledgeSave 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 alias...5 paramsSave 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 alias...
factsarraydry_runbooleanpage_idstringcreate_pageobjectworkspace_idstringlist_remindersList reminders with optional status filter.4 paramsList reminders with optional status filter.
limitnumberoffsetnumberstatusstringactive · done · dismisseddefault: activeworkspace_idstringgraph_nodeUnified 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: require...6 paramsUnified 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: require...
namestringtypestringactionstringcreate · get · update · delete · relatednode_idstringpropertiesobjectworkspace_idstringgraph_edgeUnified 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 - up...7 paramsUnified 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 - up...
typestringactionstringcreate · get · update · deleteedge_idstringsource_idstringtarget_idstringpropertiesobjectworkspace_idstringgraph_schemaList all entity types, relationship types, and property schemas available in the knowledge graph. Renamed from graph_types.List all entity types, relationship types, and property schemas available in the knowledge graph. Renamed from graph_types.
No parameter schema in public metadata yet.
boardUnified 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:...9 paramsUnified 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:...
namestringlimitnumberactionstringlist · get · create · update · deleteoffsetnumbercolumnsarrayfiltersstringboard_idstringproject_idstringworkspace_idstringcanvasUnified 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 effect...7 paramsUnified 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 effect...
iconstringnamestringlimitnumberactionstringlist · get · create · update · deleteoffsetnumbercanvas_idstringworkspace_idstringcanvas_nodeUpdate 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...11 paramsUpdate 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...
xnumberynumbercolorstringshapestringactionstringupdate · deletenode_idstringcanvas_idstringnode_sizestringpropertiesobjectworkspace_idstringdelete_entitybooleancanvas_edgeUpdate 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_id7 paramsUpdate 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
typestringlabelstringshapestringstylestringactionstringupdate · deleteedge_idstringworkspace_idstringpresentationUnified 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 Markdow...8 paramsUnified 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 Markdow...
themestringblack · white · moon · league · beige · skytitlestringactionstringcreate · updatemarkdownstringparent_idstringtransitionstringnone · fade · slide · convex · concave · zoomworkspace_idstringpresentation_idstringreminderUnified 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_id6 paramsUnified 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
textstringactionstringcreate · update · deletedue_atstringstatusstringactive · done · dismissedreminder_idstringworkspace_idstringtree_nodeUpdate 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_pre...5 paramsUpdate 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_pre...
iconstringtitlestringactionstringupdate · deletenode_idstringworkspace_idstringmanage_rows_columnsInsert 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: `a...7 paramsInsert 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: `a...
atstringaxisstringrow · columncountnumberactionstringinsert · deletepage_idstringsheet_idstringworkspace_idstring
Persistent memory & knowledge graph for your AI assistant.
Keyword + vector + graph search in a single lookup.
Contexta is a memory MCP server that remembers like a human does — by meaning, by words, and by relationships.
Most memory tools give you one flavor of recall: embedding search, a raw log, or a graph you pay extra for. Contexta fuses all three into a single query. Your agent can ask "what did we decide about pricing with Acme last quarter?" and get back the right meeting, the right decision, and the people connected to it — in one round-trip.
Under the hood, Contexta indexes your notes, messages, and documents as typed entities (people, projects, decisions, meetings, tasks) and links them into a knowledge graph automatically. Every retrieval combines:
One-click install from the Smithery listing — Smithery handles the OAuth flow and proxies connections through its gateway.
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"contexta": {
"url": "https://mcp.contexta.cc/mcp"
}
}
}
Claude will walk you through the OAuth sign-in on first use. See examples/claude-desktop.json.
Add a new MCP server in Cursor → Settings → MCP:
https://mcp.contexta.cc/mcpSee examples/cursor.json.
In ChatGPT → Settings → Connectors → Add custom connector → paste https://mcp.contexta.cc/mcp. See examples/chatgpt.md for full instructions.
Contexta uses OAuth 2.0 with dynamic client registration (RFC 7591) and PKCE. On first connection, your MCP client opens a browser window, you sign in with your Contexta account, and the client receives a per-user access token. Tokens are refreshed automatically.
No API keys, no shared credentials — every request runs as a specific user with that user's private memory.
Contexta MCP exposes the following tools to your AI client (non-exhaustive):
search — keyword + vector + graph search across your memoryread_page — fetch a note or document by IDcreate_page — save a new memoryupdate_page — edit an existing memorygraph_search — traverse the knowledge graphlist_tasks / create_task / update_task — task managementlist_workspaces — available workspaceshttps://mcp.contexta.cc/mcpMIT — see LICENSE.
This repository is a public showcase for the hosted Contexta MCP service. The service itself is operated by the Contexta team at mcp.contexta.cc.
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent