Willow MCP
UnclaimedAgent-neutral MCP server with persistent memory (SOIL + Postgres KB) and a sandboxed task queue. Manifest-based ACL; works with any stdio MCP client.
Install
.venv/bin/python3 -m willow_mcpSet up this server
More in Databases
Browse the full directoryUnclaimed listing
Is this your MCP server?
This listing was auto-indexed from the public record. Claim it to edit the page, set compatibility and unlock growth tools. Takes under two minutes.
Claim this serverSecurity profile
Claimed and verified servers get a weekly static scan that shows what the code can reach: external services, environment variables, shell commands, agent configuration folders, plus any dependencies with known advisories. Claim this listing to get one. How the security profile works
40 of 40 tools
Documented tools (40)
From project documentation. A server handshake does not verify each tool’s description or behavior.
agent_dispatch_result
Record the result of a dispatched agent task
agent_route
Route a task to a target agent, recording the decision
dispatch_send
Create dispatch packet (meta.json + assignment.md)
gap_delete
Soft-delete a single gap by id — clear junk/test entries without disturbing real gaps. Reversible (archive-don't-delete)
gap_list
List gaps, most-asked first — filter by topic and/or status (open/resolved/promoted)
gap_log
Log or bump a "we don't know this yet" entry (fleet-wide backlog, SOIL-only, no Postgres needed) — see docs/design/gap-backlog.md
gap_promote
Turn a resolved gap into a knowledge atom. Requires answer, at least one source, and confirmedby; writes through the same schema-confirmation gate as knowledgeingest and closes the gap out
gap_purge_topic
Soft-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>
gap_resolve
Mark a gap as being worked or answered — bookkeeping only, does not write to the knowledge base
kb_at
Fetch a single knowledge atom by ID
kb_journal
Add a journal-domain knowledge atom (requires a confirmed schema mapping)
kb_promote
Change an atom's domain (requires a confirmed schema mapping)
kb_startup_continuity
Fetch atoms tagged/domained for startup continuity
knowledge_flag
Attach an integrity flag to an existing atom (knowledgecurate; tags-based, idempotent)
knowledge_ingest
Add a knowledge atom (requires a confirmed schema mapping — see schemaconfirmmapping)
knowledge_retract
Tombstone an atom in place — hidden from default search, still readable via kbat (knowledgecurate)
knowledge_search
Multi-keyword search in the Postgres knowledge base
nest_digest
A 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
nest_intake_file
File a staged item: move the file to its predicted track's destination, or overridedest to correct it. An override feeds the correction counter
nest_intake_flags
List open rule-delta flags — patterns overridden often enough that the classifier proposes a rules change (a human ratifies)
nest_intake_queue
List the pending review queue with the track the classifier predicted for each file
nest_intake_scan
Live 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 nestintakefile
nest_intake_skip
Skip a staged item — leave the file, record the decision
nest_promote
Promote a Nest's structure — counts, curated category names, redacted secret kinds, never content — into the knowledge base via the same core write as knowledgeingest. dryrun=True returns the atoms that would be promoted
nest_scan
Walk a drop folder, extract + classify its files by meaning, and write a canonical SQLite Nest DB. Returns counts only; dryrun=True (default) reports without writing — see docs/NEST.md
nest_status
Counts 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
schema_confirm_mapping
Confirm (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
store_collections
List the SOIL collections you can see (narrowed to your storescope) — learn the collection names without running a search
store_delete
Soft-delete a record by recordid
store_get
Read record by recordid
store_list
List all records in a collection
store_purge_collection
Bulk 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 storescope
store_put
Write record (JSON object) to SQLite store
store_search
Multi-keyword AND search in a collection
store_search_all
Search across all collections
store_stats
Per-collection live-record counts (within your storescope), largest first, plus store-wide totals — the numeric companion to storecollections for spotting a bloated or polluted collection
store_update
Update an existing record
task_list
List pending tasks
task_status
Check task status
task_submit
Submit task to Kart queue
Tool change history
FAQ
Questions about Willow MCP Server
- How do I connect Willow MCP Server to Claude?
- The listing records `.venv/bin/python3 -m willow_mcp` as its setup step. Run it, then follow the repository's instructions for the client configuration; the listing names Claude Desktop, Claude Code, Cursor as compatible clients.
- Is Willow MCP Server free?
- The listed licence is Apache-2.0. Check the upstream terms for permitted use and commercial requirements; a public repository does not by itself mean the software is free or open source. Connected APIs and hosted services may have separate charges.
- What can Willow MCP Server do?
- Willow MCP Server documents 40 tools to the agent, including agent_dispatch_result, agent_route, dispatch_send. The descriptions above come from project documentation. A live handshake does not test individual tool behavior.