# @papyruslabsai/seshat-mcp

Structural code intelligence for AI agents: a compiled typed symbol graph over MCP.

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the package rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 0.20.2
- **Author:** Unknown
- **License:** MIT
- **npm:** @papyruslabsai/seshat-mcp
- **Source:** https://github.com/papyruslabs-ai/seshat-mcp
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

60/100 (B), scored on the package rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-10-06T15:06:11.661Z
- **Version scanned:** 0.20.2
- **CVEs:** none found by OSV at scan time

## Tools

34 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `get_account_status` — See your current plan, available tools, and credit balance. Call this if a tool returns a tier error or you want to know what tools are available.
- `list_projects` — Start here. Returns all synced codebases with their size, language, and project name. You need the project name for every other tool. If this returns empty, use
- `sync_project` — Import a public GitHub repo into Seshat for structural analysis. Call this when list_projects returns empty or when the user wants to analyze a new repo. Detect
- `query_entities` — Like grep but for code structure. Find functions, classes, and routes by name, architectural layer (route/service/component), or module. Returns matching symbol
- `get_entity` — Get everything about one function or class — its signature, callers, callees, data flow, constraints, source location, and database operations (which tables it 
- `get_dependencies` — Trace who calls a function and what it calls, up to N levels deep. Use this instead of grep-for-function-name when you need the actual call chain — returns the 
- `get_data_flow` — See what data a function reads, returns, and mutates (DB writes, state changes). Use this when debugging data bugs or when you need to verify whether a function
- `find_by_constraint`
- `get_blast_radius` — Before modifying a function, call this to see everything that could break. Returns all transitively affected symbols — both upstream callers and downstream call
- `get_lineage` — The change history of one symbol, typed by what kind of change each commit made (body, calls, data, signature, constraints…), with CI verdicts, reverts, rename 
- `get_hotspots`
- `get_co_change_clusters`
- `list_modules` — Get a bird's-eye view of how the codebase is organized. Groups all symbols by architectural layer (route/service/component), module, file, or language with coun
- `get_topology` — Get the full API surface map in one call — all routes, middleware, auth patterns, and database tables. Use this when you need to understand the overall architec
- `get_optimal_context` — Before working on a function, call this to get the most relevant related code ranked by importance and fitted to a token budget. Returns a prioritized reading l
- `find_entry_points` — List the ways into the system: route/controller handlers, test entries, framework plugin registrations, and exported symbols (the public API surface), classifie
- `trace_data_path` — Follow data from one function through the call graph to its sinks. From a start entity it walks callees, records the data each hop consumes/produces/mutates, an
- `find_dead_code` — Find functions that nothing calls. Walks the call graph from all entry points (routes, exports, tests) and flags symbols that are unreachable. Use this during c
- `find_layer_violations` — Find places where the architecture is broken — a database repository calling a route handler, a utility importing a component. Returns every backward or skip-la
- `get_coupling_metrics` — Measure how tangled your code is. Returns coupling (cross-boundary dependencies), cohesion (within-group dependencies), and instability scores. High coupling + 
- `get_auth_matrix` — Audit authentication coverage. Shows which API routes and controllers require auth and which don't, plus inconsistencies like database access without auth check
- `find_error_gaps` — Find crash risks: functions that throw or have network/DB side effects whose callers don't catch errors. Returns the specific caller→callee pairs where exceptio
- `get_test_coverage` — See which production functions are actually exercised by tests via the call graph — semantic coverage, not line coverage. Optionally ranks uncovered functions b
- `find_ownership_violations` — Find memory and lifecycle issues — entities with complex ownership, unsafe blocks, escaping references, or illegal mutability on borrowed data. Returns 0 for mo
- `query_traits` — Find functions by inferred behavioral trait — "fallible" (can fail, including transitively via callees that throw), "asyncContext" (carries async state), "gener
- `find_exposure_leaks` — Find places where public/API code directly accesses private internals, bypassing the intended abstraction boundary. Use this during API design reviews or before
- `find_semantic_clones`
- `estimate_task_cost`
- `simulate_mutation`
- `create_symbol`
- `diff_bundle`
- `conflict_matrix`
- `trace_boundaries`
- `query_data_targets`

## Install

**Verdict: review** — Installable, but 1 thing to check first: No publisher has proved control of this listing; it is indexed, not vouched for.
**Cautions** (coverage gaps and advisories — never blocking)
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"seshat\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@papyruslabsai/seshat-mcp\"\n      ],\n      \"env\": {\n        \"SESHAT_API_KEY\": \"<YOUR_SESHAT_API_KEY>\"\n      }\n    }\n  }\n}"
```
**Credentials it will ask for** (names only — Forge never holds a value):
- `SESHAT_API_KEY` — Seshat API Key (required)
Placeholders only. Forge never holds, brokers, or transmits a credential value — replace each <YOUR_NAME> in your own config file. Do not send a value back to Forge; no Forge endpoint accepts one.
- This entry needs 1 credential (1 required). The generated config carries placeholders, so it will fail in the editor rather than at runtime if they are left unset.

## Blast radius

Moderate blast radius — holds an api key; runs on your machine.
- Floor 23, ceiling 23 (tier: moderate)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/%40papyruslabsai%2Fseshat-mcp
- Install plan: https://forgeregistry.com/api/v1/packages/%40papyruslabsai%2Fseshat-mcp/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/%40papyruslabsai%2Fseshat-mcp
- HTML page: https://forgeregistry.com/registry/%40papyruslabsai%2Fseshat-mcp
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
