Skip to content

MCP Tools ​

The Synapse server provides 14 tools. Agents normally only need the first five. The rest are for inspecting and editing mindmaps.

ToolPurpose
create_mindmapStart a mindmap with a plan
map_architectureRecord the mental model / HLD in one call
log_file_touchAttach a file and its symbol-level changes
update_plan_statusMove a task forward and start the next one
sync_git_statusAttach all uncommitted git changes
link_nodesDraw a labeled arrow between two nodes
add_nodeAdd a task, concept, or note
update_nodeEdit a node
remove_nodeDelete a node and its subtree
get_plan_summaryProgress report in Markdown
list_mindmapsList stored mindmaps
get_mindmapFull mindmap JSON
render_mindmapRender as Mermaid, text, or JSON
delete_mindmapDelete a mindmap

Return values. Tools that modify a mindmap return the full updated document as JSON, so the agent can read back generated node IDs. Every input is validated before anything changes. Invalid input (an unknown enum value, a rename without previousPath, an ID with characters outside [A-Za-z0-9_-]) and impossible requests (an unknown mindmap or node, a status on a node that isn't a task) come back as MCP tool errors (isError: true) with a message saying what to fix, and nothing is saved.

Enums used below

  • NodeType: plan, task, file, code, note, component, data_flow, hypothesis, decision, risk
  • TaskStatus: planned, in_progress, completed, blocked. Only task nodes (plan, task, code) have a status; setting one on any other node is an error.
  • FileAction: read, create, modify, delete, rename
  • ChangeKind: add, modify, fix, refactor, rename, remove, test
  • LinkStyle: solid, dashed, animated

See How It Works → Data model for what these mean.

create_mindmap ​

Create a new mindmap to track a coding plan, touched files, and the agent's mental model / HLD of the code.

ParameterTypeRequiredDescription
titlestring✓Title of the mindmap / task
rootLabelstringLabel for the root node (defaults to title)
workspacePathstringAbsolute path to the project workspace/repo. It's used by git sync, and it starts the workspace watcher.
initialPlanPlanItem[]Plan steps to create under the root

PlanItem: { label: string (required), type?: NodeType, status?: TaskStatus, notes?: string, children?: PlanItem[] }. Children are one level deep, so they don't have their own children. type defaults to task and status defaults to planned.

json
{
  "title": "Add rate limiting",
  "workspacePath": "/Users/me/code/api",
  "initialPlan": [
    { "label": "Read the auth flow", "status": "in_progress" },
    { "label": "Add limiter middleware" },
    { "label": "Write tests", "children": [{ "label": "Burst test" }] }
  ]
}

map_architecture ​

Batch-record the agent's mental model & High-Level Design (HLD) of the codebase: components, data flows, hypotheses, design decisions, risks, and directed flow links between them.

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID
parentIdstringParent node for the new nodes. If omitted, uses the top-level "Code Mental Model (HLD)" branch, creating it if needed.
nodesHldNode[]✓Nodes to create or update
linksHldLink[]Directed links between node keys or existing node IDs

HldNode:

FieldTypeRequiredDescription
keystring✓A short key (such as mcp_server) used to refer to this node in links and parentKey. If it matches an existing node ID, that node is updated instead of created.
labelstring✓Name of the component, flow, hypothesis, or decision
typestringOne of component (default), data_flow, hypothesis, decision, risk, code, note
statusTaskStatusTask types only
notesstringHow the agent thinks about this piece, why it matters, trade-offs
parentKeystringKey from this call, or an existing node ID, to nest this node under
filesFileTouch[]Files that implement this concept (same fields as log_file_touch; path required)

HldLink: { from: string, to: string, label: string, style?: LinkStyle, notes?: string } (from, to, and label are required). Links that refer to unknown keys are skipped.

json
{
  "mindmapId": "mm_Ab12Cd34",
  "nodes": [
    { "key": "api", "label": "HTTP API", "type": "component", "files": [{ "path": "src/server.ts", "action": "read" }] },
    { "key": "store", "label": "Session store", "type": "component" },
    { "key": "why_redis", "label": "Use Redis for counters", "type": "decision", "notes": "Shared across instances" },
    { "key": "clock_skew", "label": "Clock skew between nodes", "type": "risk" }
  ],
  "links": [
    { "from": "api", "to": "store", "label": "reads/writes" },
    { "from": "why_redis", "to": "store", "label": "shapes", "style": "dashed" }
  ]
}

log_file_touch ​

Record that a file was read, created, modified, renamed, or deleted, along with symbol-level changes.

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID
nodeIdstringTask or component to attach to. Defaults to the active in_progress node (how the target is chosen).
pathstring✓File path, such as src/tools.ts
actionFileActionDefaults to modify
previousPathstringThe old path, when action is rename
linesstringLine range touched, such as 45-120
symbolsstring[]Functions, classes, or types touched
changesCodeChange[]Symbol-level changes (see below)
summarystringWhat changed in this file
createChildNodebooleanIf true, also creates (or updates) a visible file child node under the target

CodeChange: { kind: ChangeKind (required), symbol: string (required), previousSymbol?: string, detail?: string }. For renames, symbol is the new name.

json
{
  "mindmapId": "mm_Ab12Cd34",
  "path": "src/auth/token.ts",
  "lines": "12-58",
  "summary": "Fix expiry check and rename guard",
  "changes": [
    { "kind": "fix", "symbol": "validateToken", "detail": "compare in UTC" },
    { "kind": "add", "symbol": "isExpired" },
    { "kind": "rename", "previousSymbol": "checkAuth", "symbol": "requireAuth" }
  ]
}

Logging the same path on the same node again updates the existing entry. Changes are merged on kind + symbol. The activity log records a tally such as (1 add, 1 fix, 1 rename).

update_plan_status ​

Update the status of a plan/task node and, optionally, start the next task in the same call.

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID
nodeIdstring✓Task node to update
statusstring✓planned, in_progress, completed, or blocked
notesstringStatus note or completion summary (replaces the node's notes)
nextNodeIdstringNode to mark in_progress

sync_git_status ​

Inspect git status and git diff in the workspace and attach every modified, created, deleted, or renamed file to the mindmap. See Git sync.

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID
workspacePathstringRepository path. Defaults to the mindmap's workspacePath, then the server's working directory. It's saved to the mindmap.
targetNodeIdstringNode to attach changes to. Defaults to the active in_progress node.

Returns No uncommitted git changes detected in <path>. when the tree is clean. Also starts the workspace watcher for this mindmap.

Create a directed conceptual or data/control-flow link between two nodes, such as "calls", "streams SSE to", "mutates", "depends on", or "triggers".

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID
fromstring✓Source node ID
tostring✓Target node ID
labelstring✓Relationship label
styleLinkStyleanimated suits live streams and events. dashed suits hypotheses and dependencies. Defaults to solid.
notesstringDetails about the relationship

A link with the same from, to, and label as an existing one updates that link.

add_node ​

Add a child node under a parent. This works for plan nodes (plan, task, file, note) and for mental-model nodes (component, data_flow, hypothesis, decision, risk).

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID
parentIdstring✓Parent node ID. Use root for top-level steps.
labelstring✓Node label
typeNodeTypeDefaults to task
statusTaskStatusTask types only; defaults to planned
notesstringNotes, rationale, hypothesis details, or trade-offs

update_node ​

Update a node's label, status, type, or notes.

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID
nodeIdstring✓Node to update
labelstringNew label
typeNodeTypeNew type
statusTaskStatusNew status
notesstringNew notes

remove_node ​

Remove a node and all its descendants, along with any links that touch them. The root can't be removed. Use delete_mindmap instead.

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID
nodeIdstring✓Node to remove

get_plan_summary ​

Get a Markdown status report: completion percentage, a status breakdown, the number of HLD concepts and links, a tally of code changes, in-progress and blocked tasks, and every touched file with its changes.

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID

list_mindmaps ​

List all stored mindmaps with their IDs, titles, node counts, and last-updated timestamps, most recent first. No parameters.

get_mindmap ​

Get a mindmap's full data as JSON.

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID

render_mindmap ​

Render a mindmap as text.

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID
formatstring✓mermaid (Mermaid mindmap syntax), text (an indented outline with status badges, files, change glyphs, and links), or json

delete_mindmap ​

Delete a mindmap and all its nodes. This removes its JSON file from the data directory.

ParameterTypeRequiredDescription
mindmapIdstring✓Mindmap ID

Prompt: track-coding-plan ​

Besides tools, the server provides one MCP prompt. See Agent Instructions.

Released under the MIT License.