Your docs went stale.
Your agents didn't notice.
MsgStack keeps your API constraints, SLAs, deprecation timelines and config defaults as typed facts in a graph — versioned, with provenance. Agents query it over MCP. When one fact changes, everything that depends on it flags automatically.
Facts have dependencies. Embeddings don't.
Vector search finds text that resembles your question. It cannot tell you that the rate limit you just quoted is downstream of a gateway policy that changed last Tuesday. MsgStack stores facts as typed nodes — DEPENDS_ON, SUPERSEDES, CONTRADICTS — and walks them. Retrieval crosses spec boundaries; a change cascades.
> get_impact 441-B "Checkout is limited to 1000 req/min per API key." LOCKED · payments-api · v12 changing this marks stale: ├─ integration-guide DEPENDS_ON ├─ platform-slo/338 DEPENDS_ON └─ onboarding/104 INFORMS
Built for services, not campaigns.
An assertion is typed: a constraint, an SLA, a deprecation, a config default, an interface contract. Those are the categories a service owner actually maintains — and the ones an agent gets wrong most expensively.
Engineering Spec
Engineering
Constraints, SLAs, interface contracts, deprecations. The default shape for a service or component.
Policy Shield
Security
Security posture, compliance assertions, approved answers. Retrieved verbatim — never paraphrased.
Incident Record
Operations
Runbook steps, postmortems, decisions. What actually happened and what it changed.
Edit one fact, invalidate the rest.
Two relationships carry staleness. When an assertion changes, everything joined to it by DEPENDS_ON or INFORMS is marked outdated and drops out of grounding results — transitively, and across spec boundaries. Nothing has to remember to check.
DEPENDS_ON · INFORMS · SUPERSEDES · CONTRADICTS · OWNS · IMPLEMENTS · MENTIONS
DEPENDS_ON and INFORMS cascade; the rest are navigational
Verbatim · Structured · Grounded
A→B→C fully invalidates; cycles terminate
A real session, end to end.
Discover
list_specs returns every spec with its assertion count and how many are locked.
Retrieve
search_assertions fuses vector recall with graph expansion — results can come from a spec you didn't ask about.
Traverse
traverse_graph walks DEPENDS_ON and MENTIONS outward, returning the path that reached each fact.
Check impact
get_impact shows the blast radius before you edit — the same walk that runs automatically on write.
Routes, fused. Vector recall for open questions, graph traversal for dependencies — combined with reciprocal rank fusion.
Tier 1 assertions are reproduced verbatim and validated after generation, not paraphrased toward.
Manual checks needed. Staleness cascades on write, transitively, across specs.
Run the checker yourself.
MsgStack scores generated text against approved assertions. Simulate scanning a draft release note for claims that nothing in the graph supports.
Verification Audit
Self-hosted, yours entirely.
MCP server, admin UI, knowledge graph and artifact generation — open source and staying that way. Local vector index, no external vector database, one docker compose.
Request Early Access
MsgStack is open source and self-hostable. Join the developer waitlist for early access to updates, new grounding schemas, and MCP tooling.