Lattice MCP server: expose the vault graph as Model Context Protocol tools.
Lattice MCP provides 14 well-named, read-only vault query tools with consistent verb_noun naming (vault_*). All tools have descriptions (avg ~80 chars) and input schemas with typed parameters. However, descriptions are terse (many under 100 chars), lack WHEN/WHY guidance, and output schemas are not documented. Two write tools (vault_rename, vault_patch) lack dry-run confirmation patterns. No error recovery guidance. Parameter descriptions are minimal; many lack format/constraint details. Composition is strong, tools chain well (e.g., vault_keys → vault_query). Security: no secrets exposed, but no permission gates or audit hints.
Nodes linking to a note.
Unresolved [[link targets]]. Optional dir scope + limit (default 200).
Notes whose updated/date frontmatter is on/after an ISO date (newest first). Re-ground a session on just the deltas.
Token-budgeted context bundle for a note (markdown + manifest).
Budget-friendly map of the vault: every directory with its note count.
Notes under a directory (contains tree), capped at limit (default 200). For the whole-vault shape use vault_dirs instead of "/".
Enumerate frontmatter keys with their values + counts, to discover vault_query filters.
Output schemas not documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. Affects all 14 tools.
Descriptions are terse (avg ~80 chars, many <100). Lack WHEN/WHY context. E.g., 'Nodes linking to a note' does not explain when to use vault_backlinks vs vault_links or what the output structure is.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Nodes a note links out to.
Nodes with no resolved inbound link. Optional dir scope + limit (default 200).
Patch frontmatter: set/add/unset keys. Dry-run by default; pass apply:true to write.
Nodes whose frontmatter matches all key=value filters. Call vault_keys first to discover valid keys/values. Note: `type` is the frontmatter field (e.g. spec/reference), not the structural index/note kind.
Move a note and repair every inbound link (wiki/markdown/frontmatter). Dry-run by default; pass apply:true to write. Never touches git.
Full-text search over title and body.
Supersession edges (src supersedes dst). A dst here is an overruled decision — read the superseding note instead.
Write tools (vault_rename, vault_patch) accept apply:boolean but lack explicit confirmation/dry-run pattern guidance. LLMs may not understand that omitting apply=true is safe.
Parameter descriptions lack format/constraint details. E.g., vault_changed_since 'since' param says 'ISO date' but does not specify timezone, whether time is required, or what happens if date is in future.
No error recovery guidance. If vault_query returns no results or vault_search times out, LLM has no hint on what to try next (e.g., 'Try vault_keys to discover valid filters').