SY

Symvanta

com.symvanta/code-graph

Hosted code graph over MCP: exact callers, dependencies, and cross-repo blast radius for AI agents.

Yes, your AI can use this right now.Answered a live MCP handshake in 612 ms with no sign-in needed and exposes 27 tools.

Connect it

Settings → Connectors → Add custom connector
URL: https://mcp.symvanta.com/mcp

27 tools, verified live

Pulled straight from the server with tools/list on 2026-10-17.
initread-only

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 NOT indexed: nothing in the answer describes it; attach it (add_repository, create_project) or work

locateread-only

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 omitted). pathsOnly:true = "filePath:lineNumber" only (~5x cheaper). maxPerFile caps rows/file (defa

relateread-only

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, importer and referencer up to 3 hops, no per-hop sampling) + co-change siblings; risk {level,signals}. incl

sourceread-only

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 lines. - list: files+subdirs at path. grep: ripgrep pattern (glob/pathPrefix). tree: layout from path

historyread-only

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 frequency in the indexed window ("what's hot").

libraryread-only

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" means a job for that revision is in flight, so retrying later converges; "failed" carries a reason and

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 default. - index_working_tree: overlay UNCOMMITTED edits (changedFiles path+content, optional deletedPaths

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. - list: records for a project, filter by repository/symbolPath/filePath/status. - update: needs id; st

diff_impactread-only

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's effective revision, base = previous indexed. For UNCOMMITTED edits, run ref (op:"index_working_tre

estimate_scoperead-only

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_projectsread-only

List all projects with indexing summaries. Find a project by name or check which exist.

list_repositoriesread-only

List repositories in a project. Find repository names to scope a query to one repo.

list_file_symbolsread-only

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}.

mapread-only

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 (Louvain clusters with hubs, paths and cross-module coupling), plus namedModules/totalModules: a mod

list_tests_forread-only

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_lookupread-only

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 prefer locate/find_node. Reads the latest indexed revision, no ref pin.

freshnessread-only

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_healthread-only

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 not index) and status "failed" means discovery found no source, so only "indexing" is worth waiting

find_http_routeread-only

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 text search misses.

find_noderead-only

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 carries scip_package_name (and scip_package_version / scip_manager when known). For a class/interface/str

ask_codebaseread-only

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 sufficient_to_answer=true, answer without further tool calls. commitSha pins a revision.

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 the dashboard; without either the attach is refused (private_repository_needs_credential) instead of

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 once attached).

list_installationsread-only

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 = connect the GitHub App on the dashboard (Project > Repositories). An installation whose GitHub call faile

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 .scip cache serve), so a parser fix inside a SCIP runner, an external-moniker re-pin, or a toolchain

contextread-only

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. Synthesized explanation: ask_codebase.

bundleread-only

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), find_node, list_file_symbols, find_http_route. Returns results in input order; unsupported tool nam

Alternatives in Developer Tools

Compare →
Try “Notion”, “Stripe”, “create invoice”, “browser”