Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

IWE

NPM · @IWE-ORG/MCP

Markdown knowledge base as agent memory. Runs against the notes directory it is started in.

Available components

+1 this week 92 Trust /100

Last scanned (1 hour ago)

Scores higher than 94% of npm servers

Category Memory and Knowledge

Trust breakdown (7 categories)

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 Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 0 of 6 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to iwe-org/iwe). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability69
  • 75% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2862 tokens (~150/item across 19 items; 14 tools + 5 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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "iwe_delete" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

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

  • 16 Oct 26 0
    • Stability: 0.97 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Stability: 0.97 → pass security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 75 → unverified ▼ functional
    • Package version: 0.26.1 → 0.27.0 functional
  • 15 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Oct 26 +42
    • Injection markers: unverified → pass ▲ security
    • Tool coverage: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Stability: unverified → 0.93 ▲ functional
    • Schema quality: unverified → 75 ▲ functional
    • Package version: 0.25.0 → 0.26.1 functional
  • 13 Oct 26 0
    • Package version: 0.25.0 → 0.26.1 functional
  • 12 Oct 26 0
    • Security disclosure: unverified → fail ▼ functional
    • Package version: 0.25.0 → 0.26.1 functional
  • 11 Oct 26 −42
    • Stability: 0.93 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Security disclosure: fail → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 75 → unverified ▼ functional
    • Package version: 0.25.0 → 0.26.1 functional
  • 7 Oct 26 −1
    • Stability: pass → 0.93 functional
  • 6 Oct 26 +1
    • Stability: 0.93 → pass security
Diagnostics

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 17 Oct 2026 · Analysed npm/@iwe-org/mcp@0.27.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo iwe-org/iwe
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/iwe-org/iwe/.github/workflows/release.yaml@refs/tags/iwe-v0.27.0
Rekor log index 3278640488
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:7f554901b1e516765c1daac9ed8e85a11c60ead3af4a14d71487e71015c1b30c4a17009791212dfafac1e55a17542d11563510992e9c4626d30498410

Background: How many MCP packages publish verified provenance →

Dependencies 6 packages
Packages resolved 6
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 14 exposed · ~2,731 tokens

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 →

Tool Tokens
iwe_attach ~181

Attach a document as a block reference in one or more target documents determined by configured attach actions. Each target key is derived from the action's key_template (e.g. daily/{{today}}). The `to` field accepts a list of action names; the source is attached under each resolved target. Targets that already contain the source are silently skipped. Use list mode to discover available attach actions.

NameTypeReqDescription
dry_runboolean|null–Preview changes without applying. Default: false
keystring|null–Document key to attach as a block reference in the target(s)
listboolean|null–List available attach actions instead of executing. Default: false
toarray–Configured attach action(s) to attach to (e.g. 'today'). Pass one or more action names; the source is attached under each resolved target.

No output schema declared.

No examples provided.

iwe_create ~259

Create a document at an explicit `key` from the complete markdown in `content` — frontmatter block first (when there is one), then the title heading and the body. The content is written verbatim; the server adds nothing and moves nothing. Derive the key from stable metadata (entity name, session date), not the title wording. Pass if_exists: "skip" to make retries idempotent. Stats warnings (dangling links, orphans, similar pages) may ride the result; resolve them before ending the session.

NameTypeReqDescription
contentstringyesThe complete document, written verbatim: the YAML frontmatter block first (when there is one), then the markdown, normally starting with a `# Title` heading. Nothing is added or moved.
if_exists––Behavior when the key already exists: "fail" (default) reports an error, "skip" leaves the existing document untouched and returns created: false, which makes retries idempotent.
keystringyesDocument key — the created document's stable identity. Derive it from stable metadata (entity name, session date), not the title wording. Subdirectory keys allowed (e.g. people/ada); do not include a…

No output schema declared.

No examples provided.

iwe_delete ~85

Delete a document from the knowledge graph. All block references and inline links to this document in other documents are cleaned up. Stats warnings (dangling links, orphans, similar pages) may ride the result; resolve them before ending the session.

NameTypeReqDescription
dry_runboolean|null–Preview changes without applying. Default: false
keystringyesDocument key to delete

No output schema declared.

No examples provided.

iwe_extract ~126

Extract a section from a document into a new standalone document. The original section is replaced with a block reference. Use list mode to discover sections first

NameTypeReqDescription
blockinteger|null–Block number to extract (1-indexed, use list mode to discover)
dry_runboolean|null–Preview changes without applying. Default: false
keystringyesSource document key
listboolean|null–List all sections with block numbers instead of extracting. Default: false
sectionstring|null–Section title to extract (case-insensitive partial match)

No output schema declared.

No examples provided.

iwe_find ~466

Search and discover documents in the knowledge graph. Supports fuzzy text query (`query`), root filter (`roots`), direct-reference filters (`refs_to`, `refs_from`), and the structural set selector (`in` / `in_any` / `not_in` / `max_depth`) for transitive sub-document AND/OR/NOT queries with configurable depth.

NameTypeReqDescription
add_fieldsstring|null–Additive projection: same grammar as project (bare names are frontmatter fields, `$`-selectors are the document's own), extends defaults rather than replacing. Mutually exclusive with project.
fuzzystring|null–Fuzzy match on document title and key
inarray–Restrict to candidates that are sub-documents of EVERY listed key (AND). Each entry is either a bare KEY or {key, depth}.
in_anyarray–Restrict to candidates that are sub-documents of AT LEAST ONE listed key (OR).
lexicalstring|null–Lexical (BM25) full-text match on title and body
limitinteger|null–Maximum number of results to return. Unlimited if omitted (0 also = unlimited).
max_depthinteger|null–Default depth for in / in_any / not_in entries that don't specify their own depth. Omit for unbounded.
max_document_tokensinteger|null–Cap projected `$content` tokens per result. Unlimited if omitted (0 also = unlimited).
max_tokensinteger|null–Cap total projected `$content` tokens across all results. Unlimited if omitted (0 also = unlimited).
not_inarray–Exclude candidates that are sub-documents of ANY listed key (NOT).
projectstring|null–Replacement projection (e.g. '$title,priority' or 'body=$content,parents=$includedBy'). Bare names are frontmatter fields, and project null when the document has no such field; document fields are `$…
refs_fromstring|null–Only return documents referenced by this key
refs_tostring|null–Only return documents that reference this key

No output schema declared.

No examples provided.

iwe_inline ~159

Replace a block reference with the actual content of the referenced document. Use list mode to discover block references first

NameTypeReqDescription
as_quoteboolean|null–Inline as blockquote instead of section. Default: false
blockinteger|null–Block number to inline (1-indexed, use list mode to discover)
dry_runboolean|null–Preview changes without applying. Default: false
keep_targetboolean|null–Keep the target document after inlining. Default: false
keystringyesDocument key containing the block reference
listboolean|null–List all block references instead of inlining. Default: false
referencestring|null–Reference key or title to inline (partial match)

No output schema declared.

No examples provided.

iwe_normalize ~32

Normalize all document formatting across the knowledge graph. Re-parses and re-writes all documents to ensure consistent formatting

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

iwe_query ~351

Run an IWE query/block-selection operation document. `find` and `count` read; `update` mutates frontmatter and blocks (operators $replace, $replaceText, $insertBefore, $insertAfter, $append, $delete); `delete` removes documents. Membership uses the `$content` filter operator; reads project `$content` narrowing, `$blocks`, and `$matches`. Always strict: every mutating application must carry an `expect` guard (document-level `expect` plus one per block operator). Use `find` with `$blocks`/`$matches` to locate targets and learn counts before mutating. Update/delete results may carry stats warnings (dangling links, orphans, similar pages); resolve them before ending the session.

NameTypeReqDescription
documentstringyesThe operation document as YAML. Uses the IWE query + block-selection language: `filter` (with $content block membership), `project`/`addFields` ($content narrowing, $blocks, $matches), `sort`, `limit…
dry_runboolean|null–Preview mutations without writing to disk (update/delete only). Default: false.
operation–yesOperation kind: find (read documents), count (count documents), update (mutate frontmatter and/or blocks), or delete (remove documents).

No output schema declared.

No examples provided.

iwe_rename ~72

Rename a document key. All block references and inline links across the entire graph are updated to point to the new key

NameTypeReqDescription
dry_runboolean|null–Preview changes without applying. Default: false
new_keystringyesNew document key
old_keystringyesCurrent document key

No output schema declared.

No examples provided.

iwe_retrieve ~600

Retrieve documents from the knowledge graph. Reads the given `keys` (or search seeds) and expands the graph around them via `expand` (includes / includedBy / references / referencedBy). With `search`/`fuzzy`, seeds are found by relevance within the candidate set (keys + selector); `limit` caps the seeds before expansion and `max_documents` caps the documents returned after expansion.

NameTypeReqDescription
backlinksboolean|null–Include incoming inline references. Default: true
childrenboolean|null–Populate the `includes` array with child document edges. Default: false
contextinteger|null–DEPRECATED: use `expand: { includedBy: N }`.
depthinteger|null–DEPRECATED: use `expand: { includes: N }`.
excludearray|null–Document keys to exclude from results
expand––Expansion directions to follow out from each seed: object over includes / includedBy / references / referencedBy → integer depths (0 = unbounded, omitted = not followed). Expansion is doc-only when o…
fuzzystring|null–Seed search: fuzzy query over title and key. Fuses with `search` (RRF).
inarray–Restrict to candidates that are sub-documents of EVERY listed key (AND). Each entry is either a bare KEY or {key, depth}.
in_anyarray–Restrict to candidates that are sub-documents of AT LEAST ONE listed key (OR).
keysarray–Document keys to retrieve, or the candidate set searched within when `search`/`fuzzy` is present. Unknown keys are an error unless searching, where they match nothing. Can be empty when a structural…
limitinteger|null–Cap the number of seed documents kept before expansion — top-N by relevance when searching, the first N of the selection otherwise. Unlimited if omitted (0 also = unlimited).
linksboolean|null–DEPRECATED: use `expand: { references: 1 }`.
max_depthinteger|null–Default depth for in / in_any / not_in entries that don't specify their own depth. Omit for unbounded.
max_document_tokensinteger|null–Cap content tokens per document. Unlimited if omitted (0 also = unlimited).
max_documentsinteger|null–Cap the number of documents returned after expansion, trimming periphery documents first. Unlimited if omitted (0 also = unlimited).
max_tokensinteger|null–Cap total content tokens across all documents. Unlimited if omitted (0 also = unlimited).
not_inarray–Exclude candidates that are sub-documents of ANY listed key (NOT).
searchstring|null–Seed search: BM25 full-text query over title and body. Present → the tool searches the candidate set and reads the ordered seeds.

No output schema declared.

No examples provided.

iwe_squash ~64

Expand all block references into a single flat markdown document. Useful for export or generating a complete view of a document tree

NameTypeReqDescription
depthinteger|null–Levels of references to expand. Default: 2
keystringyesRoot document key to expand

No output schema declared.

No examples provided.

iwe_stats ~51

Get comprehensive statistics about the knowledge graph including document counts, reference patterns, broken links, and most connected documents

NameTypeReqDescription
keystring|null–Document key for per-document stats. Omit for aggregate graph statistics

No output schema declared.

No examples provided.

iwe_tree ~220

View the hierarchical tree structure of the knowledge graph showing how documents are connected via block references. Supports the structural set selector (in / in_any / not_in / max_depth) — when provided, the tree roots are restricted to (or selected from) that set.

NameTypeReqDescription
depthinteger|null–Maximum traversal depth. Default: 4
inarray–Restrict to candidates that are sub-documents of EVERY listed key (AND). Each entry is either a bare KEY or {key, depth}.
in_anyarray–Restrict to candidates that are sub-documents of AT LEAST ONE listed key (OR).
keysarray|null–Starting document keys. Unknown keys are an error. If empty and no selector, shows all root documents.
max_depthinteger|null–Default depth for in / in_any / not_in entries that don't specify their own depth. Omit for unbounded.
not_inarray–Exclude candidates that are sub-documents of ANY listed key (NOT).

No output schema declared.

No examples provided.

iwe_update ~65

Update the full markdown content of an existing document. Stats warnings (dangling links, orphans, similar pages) may ride the result; resolve them before ending the session.

NameTypeReqDescription
contentstringyesNew full markdown content
keystringyesDocument key to update

No output schema declared.

No examples provided.

Install

How do I install the IWE MCP server?

IWE runs locally as an npm package, launched with npx -y @iwe-org/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @iwe-org/mcp

# add to Claude Code
claude mcp add iwe-org-iwe -- npx -y @iwe-org/mcp
Common questions

What is the IWE MCP server?

IWE is an MCP server listed in the public MCP registry as io.github.iwe-org/iwe. Markdown knowledge base as agent memory. Runs against the notes directory it is started in. This page covers its npm package (@iwe-org/mcp).

Is the IWE MCP server safe to use?

IWE scores 92 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 17 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. 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 IWE MCP server expose?

IWE exposes 14 tools: iwe_attach, iwe_create, iwe_delete, iwe_extract, iwe_find, and 9 more. Their descriptions and schemas cost roughly 2,731 tokens of context every time the server is loaded.

Is the IWE MCP server still maintained?

IWE is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the IWE MCP server under?

IWE declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.