1. Conduid
  2. RAG
  3. Willow MCP
MCP server · RAG

Willow MCP

Agent-neutral MCP server with persistent memory (SOIL + Postgres KB) and a sandboxed task queue. Manifest-based ACL; works with any stdio MCP client.

34Low

Scored a month ago · breakdown

About Willow MCP

Willow MCP is an MCP server published by willow-memory in the RAG category: agent-neutral MCP server with persistent memory (SOIL + Postgres KB) and a sandboxed task queue. Manifest-based ACL; works with any stdio MCP client.

The repository has 3 stars and 0 forks, with the last commit 3 days ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/willow-memory/willow-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (84)

agent_clearClear specialist for next packet

Parameters not published.

agent_dispatch_resultRecord the result of a dispatched agent task

Parameters not published.

agent_routeRoute a task to a target agent, recording the decision

Parameters not published.

context_expireDelete a saved context before its TTL

Parameters not published.

context_getRead a saved context; `expired` (and purged) once its TTL passes

Parameters not published.

context_listList your saved context keys and expiry times (expired ones skipped)

Parameters not published.

context_saveSave ephemeral per-identity working state under a key, with an optional TTL (SOIL-backed, no Postgres)

Parameters not published.

diagnostic_summarySelf-check: store/Postgres/schema/manifest/bindings/worker/consent/egress-lease/env health, with a verdict and named fixes. Ungated — see below

Parameters not published.

dispatch_acceptSpecialist accepts packet (pending → working)

Parameters not published.

dispatch_listList dispatch packets

Parameters not published.

Show all 84 tools
dispatch_readRead dispatch assignment and status

Parameters not published.

dispatch_sendCreate dispatch packet (`meta.json` + `assignment.md`)

Parameters not published.

envelope_applyMatch an active constitutional grant and write its FRANK citation before returning authority

Parameters not published.

federation_callCall one tool on one ratified downstream MCP server — behind the fourth egress class, `mcp_federation` (own line), a per-downstream-tool namespaced grant, and the operator's ratification ceiling

Parameters not published.

federation_discoverShadow-IT scan: `.mcp.json` files not yet owned by the ratified registry. Read-only, never connects

Parameters not published.

federation_list_serversList every operator-ratified downstream MCP server: id, launch command, the environment-variable *names* it receives (never values)

Parameters not published.

fleet_healthTask queue counts by status, live worker heartbeats, and whether the queue is `stranded`

Parameters not published.

fleet_statusReturn the canonical charter `fleet.json` roster plus Postgres drift diagnostics

Parameters not published.

frank_appendAppend an established-shape FRANK event (separately gated)

Parameters not published.

