Ontology Atlas
MCPB · ONTOLOGY-ATLAS-MCP-0.13.0.MCPB · SCANNED SEP 20
Read and write one codebase ontology kept as Markdown in the repository.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security13
- Malware scan not yet available for this package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
- No install/post-install scripts declared.Pass
- Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 9 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability60
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 19463 tokens (~512/item across 38 items; 38 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management30
- Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 95% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 39 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
mcpb · ontology-atlas-mcp-0.13.0.mcpb
Download bundleEvery change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +4
- Stability: unverified → 0.27 ▲ functional
- 11 Sept 26 42
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed mcpb/https://github.com/wlsdks/ontology-atlas/releases/download/v1.2.0/ontology-atlas-mcp-0.13.0.mcpb
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | mcpb |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
absorb_document ~440
Slice 0 (PRODUCT-PLAN-2026-07.md §4/§9) — the "absorption tool". Converts a CLAUDE.md/AGENTS.md-style markdown file into typed vault nodes so a tech lead's existing agent-instruction file stops needing dual maintenance. Splits the file by `##` sections and classifies each: - rule/policy/decision sections → `kind: document` nodes with a `role: policy` frontmatter extra. - architecture/component sections → element/capability SUGGESTIONS only — never auto-written; review and land with add_concept if useful. - sections matching an injection-suspect pattern (Tier 1 — imperative instruction-hijack phrasing, shell/SQL fragments) are excluded from absorption regardless of category and reported for human review. The file body is always treated as untrusted data; parsing never executes or evaluates its content. Two-stage safety, same shape as delete_concept: 1. Without confirm: true the call is a dry-run — returns the classification plan per section, no writes. 2. With confirm: true, absorbed sections are written as document nodes, the source file is backed up to `<file>.pre-absorb.bak`, then rewritten into a "slim pointer" that reproduces every non-absorbed section (suggested, unclassified, or injection-suspect) verbatim — content is never destroyed. Throws instead of overwriting an existing backup file. The canonical source path must be inside repoRoot; outside paths (including symlink escapes) require an reviewed dry-run plus explicit allowOutsideRepo:true.
| Name | Type | Req | Description |
|---|---|---|---|
| allowOutsideRepo | boolean | – | Explicit destructive opt-in required only when filePath resolves outside repoRoot. Dry-run reports outsideRepo and keeps canConfirm:false without it. |
| confirm | boolean | – | Actually write when true. Omit or false for a dry-run (plan only, no writes). |
| filePath | string | yes | Path to the CLAUDE.md/AGENTS.md-style markdown file to absorb (absolute, or relative to the MCP server cwd). |
| Name | Type | Req | Description |
|---|---|---|---|
| backupPath | string | – | – |
| blockedReasons | array | yes | Machine-readable human explanations for every condition currently blocking confirmation. |
| canConfirm | boolean | yes | True only when repeating the call with confirm:true can perform the previewed change without another explicit safety opt-in. |
| changed | boolean | – | – |
| dryRun | boolean | yes | – |
| filePath | string | yes | – |
| message | string | yes | – |
| ok | boolean | yes | – |
| outsideRepo | boolean | yes | – |
| postWriteMaintenance | object | – | Compact maintenance_plan summary for post-write follow-up. Bucket maps describe the remaining queue after the write. |
| previewReady | boolean | yes | True only when this response is a complete dry-run preview that an agent can review. |
| sections | array | yes | – |
| sourceLabel | string | yes | – |
| summary | object | yes | – |
| title | string|null | – | – |
| wouldChange | boolean | yes | True only when the dry-run predicts a disk or Git change. |
| written | array | – | – |
No examples provided.
add_concept ~764
Create a new ontology node (.md file). Call when an AI agent finds a new capability / element / project from code analysis. Throws if the slug already exists — use patch_concept in that case. The frontmatter is normalized per kind (project gets `domains/capabilities/elements` empty arrays; capability gets `elements: []`; capability/element should also set `domain:` so the tree has a parent — missing extras come back as `warnings` in the response, not as an error. If another node already has the same title, a near-duplicate `warning` is included too — prefer patch_concept on the existing node over forking a duplicate. Successful writes return compact `postWriteMaintenance` (maintenance_plan) with count-safe `byPhase` / `bySeverity` / `byKind` queue buckets, action `score`, executable `proposedAction`, and current-page `nextExecutableAction` / `nextReviewAction` pointers so agents can immediately see graph cleanup / relation suggestions after the new node lands. **For bulk creation (e.g. bootstrap flow with 5+ nodes) use `add_concepts({concepts: [...]})` (batch, max 50, partial result) — saves K-1 round-trips.** When `kind` is `element`: an element names a CONCEPT a capability uses (e.g. "jwt-token"), not a file. If your `title` is a bare path or ends in a source extension, you are describing evidence, not the concept — rename `title` to the role and put the path in `path:`, or if 3+ siblings under the same parent already look like this, call `get_concept` on the parent and consider `patch_concept` on an existing sibling instead of adding another file-mirror node. The same rule binds the `slug`: flat under the kind folder (`elements/<role-name>`), never a code path (`elements/src/views/home` is rejected) — path-style slugs collide the moment two files share a basename and the graph silently merges distinct nodes.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Markdown body (optional). When omitted a kind-specific starter body is written so the file is self-explanatory in the editor. |
| capabilities | array | – | Capability slugs this node owns (project / domain). |
| domain | string | – | Parent domain slug. Strongly expected for kind=capability and kind=element — without it the node floats orphaned in the tree. |
| elements | array | – | Element slugs this node uses (project / capability). |
| kind | string | yes | project / domain / capability / element / document. (vault-readme is reserved for the auto-generated README.md and should not be set by agents.) |
| labels | object | – | Per-locale display names, e.g. { "ko": "결제", "en": "Payments" }. Written as `display_ko` / `display_en` frontmatter keys; `title` stays the single source for search/matching. Fill BOTH locales the va… |
| path | string | – | One canonical implementation entrypoint for a capability or element (repo-relative file or directory). Preserved as evidence and checked by validate_vault path drift. |
| slug | string | yes | Vault-relative slug (omit the .md extension), flat under the kind folder — e.g. "elements/jwt-token", "capabilities/token-issue". A slug is the node's name, never a code path: "elements/src/views/hom… |
| title | string | yes | Display title for the node. |
| Name | Type | Req | Description |
|---|---|---|---|
| changed | boolean | yes | – |
| filePath | string | yes | – |
| ok | boolean | yes | – |
| postWriteMaintenance | object | – | Compact maintenance_plan summary for post-write follow-up. Bucket maps describe the remaining queue after the write. |
| slug | string | yes | – |
| warnings | array | – | – |
No examples provided.
add_concepts ~465
Batch-create multiple nodes in one call — same per-row shape as `add_concept`. Use after `analyze_repo_structure` or another reviewed proposal flow when the agent has K accepted candidates from the user — replaces K×`add_concept` round-trips. Each row is processed independently: existing-slug / invalid-kind / missing-required-fields / non-object row shape / unknown row fields surface as `{ slug, ok: false, error }` rows whose errors include a `concepts[n]` row label, single unknown-field rows include `receivedField` plus one-row `unknownFields`, multi unknown-field rows report every unknown field with nearest hints and `Received fields: ...`, and duplicate input slugs report the later `concepts[n]` row plus first-seen `concepts[m]` with structured `rowName` / `firstSeenAt`; the rest still land. A row whose normalized title matches an earlier landed row in the same batch still lands but carries a near-duplicate `warning` — `patch_concept` the earlier node instead of forking the same concept (duplicates are the #1 growing-vault failure mode). `concepts[]` order in the response matches the input. Cap = 50 per call (split into multiple batches for larger sets). NO atomic rollback — if you need all-or-nothing semantics use single `add_concept` calls. Invalid-only batches return no row-level write metadata and no top-level `postWriteMaintenance`. When at least one row changes the vault, the response includes one compact `postWriteMaintenance` (maintenance_plan) with count-safe `byPhase` / `bySeverity` / `byKind` queue buckets, action `score`, executable `proposedAction`, and current-page `nextExecutableAction` / `nextReviewAction` pointers for the final graph. Rows whose `title` is a bare file path follow the same rule as `add_concept` above. Prefer one capability node covering a directory plus a short `elements:` list over one row per file, unless each file's role differs in a stated sentence.
| Name | Type | Req | Description |
|---|---|---|---|
| concepts | array | yes | Array of concept specs (max 50). Each row uses the same shape as `add_concept` input. |
| Name | Type | Req | Description |
|---|---|---|---|
| concepts | array | yes | – |
| postWriteMaintenance | object | – | Compact maintenance_plan summary for post-write follow-up. Bucket maps describe the remaining queue after the write. |
No examples provided.
add_relation ~435
Add a semantic relation between two nodes. Appends to the matching frontmatter graph key (domains / capabilities / elements / dependencies / relates / contains / describes); `domain` sets the source node's inline parent domain. The relation type picks which key receives the entry. A new `depends_on` relation requires a nonblank `why`; an already-existing edge remains an idempotent read even if legacy data has no rationale. **R11**: optional `expected_mtime` — pass the source-side `mtime` from a prior get_concept so concurrent external edits throw VaultConflictError. Invalid relation `type` is rejected before endpoint slug resolution with a closest-value hint and structured `valueName` / `receivedValue` / `suggestion` / `allowedValues` repair fields in `structuredContent`, with no `changed`, `alreadyExists`, or `postWriteMaintenance` write metadata. Changed writes return compact `postWriteMaintenance` (maintenance_plan) with count-safe `byPhase` / `bySeverity` / `byKind` queue buckets, action `score`, executable `proposedAction`, and current-page `nextExecutableAction` / `nextReviewAction` pointers so agents can immediately see graph cleanup / relation suggestions after the edge lands. **For multiple already-approved semantic edges use `add_relations({relations: [...]})` (batch, idempotent, max 50). `infer_imports.moduleEdges` require exact-evidence review, a semantic rationale, and human approval first.**
| Name | Type | Req | Description |
|---|---|---|---|
| expected_mtime | number | – | Optional conflict guard for the source slug. If the source mtimeMs differs at write time, the call throws. |
| from | string | yes | Source slug. |
| to | string | yes | Target slug. |
| type | string | yes | Relation type. |
| why | string | – | One-line rationale for this relation ("A leans on B because ..."). Stored in the SAME frontmatter write as the ref (relation_notes map) — write it whenever you know the reason; a graph edge without a… |
| Name | Type | Req | Description |
|---|---|---|---|
| alreadyExists | boolean | – | – |
| changed | boolean | – | – |
| from | string | yes | – |
| key | string | – | – |
| ok | boolean | yes | – |
| postWriteMaintenance | object | – | Compact maintenance_plan summary for post-write follow-up. Bucket maps describe the remaining queue after the write. |
| to | string | yes | – |
| type | string | yes | – |
No examples provided.
add_relations ~432
Batch-add multiple relations in one call — same per-row shape as `add_relation`. Use after `analyze_repo_structure` or another review flow when the agent has K semantic edges accepted by the user — replaces K×`add_relation` round-trips. Inferred module edges are not accepted merely because imports exist; review exact evidence and include the required nonblank `why` for every new `depends_on`. Each row is processed independently and idempotently: existing edges return `{ok: true, alreadyExists: true}`; missing source/target slugs / unknown type / non-object row shape / unknown row fields surface as `{ok: false, error}` with a `relations[n]` row label and structured `rowName`; unknown type rows include a closest-value hint with structured `valueName` / `receivedValue` / `suggestion` / `allowedValues`; single unknown-field rows include `receivedField` plus one-row `unknownFields`; multi unknown-field rows report every unknown field with nearest hints, `allowedFields`, `receivedFields`, and `Received fields: ...`. `relations[]` order in the response matches the input. Cap = 50 per call. NO atomic rollback — for all-or-nothing semantics use single `add_relation` calls. Tip: avoid `expected_mtime` in batch when multiple rows share the same `from` slug — the first row mutates that file so the second would see a stale mtime. Invalid-only batches return no row-level `changed` / `alreadyExists` write metadata and no top-level `postWriteMaintenance`. When at least one row changes the vault, the response includes one compact `postWriteMaintenance` (maintenance_plan) with count-safe `byPhase` / `bySeverity` / `byKind` queue buckets, action `score`, executable `proposedAction`, and current-page `nextExecutableAction` / `nextReviewAction` pointers for the final graph.
| Name | Type | Req | Description |
|---|---|---|---|
| relations | array | yes | Array of relation specs (max 50). Each row uses the same shape as `add_relation` input. |
| Name | Type | Req | Description |
|---|---|---|---|
| postWriteMaintenance | object | – | Compact maintenance_plan summary for post-write follow-up. Bucket maps describe the remaining queue after the write. |
| relations | array | yes | – |
No examples provided.
analyze_repo_structure ~1,027
R16 (autonomous ingest base) — analyze a code repository and propose ontology node candidates. side effect 0 (vault frontmatter NOT modified). Returns deterministic candidates the agent must turn into an evidence-backed proposal and move through the construction lifecycle before any exact batch-writer rows are released. Repository structure is implementation evidence, not automatic business meaning: extractionContract and proposedBusinessOntology make that uncertainty explicit. Detects: - package.json `name` → project candidate - README.md first H1 → project title fallback - README.md H2 sections (skipping generic "Usage"/"Installation"/etc) → domain candidates - src/features|entities|widgets|views/* (FSD) → capability/element candidates - src/* depth-1 folders (generic) → capability candidates + index entry → element - apps/* and packages/* members with package.json → implementation element candidates - README.rst + bounded static setup.py → Python project/package evidence without execution - mixed current and future/negated/deprecated README prose → exact current candidate excerpt plus bounded line-scoped `reviewRequiredEvidence`; review units stay visible but cannot support a proposal claim - selected safe README sections share the existing 1,200-character budget deterministically; no document, heading, or excerpt cap grows - root Python packages plus at most 12 import-connected implementation boundaries → direct modules plus up to 2 exact security/policy/risk file anchors; unused files are not mirrored and no capability is inferred from imports - bounded root Cargo package or repo-contained literal direct workspace members → typed feature declaration + literal cfg/cfg_attr source provenance; predicates are not evaluated and no runtime/import/semantic dependency is inferred - a complete proposal may select at most 4 additional exact TypeScript, JavaScript, Python, or Rust file endpoints already observed by infer_imports for distinct navi…
| Name | Type | Req | Description |
|---|---|---|---|
| ignore | array | – | Extra folder names to skip (added to defaults: node_modules, .git, dist, build, …). |
| maxDepth | integer | – | Non-negative integer folder walk depth (default 2, max 10). Higher → more elements. |
| proposal | object | – | Optional business ontology proposal to validate against repository evidence before any write call. Python proposals may select at most 4 exact observed import endpoints beyond the analyzer candidates. |
| qualification | object | – | Optional independent evaluation and declared human acceptance bound to the exact planDigest, planRevision, and sourceDigest returned for this proposal. Omit it on the first review call. |
| rootPath | string | – | Repository root to analyze. Defaults to the MCP server cwd. |
| Name | Type | Req | Description |
|---|---|---|---|
| capabilities | array | yes | – |
| configurationEvidence | object | yes | – |
| domains | array | yes | – |
| elements | array | yes | – |
| extractionContract | object | yes | – |
| framework | string | yes | – |
| meaningGate | object | yes | – |
| project | object | – | – |
| proposalValidation | object | yes | – |
| rootPath | string | yes | – |
| semanticEvidence | array | yes | – |
| skipped | array | yes | – |
| suggestedRelations | array | yes | – |
No examples provided.
compile_ontology ~449
Compile the whole markdown vault into a deterministic graph artifact: canonical nodes, edges, aliases, graph issues, graph-array canonicalization actions, and optional adjacency indexes. This is the compiler-style read path for graph-database-like use: call it before advanced reasoning, indexing, export, or non-developer-friendly graph views. Includes a stable semantic graphHash and maxMtime for cache invalidation. side effect 0. Large vaults (100+ nodes) can exceed the MCP token cap with the default full payload — use `summary: true` for cheap polling (counts + graphHash, no arrays), or `nodesLimit/nodesOffset` / `edgesLimit/edgesOffset` to slice arrays. The response includes `nodesPagination` / `edgesPagination` meta with `{offset, limit, total, returned, hasMore, nextOffset}` when sliced.
| Name | Type | Req | Description |
|---|---|---|---|
| edgesLimit | integer | – | Positive integer max edges to return. Pair with `edgesOffset` to paginate. Max 500. |
| edgesOffset | integer | – | Non-negative integer starting index in the sorted edges array. Defaults 0. |
| includeIndexes | boolean | – | When true, include indexes `{out, in, byKind, byDomain, edgeById, aliasToSlug, uidToSlug, slugToUid, mergedUidToSlug}`. Graph traversal remains slug-based; UID indexes provide exact identity resoluti… |
| nodesLimit | integer | – | Positive integer max nodes to return. Pair with `nodesOffset` to paginate. Omit for unlimited (backward compat), max 500 when provided. |
| nodesOffset | integer | – | Non-negative integer starting index in the sorted nodes array. Defaults 0. |
| summary | boolean | – | When true, omit `nodes` / `edges` / `aliases` / `ambiguousAliases` / `canonicalizationActions` / `indexes` arrays — return only `graphHash`, `maxMtime`, counts (`nodeCount`/`edgeCount`/`aliasCount`/.… |
| Name | Type | Req | Description |
|---|---|---|---|
| aliasCount | integer | yes | – |
| aliases | array | – | – |
| ambiguousAliasCount | integer | yes | – |
| ambiguousAliases | array | – | – |
| byDomain | object | yes | – |
| byKind | object | yes | – |
| canonicalizationActionCount | integer | yes | – |
| canonicalizationActions | array | – | – |
| edgeCount | integer | yes | – |
| edges | array | – | – |
| edgesPagination | object | – | – |
| externalEdgeCount | integer | yes | – |
| graphHash | string | yes | – |
| indexes | object | – | – |
| issueCount | integer | yes | – |
| issues | array | – | – |
| maxMtime | number | yes | – |
| nodeCount | integer | yes | – |
| nodes | array | – | – |
| nodesPagination | object | – | – |
| resolvedEdgeCount | integer | yes | – |
| summary | object | – | – |
| unresolvedEdgeCount | integer | yes | – |
| version | integer | yes | – |
No examples provided.
connect_project_source ~280
Bind a project node to the local code folder it describes, measure it, and write the source receipt. This is what `nextAction: connect_source` (and `repair_source_binding` / `measure_source` / `remeasure_source`) asks for. Omit `rootPath` and the server infers it: the git repository enclosing the vault wins, otherwise the nearest ancestor folder carrying a project manifest. Without `confirm: true` nothing is written — you get the proposed folder, how many declared `path:` claims actually land in it, and the exact confirming call. Re-running with a different `rootPath` replaces the binding; `disconnect_project_source` removes it. The absolute root stays in the local gitignored sidecar `.ontology-atlas/project-sources.json` and never enters the receipt, the graph markdown, or any handoff.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Required to write. Default false returns the proposal and changes nothing. |
| projectSlug | string | yes | Exact project node slug (or an unambiguous vault alias) to bind. |
| repair | boolean | – | Discard a malformed .ontology-atlas/project-sources.json instead of refusing to write over it. |
| rootPath | string | – | Absolute local folder holding the code. Omit to auto-infer, or to re-measure an existing binding. |
| Name | Type | Req | Description |
|---|---|---|---|
| binding | object | yes | – |
| changed | boolean | yes | – |
| confirmed | boolean | yes | – |
| contract | string | yes | – |
| inference | object|null | – | – |
| mode | string | yes | – |
| nextCall | object | – | – |
| ok | boolean | yes | – |
| previewReceipt | object | – | – |
| previousBindingCount | number | – | – |
| projectSlug | string | yes | – |
| projectSource | object | – | – |
| remedy | object | – | – |
| undo | object|null | – | – |
No examples provided.
connection_info ~54
Return the exact active vault root and code-repository root used by this MCP process, including how each root was resolved. Call first when a client may have stale configuration or multiple workspaces. Root changes require restarting the MCP process.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| repoResolution | string | yes | – |
| repoRoot | string | yes | – |
| restartRequiredForRootChange | boolean | yes | – |
| sameRoot | boolean | yes | – |
| server | object | yes | – |
| vaultResolution | string | yes | – |
| vaultRoot | string | yes | – |
No examples provided.
delete_concept ~318
⚠ DESTRUCTIVE — permanently deletes the vault .md file. Two-stage safety: Both preview and confirmed responses identify the node by permanent `uid` plus current `slug`. 1. Without confirm: true the call is a dry-run — returns a backlinks preview without deleting. 2. If any backlinks exist the call throws — refuses while other nodes still reference this slug. Pass force: true to delete anyway (the referrers become dangling). Successful deletion returns the frontmatter + body so a user who deleted by mistake can recreate the node via add_concept. Directories are left untouched. Pass `expected_mtime` to guard against concurrent external edits — throws if the file changed on disk since you read it. Confirmed deletes return compact `postWriteMaintenance` (maintenance_plan) with count-safe `byPhase` / `bySeverity` / `byKind` queue buckets, action `score`, executable `proposedAction`, and current-page `nextExecutableAction` / `nextReviewAction` pointers for the final graph.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Actually delete when true. Omit or false for a dry-run (backlinks preview, no delete). |
| expected_mtime | number | – | Optional conflict guard — file mtimeMs at read time. If it differs at delete time, the call throws. |
| force | boolean | – | Delete even when backlinks exist (referrers become dangling). Defaults to false. |
| slug | string | yes | Vault-relative slug (omit the .md extension). |
| Name | Type | Req | Description |
|---|---|---|---|
| backlinks | array | – | – |
| backlinksAtDelete | array | – | – |
| blockedReasons | array | yes | Machine-readable human explanations for every condition currently blocking confirmation. |
| canConfirm | boolean | yes | True only when repeating the call with confirm:true can perform the previewed change without another explicit safety opt-in. |
| captured | object | – | – |
| changed | boolean | – | – |
| dryRun | boolean | yes | – |
| filePath | string | yes | – |
| forced | boolean | – | – |
| message | string | – | – |
| ok | boolean | yes | – |
| postWriteMaintenance | object | – | Compact maintenance_plan summary for post-write follow-up. Bucket maps describe the remaining queue after the write. |
| previewReady | boolean | yes | True only when this response is a complete dry-run preview that an agent can review. |
| slug | string | yes | – |
| uid | string | yes | – |
| wouldChange | boolean | yes | True only when the dry-run predicts a disk or Git change. |
No examples provided.
disconnect_project_source ~107
Remove a project node's local source binding and its receipt. The reversal of connect_project_source — use it when the wrong folder was bound, or to stop measuring. Without `confirm: true` it only reports what would be removed. Other projects' bindings are never touched, and no ontology markdown changes.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Required to write. Default false lists the binding that would be removed. |
| projectSlug | string | yes | Project node slug whose source binding should be removed. |
| Name | Type | Req | Description |
|---|---|---|---|
| bindings | array | yes | – |
| changed | boolean | yes | – |
| confirmed | boolean | yes | – |
| contract | string | yes | – |
| nextCall | object | – | – |
| ok | boolean | yes | – |
| projectSlug | string | yes | – |
| projectSource | object | – | – |
| remedy | object | – | – |
| removed | number | yes | – |
No examples provided.
finalize_project_meaning ~199
Finalize the current project competency Markdown after concept/relation writes, vault validation, and a complete project compile. The server derives the current body digest, project graph hash, source fingerprint, and witness inventory itself; callers cannot submit or restamp those values. This writes only a small provenance receipt to `.ontology-atlas/project-meaning.json`. It never stores raw answers, witness text, absolute source roots, or remote coordinates. `ok: true` means the receipt was written, not that source currentness is verified; read `meaningAssessment` or a fresh `agent_brief` for the fail-closed categorical result.
| Name | Type | Req | Description |
|---|---|---|---|
| expected_mtime | number | yes | Required conflict guard. Pass the project node mtime from get_concept; any intervening human or agent edit blocks finalization. |
| projectSlug | string | yes | Exact project node slug (or an unambiguous vault alias) whose current Competency answers section should be finalized. |
| Name | Type | Req | Description |
|---|---|---|---|
| bodyDigest | string | yes | – |
| changed | boolean | yes | – |
| contract | string | yes | – |
| graphHash | string | yes | – |
| meaningAssessment | object | yes | – |
| measuredAt | string | yes | – |
| ok | boolean | yes | – |
| projectSlug | string | yes | – |
| sourceFingerprint | string | yes | – |
No examples provided.
find_backlinks ~86
Return every node that points to the target slug. Scans both frontmatter array keys (capabilities / elements / dependencies / relates / contains / describes etc.) and the wikilinks / markdown links in the body. Used by AI agents to walk the graph from a node to its dependents.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | Target vault-relative slug (omit the .md extension). |
| Name | Type | Req | Description |
|---|---|---|---|
| matches | array | yes | – |
| target | string | yes | – |
| total | integer | yes | – |
No examples provided.
find_evidence ~323
Find vault docs that mention a given concept by title. Useful when an AI agent asks where a capability is realized in code or docs. Each match includes a prose `excerpt` (max 200 chars, headings/tables/code skipped) so agents see *what the matching doc says* without an extra get_concept call. Matches are RANKED by a deterministic relevance `score` (title match > frontmatter ref > body, plus a title token-overlap tiebreaker), then by whether the doc is a graph node, then slug — best-first. **A vault holds ordinary markdown too** (meeting notes, memos, drafts have no `kind:` and are not graph nodes); every row says which it is via `isNode`, non-nodes rank below nodes of equal relevance, and `nodesOnly: true` filters them out. Do not cite a non-node as graph evidence without saying so. Pass `limit` for the top-N. When zero docs mention the title, the response includes a `growthHint` — near-titled vault nodes to check first, or an add_concept scaffold if the concept looks genuinely new.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Return only the top-N highest-scoring matches. Omit for all matches (still ranked). |
| nodesOnly | boolean | – | Return only graph nodes (docs with a `kind:`). Default false — ordinary markdown in the same folder is included and marked `isNode: false`. |
| title | string | yes | Concept title to search for (case-insensitive substring match). |
| Name | Type | Req | Description |
|---|---|---|---|
| bodyHint | string | – | Only present when at least one match returned a partial excerpt — names the get_concepts({ body: "full" }) call that returns the rest. |
| growthHint | object | – | Only present when matches is empty — near-titled vault node(s) to check, or an add_concept scaffold, derived from the real vault title set. |
| matches | array | yes | – |
| nonNodeHint | string | – | – |
| query | string | yes | – |
No examples provided.
find_neighbors ~177
Return the one-hop graph neighborhood around a node. Unlike find_backlinks, this is graph-frontmatter only and can include outgoing, incoming, or both directions. Returns canonical edges plus neighbor node summaries so agents can inspect a local subgraph in one call.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | – | Edge direction to include. Defaults to both. |
| includeNodes | boolean | – | When true (default), include neighbor node summaries for resolved edges. |
| limit | integer | – | Positive integer max edges to return. Defaults to 100, max 500. |
| slug | string | yes | Center node slug, unique tail slug, or frontmatter `slug` alias. |
| types | array | – | Optional relation types/frontmatter keys to include, e.g. ["domain", "depends_on", "contains"]. Public add_relation types are normalized to stored graph keys. |
| Name | Type | Req | Description |
|---|---|---|---|
| center | string | yes | – |
| direction | string | yes | – |
| edges | array | yes | – |
| limited | boolean | yes | – |
| nodes | array | – | – |
| requested | string | yes | – |
| totalEdges | integer | yes | – |
| types | array | – | – |
No examples provided.
find_orphans ~132
List orphan nodes — docs that no other node references via any frontmatter array key. Useful as a cleanup starting point or to answer "which nodes are unused?". Same matching policy as find_backlinks (full slug or final segment). Root/sentinel kinds like project and vault-readme are excluded by default.
| Name | Type | Req | Description |
|---|---|---|---|
| excludeKinds | array | – | Kinds to exclude from results. Defaults to ['project', 'vault-readme']. Pass [] to include every kind. Typos fail with nearest-value hints. |
| kind | string | – | Restrict to one kind (e.g. capability). Omit for all kinds. |
| Name | Type | Req | Description |
|---|---|---|---|
| orphans | array | yes | – |
| total | integer | yes | – |
No examples provided.
find_path ~282
Shortest path between two nodes (undirected BFS). Returns `{ from, to, hops: [slug...], nodes: [{uid, slug, kind, title, domain?}], edges: [{from, to, via, rationale?}] }` where each `via` is the frontmatter key (`domains` / `domain` / `capabilities` / `elements` / `dependencies` / `relates` / `contains` / `describes`) that linked the two slugs and `rationale` is the one-line `relation_notes` sentence the declaring document stores for that pair (present only when one is stored) — so the agent sees not just *that* A and B are connected but by which key and, when someone wrote it down, *why*. Returns `{ found: false }` when no path is found within maxHops, plus a `growthHint` — a concrete add_relation (both endpoints exist) or add_concept (an endpoint is missing) example so the unanswered question becomes a vault-growth signal instead of a dead end. maxHops defaults to 5 and is capped at 20.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | Source slug. |
| maxHops | integer | – | Non-negative integer maximum hop count (default 5, max 20). |
| to | string | yes | Target slug. |
| Name | Type | Req | Description |
|---|---|---|---|
| edges | array | – | – |
| found | boolean | yes | – |
| from | string | yes | – |
| growthHint | object | – | Only present when found=false — a candidate add_relation (both endpoints exist) or add_concept (an endpoint is missing) suggestion, derived from the real vault, not invented. |
| hopCount | integer | – | – |
| hops | array | – | – |
| nodes | array | – | – |
| reason | string | – | – |
| to | string | yes | – |
No examples provided.
get_concept ~356
Fetch one node by exactly one selector: `slug` (canonical slug or unique alias) or immutable `uid`. Successful responses always carry both the permanent `uid` and current canonical `slug`; graph relations and graph-operation inputs remain slug-based. Returns frontmatter, body, direct graph neighbors, outgoingEdges (each `{to, via, rationale?}`, the rationale being the stored `relation_notes` sentence when one exists), and mtime. **By default you get `excerpt` — the first prose paragraph only. The node body is where the construction rules put definition, evidence, confidence, and in-scope/out-of-scope, so pass `body: "full"` whenever you are reading a node to answer a question rather than just to identify it.** `bodyInfo` always reports `totalChars` / `returnedChars` / `truncated`, so a partial read is never silent. **For K specific selectors in one call use `get_concepts({slugs: [...]})` or `get_concepts({uids: [...]})`.** When a slug does not resolve, structured growth guidance remains available.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | `excerpt` (default) returns the first prose paragraph as `excerpt`. `full` returns the entire markdown body as `body` and omits `excerpt`. Use `full` when the answer depends on what the node actually… |
| slug | string | – | Vault-relative slug (e.g. projects/auth-platform), unique tail slug, or frontmatter `slug` alias. Omit the .md extension. |
| uid | string | – | Exact permanent node UID. Use instead of `slug`, never together with it. |
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Entire markdown body. Present only when the caller passed `body: "full"`. |
| bodyInfo | object | yes | How much of the body this response carries — always present, so truncation is never silent. |
| excerpt | string | – | First prose paragraph. Present only when `body` is `excerpt` (the default). |
| frontmatter | object | yes | Resolved markdown frontmatter. |
| mtime | number | yes | – |
| neighbors | object | yes | Direct graph neighbor buckets. |
| outgoingEdges | array | yes | – |
| slug | string | yes | – |
| uid | string | yes | Permanent immutable node identity. |
| warnings | array | – | – |
No examples provided.
get_concepts ~270
Fetch multiple nodes by exactly one selector array: `slugs` (canonical slugs or unique aliases) or immutable `uids`. Same per-row shape as `get_concept`; successful rows always return permanent `uid` plus current canonical `slug`. Order matches the selected input array. Missing or invalid slug rows return partial `{slug, ok:false, error, ...repairFields}` rows, so later valid slugs still resolve; UID misses likewise return `{uid, ok:false, error, ...repairFields}` without aborting the batch. Graph relations and graph-operation inputs remain slug-based.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Applies to every row. `excerpt` (default) returns the first prose paragraph per row; `full` returns the entire markdown body per row and caps the batch at 20 slugs. |
| slugs | array | – | Vault-relative slugs, unique tail slugs, or frontmatter `slug` aliases (e.g. ["capabilities/x", "elements/y"]). Omit the .md extension. Max 50 per call (max 20 when body is `full`). |
| uids | array | – | Exact permanent node UIDs. Use instead of `slugs`, never together with it. Max 50 (max 20 with body `full`). |
| Name | Type | Req | Description |
|---|---|---|---|
| concepts | array | yes | – |
No examples provided.
git_history ~109
Read commit history scoped to the active vault path only. Returns bounded newest-first hashes, subjects, and authored timestamps plus limited/hasMore, shallow-repository state, and historyComplete so agents do not mistake a truncated or shallow view for complete evidence. Commits that touched only files outside the vault are excluded. Read-only; never initializes, fetches, pulls, commits, or pushes.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum newest-first vault commits to return. Defaults to 20; maximum 100. |
| Name | Type | Req | Description |
|---|---|---|---|
| branch | string|null | – | – |
| commits | array | – | – |
| count | integer | – | – |
| hasMore | boolean | – | – |
| head | string|null | – | – |
| historyComplete | boolean | – | – |
| limit | integer | – | – |
| limited | boolean | – | – |
| ok | boolean | yes | – |
| operation | string | yes | – |
| reason | string | – | – |
| repoRoot | string | yes | – |
| shallow | boolean | – | – |
| vaultPathspec | string | – | – |
| vaultRoot | string | yes | – |
No examples provided.
git_snapshot ~172
Create a local, vault-scoped Git checkpoint. Dry-run by default and returns exact expectedHead, files, validation, risk, and the shared previewReady/canConfirm/wouldChange/blockedReasons safety contract. confirm:true requires that expectedHead, blocks validator errors and Git operations in progress, commits only the vault pathspec, leaves outside files untouched, and never pushes.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Default false. Set true only after reviewing the dry-run preview and its risk/validation fields. |
| expectedHead | string | – | Required with confirm:true. Copy the exact expectedHead returned by the immediately preceding dry-run; this prevents committing after a concurrent HEAD change. |
| message | string | – | Optional local commit subject, one line and at most 200 characters. A deterministic ontology snapshot subject is generated when omitted. |
| Name | Type | Req | Description |
|---|---|---|---|
| blockedReasons | array | yes | Machine-readable human explanations for every condition currently blocking confirmation. |
| branch | string|null | – | – |
| canConfirm | boolean | yes | True only when repeating the call with confirm:true can perform the previewed change without another explicit safety opt-in. |
| commitHash | string | – | – |
| commitSummary | string | – | – |
| committed | boolean | yes | – |
| counts | object | – | – |
| detachedHead | boolean | – | – |
| dryRun | boolean | yes | – |
| expectedHead | string|null | – | – |
| files | array | – | – |
| head | string|null | – | – |
| ok | boolean | yes | – |
| operation | string | yes | – |
| operationInProgress | string|null | – | – |
| previewReady | boolean | yes | True only when this response is a complete dry-run preview that an agent can review. |
| previousHead | string | – | – |
| pushReason | string | – | – |
| pushSupported | boolean | – | – |
| reason | string | – | – |
| repoRoot | string | yes | – |
| risk | object | – | – |
| stagedOutsideVault | array | – | – |
| subject | string | – | – |
| validation | object | – | – |
| vaultPathspec | string | – | – |
| vaultRoot | string | yes | – |
| wouldChange | boolean | yes | True only when the dry-run predicts a disk or Git change. |
No examples provided.
git_status ~58
Inspect local Git state for the active vault only. Returns HEAD/branch, vault files, outside-vault change counts, staged-outside-vault warnings, and in-progress operation risk. Read-only; never initializes, stages, commits, or pushes.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| branch | string|null | – | – |
| commitHash | string | – | – |
| commitSummary | string | – | – |
| committed | boolean | – | – |
| counts | object | – | – |
| detachedHead | boolean | – | – |
| dryRun | boolean | – | – |
| expectedHead | string|null | – | – |
| files | array | – | – |
| head | string|null | – | – |
| ok | boolean | yes | – |
| operation | string | yes | – |
| operationInProgress | string|null | – | – |
| previousHead | string | – | – |
| pushReason | string | – | – |
| pushSupported | boolean | – | – |
| reason | string | – | – |
| repoRoot | string | yes | – |
| risk | object | – | – |
| stagedOutsideVault | array | – | – |
| subject | string | – | – |
| validation | object | – | – |
| vaultPathspec | string | – | – |
| vaultRoot | string | yes | – |
No examples provided.
index_project ~283
Project ontology indexing plan — run analyze_repo_structure + infer_imports + validate_vault in one read-only call. Use for large or already-existing projects where the agent needs a resumable ontology indexing checkpoint before writing. Its extractionContract treats source facts as observed evidence, README/folder meanings as proposals, and only persisted ontology meanings as shared; it also returns competency questions, uncertainty, approval gates, and whether active-vault validation actually applies to the analyzed project. The plan distinguishes raw candidates into existing, ambiguous-alias review, and genuinely new buckets, then returns exact reviewCalls for retrieving full rows. side effect 0: this tool never writes markdown. CLI `index --apply` may write analyzer-proposed concepts and containment, but inferred imports remain review-only and are never auto-promoted to depends_on.
| Name | Type | Req | Description |
|---|---|---|---|
| maxDepth | integer | – | Folder walk depth forwarded to analyze_repo_structure (default 2, max 10). |
| maxFiles | integer | – | File cap forwarded to infer_imports (default 5000, max 50000). |
| rootPath | string | – | Repository root to index. Defaults to the active resolved repository root from connection_info. |
| skipImports | boolean | – | When true, skip infer_imports and return an analyze + validate plan only. |
| threshold | integer | – | Optional module-edge count threshold for the returned import relation plan. |
| Name | Type | Req | Description |
|---|---|---|---|
| analyze | object | yes | – |
| configurationEvidence | object | yes | – |
| extractionContract | object | yes | – |
| imports | object|null | yes | – |
| meaningGate | object | yes | – |
| mode | string | yes | – |
| next | object | yes | – |
| plan | object | yes | – |
| rootPath | string | yes | – |
| semanticEvidence | array | yes | – |
| sideEffect | integer | yes | – |
| validation | object | yes | – |
| vaultRoot | string | yes | – |
No examples provided.
infer_imports ~1,310
R17 (autonomous ingest deeper) — walk TS/JS files in a code repo and infer file-level + module-level import edges. It also walks bounded root Python packages, bounded src/source-layout Python packages, and deterministic Rust use/file-module/literal-include dependencies. A valid root Go module additionally exposes typed local package-import evidence; it stays separate from legacy file edges and never self-approves a semantic relation. Structured `coverage` names the supported languages; Rust support is bounded static text evidence and does not expand macros, evaluate cfg, resolve symbols, or prove runtime impact. side effect 0 (vault frontmatter NOT modified). `moduleEdges` are source-backed review candidates, never self-approving semantic `depends_on` relations. When you know an implementation file, set `focusPath` (or `reviewMode:"focus"`) before considering `full`: Atlas returns bounded exact incoming/outgoing static import receipts, counts, and a cursor without requiring a vault. This focused source boundary is not runtime impact or a semantic relation. Omit `reviewMode` for size-safe automatic delivery: scans whose estimated full MCP result is at most 128 KiB keep the complete response; larger reconciled scans return exactly one compact, non-writing `nextRelationReview:v1` packet plus a delivery receipt and stateless cursor. Use `reviewMode:"next"` to request that bounded packet explicitly. `reviewMode:"full"` preserves the complete shape, but a result over 128 KiB additionally requires `allowLargeResponse:true`; this second confirmation prevents coding agents from accidentally opting into a multi-megabyte response. Oversized raw scans without a loadable reconciliation vault fail with an actionable error instead of emitting an unbounded default response. Every compact candidate carries `absentEndpoints`. If an endpoint is missing, `nextCalls` is empty and `endpointModelling` separates an evidence-only analysis call from the complete `rootPath + proposal` valida…
| Name | Type | Req | Description |
|---|---|---|---|
| afterReviewId | string | – | `reviewMode:"next"` only. Pass the prior packet cursor.nextAfterReviewId to advance deterministically; omit to start at the first current candidate. |
| allowLargeResponse | boolean | – | Confirmation for reviewMode:"full" only. Required when the estimated complete MCP result exceeds 128 KiB. It never changes scan contents or writes the vault. |
| focusAfterEdgeId | string | – | Focus mode only. Pass the prior focusReview.cursor.nextAfterEdgeId to advance deterministically; omit to start at the first current edge. |
| focusDirection | string | – | Focus mode only. Which exact file-level import direction to page (default both). |
| focusLimit | integer | – | Focus mode only. Maximum exact import receipts returned in one page (default 50, max 100). |
| focusPath | string | – | Repository-relative implementation file to inspect. Supplying focusPath with omitted reviewMode selects focus mode automatically. Returns bounded incoming/outgoing supported static import receipts; i… |
| ignore | array | – | Extra folder names to skip (added to defaults: node_modules, dist, build, …). |
| maxFiles | integer | – | Positive integer cap on files walked (default 5000, max 50000). Hard stop to avoid pathological monorepos. |
| reconcile | boolean | – | Default true. When true, diff the inferred module edges against the vault's compiled depends_on edges and include `reconciliation` + `reconciliationSummary`. Set false to skip (raw scan only / no vau… |
| reviewMode | string | – | Omit for automatic delivery unless focusPath is present. `focus` returns a bounded exact file-level import neighborhood for focusPath. Otherwise responses estimated at or below 128 KiB keep the compl… |
| rootPath | string | – | Repository root to analyze. Defaults to the active resolved repository root from connection_info. |
| sourceFolders | array | – | Source folders to walk (default: ['src','source','lib','app','apps','packages']). Nested scopes preserve repository-relative ontology endpoints. If none exist, falls back to rootPath. |
| Name | Type | Req | Description |
|---|---|---|---|
| contract | string | – | – |
| coverage | object | yes | – |
| delivery | object | – | Present only when omitted reviewMode was automatically compacted because the estimated full MCP result exceeded the safe delivery boundary. |
| edges | array | – | – |
| externalImports | array | – | – |
| filesScanned | integer | yes | – |
| focusReview | object | – | – |
| moduleEdges | array | – | – |
| nextReview | object|null | – | – |
| packageImportEvidence | object | – | Root Go module-only, bounded package import evidence. It is observed static source evidence, never a runtime claim or semantic relation approval. |
| packageImportEvidenceSummary | object | – | Bounded Go package-import census. Call fullEvidenceCall to retrieve the complete typed receipt; focusReview itself contains legacy file edges only. |
| reconciliation | object|null | – | Module edges diffed against the vault's compiled depends_on edges (alias-normalized). null when no vault is loadable (e.g. scanning a foreign repo). Absent when reconcile:false. |
| reconciliationSummary | object | – | – |
| reviewQueue | object | – | – |
| rootPath | string | yes | – |
| scanSummary | object | – | – |
| staleEdgeFollowUp | object | – | – |
| unresolved | array | – | – |
No examples provided.
inspect_architecture ~193
Read one reviewed architecture-profile/v1 document from the active vault, scan the connected repository with the existing bounded static import analyzer, and return an architectureBrief:v1 for humans and coding agents. The profile declares scoped roles, intended dependency rules, and which known import usages those rules govern; source imports remain observed evidence with usage-qualified receipts. The result distinguishes conforms, violated, and unknown, and never treats unsupported languages, unclassified import usage, empty role mappings, or unmapped edges as compliance. Pattern labels are human/document declarations, not folder-name inference. side effect 0.
| Name | Type | Req | Description |
|---|---|---|---|
| maxFiles | integer | – | Positive source-file scan cap (default 5000, max 50000). |
| profileSlug | string | – | Architecture profile_slug. Optional only when the vault contains exactly one architecture profile. |
| rootPath | string | – | Repository root to inspect. Defaults to the active resolved repository root from connection_info. |
| Name | Type | Req | Description |
|---|---|---|---|
| agentPlanContract | object | yes | – |
| conformance | object | yes | – |
| contract | string | yes | – |
| nextActions | array | yes | – |
| profile | object | yes | – |
| sideEffect | integer | yes | – |
No examples provided.
list_concepts ~426
List every ontology node in the vault (each .md file with a frontmatter `kind:`). Filter by `kind`, `domain`, and/or `since` (mtime-based incremental sync). Large vaults are resumable with `offset` + `limit`; always follow `pagination.nextOffset` while `hasMore` is true. AI agents call this first to grasp the codebase's mental model.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | – | Filter to nodes whose frontmatter `domain:` matches this slug (e.g. "auth"). Combine with `kind` for "all capabilities under auth" in one call. Use the domain *slug*, not the title. |
| kind | string | – | Filter to one canonical ontology kind (project, domain, capability, element, document, vault-readme). Omit to return all. Invalid kind typos fail closed with nearest-value hints instead of returning… |
| limit | integer | – | Positive integer max rows to return. Defaults to 100, max 500. |
| offset | integer | – | Zero-based page offset applied after kind/domain/since filters. Resume at pagination.nextOffset until hasMore is false; ordering is deterministic by canonical slug. |
| since | number | – | Non-negative mtime threshold. Filter to nodes with `mtime > since` (ms). Pair with the `mtime` returned in earlier `list_concepts` / `get_concept` responses for incremental sync — "what changed since… |
| summary | boolean | – | When true, each node row includes a `summary` (max 200 chars, prose-only — heading / table / code block / image / divider / list / quote are skipped and only the first paragraph is kept, same `extrac… |
| Name | Type | Req | Description |
|---|---|---|---|
| limited | boolean | yes | True when this page does not contain every matching row. |
| nodes | array | yes | – |
| pagination | object | yes | – |
| returned | integer | yes | Number of rows returned in this page. |
| summaryHint | string | – | Only present when at least one row carries a partial summary — names the follow-up call that returns the full bodies. |
| total | integer | yes | Total number of matching ontology nodes before the limit is applied. |
| vaultRoot | string | yes | Resolved vault root path used for the listing. |
| vaultWarnings | object | – | – |
No examples provided.
list_kinds ~45
Vault kind distribution — { total, byKind: { capability: N, ... } }. A quick census so AI agents can size up the vault without paging through list_concepts.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| byKind | object | yes | Node counts keyed by frontmatter kind. |
| total | integer | yes | Total number of vault docs that declare a kind. |
No examples provided.
merge_concepts ~352
⚠ DESTRUCTIVE MULTI-FILE WRITE — fold one node into another. Every backlink to fromSlug is redirected to intoSlug (frontmatter array entries + body links), then fromSlug is deleted. The survivor keeps its UID while the source UID/history is recorded in canonical `merged_uids`. The intoSlug prose and non-identity frontmatter are preserved as-is — they are not merged automatically (use patch_concept after if you want to combine descriptions). Tail-only references are also redirected. Two-stage safety: 1. Without confirm: true the call is a dry-run — returns the redirect plan + list of deletions without writing. 2. With confirm: true the rewrites and the delete happen in one pass. Throws if either slug is missing. Confirmed writes return compact `postWriteMaintenance` (maintenance_plan) with count-safe `byPhase` / `bySeverity` / `byKind` queue buckets, action `score`, executable `proposedAction`, and current-page `nextExecutableAction` / `nextReviewAction` pointers for the final graph.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Actually perform the merge when true. Omit or false for a dry-run. |
| expected_into_mtime | number | – | Optional conflict guard for intoSlug. Pass the survivor mtime from get_concept so a concurrent edit or identity-history change is never overwritten. |
| expected_mtime | number | – | Optional conflict guard for fromSlug. Throws if the source has been modified externally. |
| fromSlug | string | yes | Slug to dissolve. Its file is deleted after backlinks redirect. |
| intoSlug | string | yes | Slug to keep. Receives every redirected backlink. |
| Name | Type | Req | Description |
|---|---|---|---|
| absorbedUids | array | yes | – |
| backlinkUpdates | object | yes | – |
| blockedReasons | array | yes | Machine-readable human explanations for every condition currently blocking confirmation. |
| canConfirm | boolean | yes | True only when repeating the call with confirm:true can perform the previewed change without another explicit safety opt-in. |
| capturedFrom | object | yes | – |
| changed | boolean | – | – |
| deleted | boolean | yes | – |
| dryRun | boolean | yes | – |
| fromPath | string | yes | – |
| fromSlug | string | yes | – |
| fromUid | string | yes | – |
| intoSlug | string | yes | – |
| intoUid | string | yes | – |
| message | string | – | – |
| ok | boolean | yes | – |
| postWriteMaintenance | object | – | Compact maintenance_plan summary for post-write follow-up. Bucket maps describe the remaining queue after the write. |
| previewReady | boolean | yes | True only when this response is a complete dry-run preview that an agent can review. |
| wouldChange | boolean | yes | True only when the dry-run predicts a disk or Git change. |
No examples provided.
patch_concept ~330
Update the frontmatter and/or body of an existing ontology node. Use when an AI agent revises, deepens, or reclassifies a node. Frontmatter patches are key-by-key — null deletes a key, omission preserves it. Body is fully replaced when provided, otherwise preserved. Pass `expected_mtime` (from the previous get_concept response) to detect concurrent external edits — throws VaultConflictError if the file has changed on disk since you read it. Changed writes return compact `postWriteMaintenance` (maintenance_plan) with count-safe `byPhase` / `bySeverity` / `byKind` queue buckets, action `score`, executable `proposedAction`, and current-page `nextExecutableAction` / `nextReviewAction` pointers so agents can immediately continue graph cleanup.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Full replacement markdown body (optional). Preserved when omitted. |
| expected_mtime | number | – | Optional conflict guard. If the file mtimeMs differs at write time, the call throws so the caller can re-read and retry. Pass the `mtime` field from the most recent get_concept response. |
| frontmatter | object | – | Frontmatter key/value patches (e.g. { kind: "capability", domain: "views" }). null removes the key. Per-locale display names go here as `display_ko` / `display_en` — fill every locale the vault serve… |
| slug | string | yes | Vault-relative slug (omit the .md extension). |
| Name | Type | Req | Description |
|---|---|---|---|
| changed | boolean | yes | – |
| filePath | string | yes | – |
| ok | boolean | yes | – |
| postWriteMaintenance | object | yes | Compact maintenance_plan summary for post-write follow-up. Bucket maps describe the remaining queue after the write. |
| slug | string | yes | – |
No examples provided.
query_concepts ~278
Typed filter DSL — search vault nodes by predicate. Built for saved-filter / smart-list cases that find_path (BFS) cannot answer, such as "which capabilities have zero elements?", "stub-only nodes in domain=auth", or "has(depends_on) excluding vault-readme". Grammar (case-insensitive keywords, whitespace-tolerant): filter := atom (AND|OR atom)* atom := NOT? predicate predicate := key=value | key!=value | has(key) Keys: kind / domain / slug / title for equality, plus any graph frontmatter array key for has(...). kind and has(...) keys are enum-validated with nearest-value hints. Example: `kind=capability AND domain=auth AND NOT has(elements)` — capabilities under domain auth that have zero elements (= unfinished caps). When total=0, the response includes a `growthHint` — it names any referenced kind/domain that has 0 nodes in this vault, or nudges you to loosen the filter.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | yes | Filter expression. Example: kind=capability AND has(elements). Supports NOT / AND / OR. Wrap values containing whitespace or special characters with "..." or '...'. |
| limit | integer | – | Positive integer max rows to return. Defaults to 100, max 500. |
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | yes | – |
| growthHint | object | – | Only present when total=0 — flags a referenced kind/domain with 0 nodes in this vault census, or a generic loosen-the-filter nudge otherwise. |
| limited | boolean | yes | – |
| matches | array | yes | – |
| parsedAs | string | yes | – |
| total | integer | yes | – |
No examples provided.
What is the Ontology Atlas MCP server?
Ontology Atlas is an MCP server listed in the public MCP registry as io.github.wlsdks/ontology-atlas. Read and write one codebase ontology kept as Markdown in the repository. This page covers its MCPB bundle (https://github.com/wlsdks/ontology-atlas/releases/download/v1.2.0/ontology-atlas-mcp-0.13.0.mcpb).
Is the Ontology Atlas MCP server safe to use?
Ontology Atlas scores 46 out of 100 on VerifyMCP. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Ontology Atlas MCP server expose?
Ontology Atlas exposes 38 tools: connection_info, git_status, git_history, git_snapshot, list_concepts, and 33 more. Their descriptions and schemas cost roughly 15,600 tokens of context every time the server is loaded.
What licence is the Ontology Atlas MCP server under?
Ontology Atlas declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.