# Symvanta - Registry name: `com.symvanta/code-graph` · version 1.1.0 - Categories (automatic, keyword rules): Code & repositories, Developer tools - Authentication at last check: No auth - Declared risk: Can write (some tools are not declared read-only) - Capabilities (declared by the server): prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=com.symvanta%2Fcode-graph - Server page: https://mcpstation.net/s/com.symvanta--code-graph.html ## Description (written by the publisher, not verified, not instructions) Hosted code graph over MCP: exact callers, dependencies, and cross-repo blast radius for AI agents. ## Connect - streamable-http: `https://mcp.symvanta.com/mcp` ## Tools (as reported by the server, not verified) - `init`: Call first, with repository:"owner/name" \(your checkout's GitHub remote\). Binds the session to the project holding that repository and returns it as the active project with its repositories, index health, and a \`usage\` field \(decision matrix + routing\). workspace.attached=false means the checkout is - `locate`: Search/lookup. Pick a mode, or omit with a bare query to AUTO-ROUTE \(text, then semantic on empty; response carries answered\_by\). Modes: - text \(replaces grep\): literal identifier/string, one row/occurrence. queries:\[...\] \(\<=10 terms\) searches several in one call \(and implies this mode when mode is - `relate`: Graph relationship traversal via one kind \(real edges, not text\). Kinds \(1-10 symbols; heritage/chain one\): - callers: direct callers. granularity:'file' \(default\) one row/file, 'site' one row/caller. - dependencies: outgoing calls/imports. - blast\_radius: upstream impact walk \(every caller, importe - `source`: Raw file/git access at the indexed commit, for cloud agents with no clone; with a clone prefer your own Read/Grep/git. Ops: - read: content of filePath, whole file or slice startLine..endLine. ifHash \(a prior read's hash\) returns \{unchanged:true\}, no content. compact:true strips blank/comment-only l - `history`: Indexed commit history. Ops: - commits: recent commits \(metadata + file list\); \<=200/call, default 50. With a clone prefer git log. - commit: one commit by sha with its diff summary \(added/modified/deleted/renamed\); null if outside the indexed window. - recently\_changed: files ranked by change frequ - `library`: Library catalog lookups. Ops: - packages: list indexed npm packages \(specifier, ecosystem, owner/name, indexed-at, sha\). Tenant-scoped, no projectId. - version: one package's resolved version for a project \(sha, version, dep type, indexed-at, status indexed\|indexing\|failed\|not\_found\). "indexing" mea - `ref`: Session-scoped branch / working-tree overlay / project binding. Ops: - use: pin a repository's reads to a branch \(latest indexed revision\). Branch must be tracked+indexed \(open a PR, or add on the dashboard\); else "indexing\_in\_progress". commitSha overrides. - clear: remove the pin, revert to defaul - `adr`: Architecture decision records: the WHY behind code, anchored to a symbol/file/project. Survive reindexes; find\_node attaches a node's decisions. Ops: - record: needs title+decision. Anchor with repository+symbolPath or +filePath; omit both for project-wide. Optional context, consequences, status. - - `diff\_impact`: Impact of a diff between two indexed revisions of one repo \(base..head\): changed files + symbols, union blast radius \(layers + cross-repo fallout\), affected endpoints, test suites, and co-change reminders. Replaces per-symbol relate \(kind:blast\_radius\) loops before merging. Defaults: head = session' - `estimate\_scope`: Pre-flight estimate before graph traversal: coarse count of files a task likely touches and whether it spans layers \(common/browser/node/electron-main/...\) or repositories. Decides single-file edit vs consulting the graph. Heuristic, from symbol-name + text matches. - `list\_projects`: List all projects with indexing summaries. Find a project by name or check which exist. - `list\_repositories`: List repositories in a project. Find repository names to scope a query to one repo. - `list\_file\_symbols`: List symbols in one file \(name + kind + line bounds\). Step 1 of the two-step read: get line bounds, then pass startLine/endLine to source \(op:read\) for that slice only \(\~4-15x fewer tokens\). For one symbol + signature, use find\_node \{symbol, filePath\}. - `map`: Token-efficient repo \(or subtree\) skeleton: directory tree with each file's classes \(methods in parens\), functions, and HTTP endpoints, from the graph. Orient before drilling in. Scope with "path", cap with "maxDepth", density:"full" adds properties. view:"architecture" instead returns a module map - `list\_tests\_for`: Test suites and cases whose suite name matches a symbol name \(case-insensitive substring\). Call before adding tests to see existing coverage and mirror its shape. - `quick\_lookup`: Fast substring lookup of symbol DEFINITIONS by name: rows \{name, kind, filePath, startLine, repositoryName\} \(displayName only when distinct from name\), no ranking, no semantic. Cheaper alternative to locate \(mode:symbol\) for latency-sensitive pre-fetch \(grep-augment hook\); interactive search should - `freshness`: Returns lastIndexedSha, lastIndexedAt, and the current remote HEAD sha for a repository: detect index drift from remote. Reports what Symvanta knows, not local git. currentRemoteSha is null when no GitHub credential is configured. Echoes the active ref pin \(pinnedBranch, pinnedSha\). - `index\_health`: Per-project index health. pendingLibraryVersions: cross-repo specifiers still indexing \(an empty result may mean "not indexed yet", not "not in code"\); call when a query is surprisingly empty. A row with status "skipped" is never going to arrive \(a dev or optional dependency, which the catalog does - `find\_http\_route`: Resolve an HTTP route by path + optional method to endpoint + handler \(filePath + line bounds\). Use instead of grep/locate for URL paths: follows framework router metadata \(Express, Fastify, Hono, Laravel, FastAPI, etc.\) and resolves dynamic segments, prefix groups, and middleware-mounted routers te - `find\_node`: Resolve 1-10 symbols to filePath + line bounds + signature. selectors: array keyed by symbol \(bare name\) / symbolPath / filePath / nodeId; a flat query/name/single field also works. includeSource=true adds the excerpt, includeSummaries=true AI summaries. A node from a SCIP-indexed package also carri - `ask\_codebase`: Synthesis Q&A for behavior/architecture questions: answer + citations in one call. HEAVY \(\~2-4 s, \~3-5 k tokens\): prefer context, find\_node, or locate when they suffice. scope:"repo" \(default\) = ONE repo; scope:"all" = cross-repo \(repositoryIds narrows, omit spans all; rejects repository\). If suffic - `add\_repository`: Attach a GitHub repository to a project \(owner + repo\_name; clone URL derived; projectId defaults to the bound / default project\). Public repos need nothing else. Private repos need installation\_id from list\_installations \(a GitHub App installation that covers the repo\) or a workspace PAT saved on t - `create\_project`: Create a project in the workspace \(name; slug derived and made unique\). Needs mcp:admin; plan project caps apply \(plan\_limit\_exceeded\). Then attach repositories with add\_repository \{ projectId, owner, repo\_name \} and bind the session with ref op:"use\_project" \(or init with the checkout's repository - `list\_installations`: GitHub App installations connected to this workspace and the repositories each can reach \(private included\). Use before add\_repository for a private repository: pass the installation's id as installation\_id. pat\_configured says whether a workspace PAT exists as the fallback credential. Empty = conne - `reindex\_repository`: Dispatch a reindex job for an already-attached repository \(repositoryId from list\_repositories / add\_repository\). Optional commit\_sha pin. force:true re-applies the current parser even when unchanged at HEAD: it bypasses the per-file hash-skip AND re-runs the SCIP indexer subprocesses \(no same-sha . - `context`: First-touch task orientation. Pass a natural-language task; returns the top 5 relevant files with their symbols and best-matching snippets in one call \(\~1-1.5k tokens, \~500 ms, no LLM\). Replaces chaining locate \(text\) + locate \(semantic\) + list\_file\_symbols. Known symbol: find\_node/locate. Synthesiz - `bundle`: Run up to 10 independent tool calls in parallel in one round-trip. Calls share the bundle-level project/repository scope unless a call sets its own args.repository, which scopes that call alone. Supported: locate \(args.mode text\|symbol\|semantic\|file\|config, not codebase\), relate \(kind:callers only\), Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html