gap_deleteSoft-delete a single gap by id — clear junk/test entries without disturbing real gaps. Reversible (archive-don't-delete)

Parameters not published.

gap_listList gaps, most-asked first — filter by `topic` and/or `status` (`open`/`resolved`/`promoted`)

Parameters not published.

gap_logLog or bump a "we don't know this yet" entry (fleet-wide backlog, SOIL-only, no Postgres needed) — see [docs/design/gap-backlog.md](docs/design/gap-backlog.md)

Parameters not published.

gap_promoteTurn a resolved gap into a knowledge atom. Requires `answer`, at least one `source`, and `confirmed_by`; writes through the same schema-confirmation gate as `knowledge_ingest` and closes the gap out

Parameters not published.

gap_purge_topicSoft-delete every gap under an exact topic in one call — bulk cleanup without the per-call rate limit. Promoted gaps (they point at a landed atom) are left intact; requires `confirm=<topic>`

Parameters not published.

gap_resolveMark a gap as being worked or answered — bookkeeping only, does not write to the knowledge base

Parameters not published.

grove_ackAcknowledge a received message; clears `needs-reply`, marks it `read`

Parameters not published.

grove_agentsFleet agents by most-recent HEARTBEAT, newest first

Parameters not published.

grove_bus_receiveStructured bus messages addressed to an agent (or broadcast), priority-ordered

Parameters not published.

grove_bus_sendPost a structured, addressed, typed, prioritized bus message (`COMMAND`/`EVENT`/`HEARTBEAT`/…)

Parameters not published.

grove_flaggedMessages carrying a given flag (`needs-reply`/`starred`/`read`/`urgent`/`resolved`), across all channels or one

Parameters not published.

grove_fleet_statusPresence plus what each agent is doing — `ui_state`, a content peek, and whether it's blocked on a reply

Parameters not published.

grove_get_historyMessage history from a channel, with `since_id` polling and `limit` (max 200)

Parameters not published.

grove_get_identityYour own Grove identity — `app_id`, resolved `grove_sender`, registered role/display name

Parameters not published.

grove_get_threadA message plus its flags and all its replies

Parameters not published.

grove_heartbeatBroadcast "I am alive" to `#general`

Parameters not published.

grove_human_requiredThe human-required queue: work that pauses automation until a person acts, priority-first

Parameters not published.

grove_inboxFleet inbox: @mentions, bus messages addressed to you, and your dedicated `#<agent>` channel, merged and deduped

Parameters not published.

grove_list_channelsList active Grove channels (name, type, description)

Parameters not published.

grove_replyReply in a thread; clears the parent's `needs-reply` flag

Parameters not published.

grove_searchCase-insensitive substring search across Grove messages, optionally scoped to one channel

Parameters not published.

grove_send_messagePost to a channel (creates it if missing). `sender` defaults to your resolved `grove_sender`, never a literal "Auto"; posting as a different identity requires `grove_relay`

Parameters not published.

handoff_readRead handoff for a dispatch

Parameters not published.

handoff_write_v4Complete work — `handoff.json` + `closeout.md`

Parameters not published.

integration_callCall an external API through a registered adapter — behind the three-key egress gate, keyed on `integration_net` (own line, never implied by `task_net` or `full_access`)

Parameters not published.

integration_listThe integration ledger: every outbound adapter, live or **declared stub**, with credential *source* (never the value)

Parameters not published.

integration_statusOffline readiness readout for one adapter — live/stub, credential presence, and whether the egress gate would pass. No network call

Parameters not published.

kb_atFetch a single knowledge atom by ID

Parameters not published.

kb_journalAdd a journal-domain knowledge atom (requires a confirmed schema mapping)

Parameters not published.

kb_promoteChange an atom's domain (requires a confirmed schema mapping)

Parameters not published.

kb_startup_continuityFetch atoms tagged/domained for startup continuity

Parameters not published.

knowledge_flagAttach an integrity flag to an existing atom (`knowledge_curate`; tags-based, idempotent)

Parameters not published.

knowledge_ingestAdd a knowledge atom (requires a confirmed schema mapping — see `schema_confirm_mapping`)

Parameters not published.

knowledge_retractTombstone an atom in place — hidden from default search, still readable via `kb_at` (`knowledge_curate`)

Parameters not published.

knowledge_searchMulti-keyword search in the Postgres knowledge base

Parameters not published.

nest_digestA one-page Markdown map of a Nest DB — the **walled** view (person names, the date timeline, and filenames suppressed). The full digest is a local-CLI affordance only, never returned over MCP

Parameters not published.

nest_intake_fileFile a staged item: **move** the file to its predicted track's destination, or `override_dest` to correct it. An override feeds the correction counter

Parameters not published.

nest_intake_flagsList open rule-delta flags — patterns overridden often enough that the classifier proposes a rules change (a human ratifies)

Parameters not published.

nest_intake_queueList the pending review queue with the track the classifier predicted for each file

Parameters not published.

nest_intake_scanLive drop-folder router: classify new files in a drop zone by filename into a track and **stage** a review queue. Non-destructive — nothing moves until `nest_intake_file`

Parameters not published.

nest_intake_skipSkip a staged item — leave the file, record the decision

Parameters not published.

nest_promotePromote a Nest's **structure** — counts, curated category names, redacted secret kinds, never content — into the knowledge base via the same core write as `knowledge_ingest`. `dry_run=True` returns the atoms that would be promoted

Parameters not published.

nest_scanWalk a drop folder, extract + classify its files by meaning, and write a canonical SQLite Nest DB. Returns counts only; `dry_run=True` (default) reports without writing — see [docs/NEST.md](docs/NEST.md)

Parameters not published.

nest_statusCounts for a seeded Nest DB — sources by status, fragments by type, topical categories by size. Structure only; filename-labels are walled and counted as `uncategorised`

Parameters not published.

receipts_tailRead your own most-recent tool-call receipts — a self-audit trail scoped to your `app_id`

Parameters not published.

schema_confirm_mappingConfirm (optionally correct) a table's column mapping, unlocking its write tools. `preview=True` dry-runs it and renders a **sample row** so you can see what each field actually resolves to before trusting a name match — see [docs/design/schema-adaptation.md](docs/design/schema-adaptation.md)

Parameters not published.

session_readRead thin session state file

Parameters not published.

store_collectionsList the SOIL collections you can see (narrowed to your `store_scope`) — learn the collection names without running a search

Parameters not published.

store_deleteSoft-delete a record by `record_id`

Parameters not published.

store_getRead record by `record_id`

Parameters not published.

store_listList all records in a collection

Parameters not published.

store_purge_collectionBulk soft-delete every record in a collection (e.g. leftover test/scratch data). Reversible (archive-don't-delete — the store.db is kept); requires `confirm=<collection name>` and stays within your `store_scope`

Parameters not published.

store_putWrite record (JSON object) to SQLite store

Parameters not published.

store_searchMulti-keyword AND search in a collection

Parameters not published.

store_search_allSearch across all collections

Parameters not published.

store_statsPer-collection live-record counts (within your `store_scope`), largest first, plus store-wide totals — the numeric companion to `store_collections` for spotting a bloated or polluted collection

Parameters not published.

store_updateUpdate an existing record

Parameters not published.

task_listList pending tasks

Parameters not published.

task_statusCheck task status

Parameters not published.

task_submitSubmit task to Kart queue

Parameters not published.

verify_handoffOrchestrator verifies completion

Parameters not published.

whoamiReport your own identity and effective permissions — app_id, role, permission groups, the resolved set of tools you can call (minus `deny_tools`), and your `store_scope`. Ungated, like `diagnostic_summary`

Parameters not published.

willow_institutional_searchFan a query across jeles' registered institutional/academic collections (arXiv, PubMed, Crossref, OpenAlex, …) — citable sources rather than open web. Same `web_read` line as the two above, so one grant covers all three

Parameters not published.

willow_web_fetchFetch one URL through the destination guard: the host is **resolved** and every address tested (not just literals), every redirect hop re-checked, body scanned by external-guard and sandwich-wrapped. Returns the `redirects` chain actually followed

Parameters not published.

willow_web_searchOpen-web search with the results run through **external-guard** — the guarded replacement for a client's native web tool. `web_read` + `web_net` + `consent.internet` + a live lease

Parameters not published.

Ask AI

✦

Ask AI about Willow MCP

Powered by Claude · Grounded in docs

I know everything about Willow MCP. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

6 checks have not been run yet.

Questions

About Willow MCP

How do I install Willow MCP?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Willow MCP safe to use with an AI agent?

Its trust score is 34 out of 100 (low). Conduid hasn't run static security checks on this repository yet, so review the source yourself before granting it credentials. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Willow MCP still maintained?

Yes — the last commit was 3 days ago. The repository has 3 stars and 0 forks.