This project uses a local dual-graph MCP server (graperoot-pro) for efficient, budget-aware context retrieval. Always prefer it over native file exploration.
-
Call
graph_continuefirst -- before any file exploration, grep, or code reading. -
If
graph_continuereturnsneeds_project=true: callgraph_scanwith the current project directory (pwd). Do NOT ask the user. -
If
graph_continuereturnsskip=true: project is too small for the graph to help. Skip all graph tools and explore normally. -
Read
recommended_filesusinggraph_read-- one call per file.recommended_filesmay containfile::symbolentries (e.g.src/auth.ts::handleLogin). Pass them verbatim tograph_read(file: "src/auth.ts::handleLogin")-- it reads only that symbol's lines, not the full file.
-
Check
confidenceand obey the caps strictly:confidence=high-> Stop. Do NOT grep or explore further.confidence=medium-> If recommended files are insufficient, callfallback_rgat mostmax_supplementary_grepstime(s) with specific terms, thengraph_readat mostmax_supplementary_filesadditional file(s). Then stop.confidence=low-> Callfallback_rgat mostmax_supplementary_grepstime(s), thengraph_readat mostmax_supplementary_filesfile(s). Then stop.
Some tasks require scanning every file -- e.g. "find all dead exports", "list every .find() without a limit", "audit all test files". Use these tools first:
graph_dead_exports()-- pre-computed at scan time. Use for any dead-export task.graph_grep_all(pattern, file_glob?, max_hits?)-- exhaustive grep, no call cap.
- Do NOT use
rg,grep, or bash file exploration before callinggraph_continue. - Do NOT do broad/recursive exploration at any confidence level.
- After edits, call
graph_register_edit(files: ["path/to/file"]). The parameter isfiles(plural, always an array). Usefile::symbolnotation when the edit targets a specific function, class, or hook.