Daemon-MCP
Implements pre-commit hooks that enforce memory discipline by blocking commits when decisions lack recorded outcomes or when modifying files with known failed approaches.
Uses SQLite for persistent storage of memories, decisions, rules, and metadata alongside vector embeddings.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Daemon-MCPrecall what we learned about fixing authentication bugs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Daem0nMCP
, ,
/( )\
| \ / | "I am Daem0n, keeper of memories,
\ \ / / guardian of decisions past..."
\ Y /
\ | /
\|/
*AI Memory & Decision System - Give AI agents persistent memory and consistent decision-making with actual semantic understanding.
What's New in v6.6.6
ModernBERT Deep Sight (BREAKING)
The daemon's vision has been fundamentally sharpened. The old all-MiniLM-L6-v2 embedding model is replaced by ModernBERT with asymmetric query/document encoding and optional ONNX acceleration.
Aspect | Old (v5.x) | New (v6.6.6) |
Model |
|
|
Dimensions | 384 | 256 (Matryoshka truncation) |
Encoding | Single | Dual: |
Backend | PyTorch only | ONNX quantized (with torch fallback) |
Prefixes | None |
|
This is a BREAKING CHANGE — existing embeddings must be re-encoded:
python -m daem0nmcp.migrations.migrate_embedding_model --project-path /path/to/.daem0nmcpBackground Dreaming
When the user goes idle, the daemon autonomously re-evaluates past failed decisions using current evidence:
IdleDreamSchedulermonitors tool call activityAfter configurable idle timeout (default 60s),
FailedDecisionReviewstrategy runsClassifies decisions as revised, confirmed_failure, or needs_more_data
Insights persisted as
learningmemories withdreamtag and full provenanceYields immediately when user returns (cooperative scheduling)
Cognitive Tools (3 new standalone MCP tools)
Meta-reasoning tools for daemon introspection:
Tool | Purpose |
| Temporal Scrying — replay a past decision with current knowledge, revealing what changed |
| Rule Entropy Analysis — examine rules for staleness, code drift, and outcome correlation |
| Adversarial Council — structured evidence-grounded debate with convergence detection |
Auto-Zoom Retrieval Routing
Query-aware search dispatch that routes to the optimal retrieval strategy:
SIMPLE queries → Vector-only search (fast path)
MEDIUM queries → Hybrid BM25+vector with RRF fusion
COMPLEX queries → GraphRAG multi-hop traversal + community summaries
Shadow mode (default) logs classifications without changing behavior
All strategies fall back to hybrid on failure
Claude Code Native Hooks
New daem0nmcp/claude_hooks/ module with 5 lifecycle hooks and automated installation:
python -m daem0nmcp.cli install-claude-hooks # Install to ~/.claude/settings.json
python -m daem0nmcp.cli uninstall-claude-hooks # RemoveHook | Purpose |
| Auto-briefing at session dawn |
| Preflight enforcement + file memory recall before edits |
| Rule enforcement on bash commands |
| Suggest remembrance for significant changes |
| Auto-capture decisions from conversation |
Stats
8 workflow tools + 3 cognitive tools (11 MCP tools total)
59 workflow actions across 8 workflows
500+ tests passing
Related MCP server: SuperMemory MCP
What's New in v5.1.0
Workflow Consolidation
v5.1 consolidates 67 individual MCP tools into 8 workflow-oriented tools, dramatically reducing context overhead for AI agents while preserving all capabilities.
8 Workflow Tools
Workflow | Purpose | Actions |
| Session start & status |
|
| Pre-action intelligence |
|
| Memory writing & linking |
|
| Outcomes & verification |
|
| Code comprehension |
|
| Rules & triggers |
|
| Graph & discovery |
|
| Housekeeping & federation |
|
How It Works
Each workflow tool accepts an action parameter that selects the operation:
# Old way (67 separate tools)
mcp__daem0nmcp__get_briefing(project_path="...")
mcp__daem0nmcp__recall(topic="auth", project_path="...")
mcp__daem0nmcp__remember(category="decision", content="...", project_path="...")
mcp__daem0nmcp__record_outcome(memory_id=42, outcome="...", worked=True, project_path="...")
# New way (8 workflow tools)
mcp__daem0nmcp__commune(action="briefing", project_path="...")
mcp__daem0nmcp__consult(action="recall", topic="auth", project_path="...")
mcp__daem0nmcp__inscribe(action="remember", category="decision", content="...", project_path="...")
mcp__daem0nmcp__reflect(action="outcome", memory_id=42, outcome_text="...", worked=True, project_path="...")Why Consolidate?
88% fewer tool definitions in context (8 vs 67)
Lower token overhead — AI agents load fewer tool schemas
Logical grouping — related operations live in one tool
Backward compatible — legacy individual functions remain importable for internal dispatch, but only the consolidated workflow and cognitive tools are exposed to MCP clients
What's New in v5.0.0
Visions of the Void (MCP Apps)
Interactive HTML interfaces via MCP Apps (SEP-1865). Visual mode is now accessed via the visual=true parameter on workflow tools:
commune(action="briefing", visual=true, project_path="...") # Briefing Dashboard
consult(action="recall", topic="auth", visual=true, project_path="...") # Search Results UI
commune(action="covenant", visual=true, project_path="...") # Covenant Status
explore(action="communities", visual=true, project_path="...") # Community Map
explore(action="graph", topic="auth", visual=true, project_path="...") # Memory Graph ViewerFeatures: D3.js v7 bundled (105KB, no CDN), restrictive CSP, canvas-based graph (10,000+ nodes at 60fps), graceful text fallback for non-visual hosts.
What's New in v4.0.0
Cognitive Architecture
Five major capabilities:
GraphRAG & Leiden Communities: Knowledge graph construction with hierarchical community detection, multi-hop queries, global search via community summaries
Bi-Temporal Knowledge: Dual timestamps (
valid_timevstransaction_time),happened_atbackfilling,as_of_timepoint-in-time queries, contradiction detectionMetacognitive Reflexion: Actor-Evaluator-Reflector loop,
verifyaction validates claims against stored knowledge, reflection persistenceContext Engineering: LLMLingua-2 for 3x-6x compression, code entity preservation, adaptive rates,
compressaction for on-demand optimizationDynamic Agency:
executeaction for sandboxed Python execution via E2B Firecracker microVMs
What's New in v3.1.0
2026 AI Memory Research Enhancements
BM25 + RRF Hybrid Retrieval: Okapi BM25 replaces TF-IDF, Reciprocal Rank Fusion combines keyword and vector search
TiMem-Style Recall Planner: Complexity-aware retrieval adapting to query difficulty (simple/medium/complex)
Titans-Inspired Surprise Scoring: Novelty detection with
surprise_score(0.0-1.0)Importance-Weighted Learning: EWC-inspired protection for valuable memories via
importance_scoreFact Model: Verified facts promote to immutable O(1) lookup after threshold successful outcomes
What's New in v3.0.0
FastMCP 3.0 Upgrade
CovenantMiddleware: Sacred Covenant enforcement via FastMCP 3.0 middleware pattern
Component Versioning: All tools include version metadata
OpenTelemetry Tracing (Optional):
pip install daem0nmcp[tracing]
Previous Versions
Tools block with
COMMUNION_REQUIRED/COUNSEL_REQUIREDuntil proper rituals observedPreflight tokens with 5-minute validity
MCP Resources for dynamic context injection (
daem0n://warnings/,daem0n://failed/, etc.)
Active Working Context (MemGPT-style always-hot memories, max 10)
Temporal versioning with
versionsandat_timequeriesHierarchical summarization via Leiden communities
Auto entity extraction from memory content
Contextual recall triggers (auto-recall on file/tag/entity patterns)
Configurable hybrid search weight, result diversity, tag inference
Qualified entity names (
module.Class.method), incremental indexing
Passive Capture hooks (auto-remember decisions from conversation)
Endless Mode (condensed recall with 50-75% token reduction)
Linked Projects for cross-repo memory awareness
Multi-language AST parsing via tree-sitter (Python, TypeScript, JavaScript, Go, Rust, Java, C, C++, C#, Ruby, PHP)
Qdrant vector backend for persistent vector storage
Proactive file watcher with desktop/log/editor-poll notifications
Pre-commit enforcement hooks blocking commits with stale decisions
CLI tools for status, record-outcome, install-hooks
TF-IDF semantic search with real similarity matching
Memory decay (30-day half-life for decisions/learnings, eternal patterns/warnings)
Conflict detection and failed decision boosting (1.5x relevance)
File-level memory associations
Vector embeddings for enhanced semantic matching
Why Daem0nMCP?
AI agents start each session fresh. They don't remember:
What decisions were made and why
Patterns that should be followed
Warnings from past mistakes
Markdown files don't solve this - the AI has to know to read them and might ignore them.
Daem0nMCP provides ACTIVE memory - it surfaces relevant context when the AI asks about a topic, enforces rules before actions, and learns from outcomes.
What Makes This Different
Semantic matching: "creating REST endpoint" matches rules about "adding API route"
Time decay: A decision from yesterday matters more than one from 6 months ago
Conflict warnings: "You tried this approach before and it failed"
Learning loops: Record outcomes, and failures get boosted in future recalls
Surprise scoring: Novel information surfaces above routine knowledge
Graph reasoning: Multi-hop traversal across linked memories and communities
Background dreaming: Idle-time re-evaluation of past failed decisions
Quick Start
Claude Code (The Easy Way)
Copy
Summon_Daem0n.mdto your projectStart a Claude Code session in that project
Claude will read the file and perform the summoning ritual automatically
OpenCode
Install Daem0n-MCP:
pip install -e ~/Daem0n-MCPRun the installer:
python -m daem0nmcp.cli install-opencodeLaunch OpenCode in your project directory
Run
/communeto begin
For the full ritual walkthrough, see Summon_Daem0n_OpenCode.md.
Manual Installation
# Clone the repository
git clone https://github.com/9thlevelsoftware/Daem0n-MCP.git ~/Daem0n-MCP
# Install
pip install -e ~/Daem0n-MCP
# Run the MCP server (Linux/macOS — stdio transport)
python -m daem0nmcp.server
# Run the MCP server (Windows — HTTP transport required)
python ~/Daem0n-MCP/start_server.py --port 9876Installation by Platform
Linux / macOS (stdio transport)
# Find your Python path
python3 -c "import sys; print(sys.executable)"
# Register with Claude Code (replace <PYTHON_PATH>)
claude mcp add daem0nmcp --scope user -- <PYTHON_PATH> -m daem0nmcp.server
# Restart Claude CodeWindows (HTTP transport required)
Windows has a known bug where Python MCP servers using stdio transport hang indefinitely. Use HTTP transport instead:
Start the server (keep this terminal open):
python ~/Daem0n-MCP/start_server.py --port 9876Or use start_daem0nmcp_server.bat
Add to
~/.claude.json:
{
"mcpServers": {
"daem0nmcp": {
"type": "http",
"url": "http://localhost:9876/mcp"
}
}
}Start Claude Code (after server is running)
Transport Modes
Method | Transport | Default Port | Use Case |
|
| 8765 (sse) | Unix/macOS direct channel |
|
| 9876 | Windows HTTP, remote access |
For OpenCode setup, see the OpenCode Integration section below, or run python -m daem0nmcp.cli install-opencode for automated setup.
Workflow Tools (8 Tools, 59 Actions)
All capabilities are accessed through 8 workflow tools. Each tool accepts an action parameter to select the operation. Legacy individual functions remain importable for internal dispatch, but only the consolidated workflow and cognitive tools are exposed to MCP clients.
commune — Session Start & Status
Action | Purpose |
| Smart session start with git awareness |
| Get all hot memories for current focus |
| Check context triggers for auto-recalled memories |
| Server health, version, and statistics |
| Sacred Covenant status and phase |
| Poll for knowledge changes (real-time notifications) |
consult — Pre-Action Intelligence
Action | Purpose |
| Combined recall + rules check before changes |
| Semantic memory retrieval by topic (supports |
| Get memories linked to a specific file |
| Get memories mentioning a code entity |
| GraphRAG-style layered retrieval with community summaries |
| Full-text search across all memories (supports |
| Validate action against decision rules |
| LLMLingua-2 context compression |
inscribe — Memory Writing & Linking
Action | Purpose |
| Store a memory with conflict detection |
| Store multiple memories in one transaction |
| Create causal relationships between memories |
| Remove relationships between memories |
| Pin/unpin memories to prevent pruning |
| Add memory to always-hot working context |
| Remove memory from active context |
| Clear all active context |
| Import external documentation from URL |
reflect — Outcomes & Verification
Action | Purpose |
| Record whether a decision worked or failed |
| Validate factual claims against stored knowledge |
| Sandboxed Python execution (E2B) |
understand — Code Comprehension
Action | Purpose |
| Index code entities via tree-sitter |
| Semantic search across code entities |
| Analyze blast radius of code changes |
| Scan for TODO/FIXME/HACK/XXX/BUG comments |
| Generate refactor suggestions with causal history |
govern — Rules & Triggers
Action | Purpose |
| Create decision tree rules |
| Modify existing rules |
| Show all configured rules |
| Create auto-recall context triggers |
| List all context triggers |
| Remove a context trigger |
explore — Graph & Discovery
Action | Purpose |
| Find related memories via graph traversal |
| Find causal paths between memories |
| Visualize memory relationships (JSON/Mermaid, supports |
| Knowledge graph metrics |
| List Leiden community clusters (supports |
| Drill down into a community |
| Detect communities via Leiden algorithm |
| List most frequently mentioned entities |
| Extract entities from existing memories |
| Trace knowledge evolution over time |
| Get version history for a memory |
| Query memory state at a point in time |
maintain — Housekeeping & Federation
Action | Purpose |
| Remove old, low-value memories (with protection) |
| Archive/restore memories |
| Find and merge duplicate memories |
| Consolidate episodic memories into summaries |
| Force rebuild TF-IDF and vector indexes |
| Export all memories and rules as JSON |
| Import memories and rules from JSON |
| Link to another project for cross-repo awareness |
| Remove a project link |
| List all linked projects |
| Merge memories from linked projects |
Cognitive Tools (Standalone)
Tool | Purpose |
| Temporal Scrying — replay a past decision with current knowledge |
| Rule Entropy — examine rules for staleness and drift |
| Adversarial Council — evidence-grounded debate with convergence detection |
Tool Names by Client
Different MCP clients use different naming conventions for tools. Both formats resolve to the same server-side operations.
Workflow Tools:
MCP Tool | Claude Code | OpenCode |
commune |
|
|
consult |
|
|
inscribe |
|
|
reflect |
|
|
understand |
|
|
govern |
|
|
explore |
|
|
maintain |
|
|
Cognitive Tools:
MCP Tool | Claude Code | OpenCode |
simulate_decision |
|
|
evolve_rule |
|
|
debate_internal |
|
|
Format pattern:
Client | Format | Separator |
Claude Code |
| Double underscore ( |
OpenCode |
| Single underscore ( |
Usage Examples
Store a Memory
inscribe(
action="remember",
category="decision", # decision, pattern, warning, or learning
content="Use JWT tokens instead of sessions",
rationale="Need stateless auth for horizontal scaling",
tags=["auth", "architecture"],
file_path="src/auth/jwt.py" # optional file association
)Retrieve Memories
consult(action="recall", topic="authentication")
# Returns: decisions, patterns, warnings, learnings about auth
# Sorted by: semantic relevance x recency x importance
consult(action="recall_file", file_path="src/auth/jwt.py")
# Returns: all memories linked to this file
consult(action="recall_entity", entity_name="UserService")
# Returns: all memories mentioning the entity
consult(action="recall", topic="auth", condensed=True)
# Condensed: 50-75% fewer tokens, content truncated to 150 charsCreate Rules
govern(
action="add_rule",
trigger="adding new API endpoint",
must_do=["Add rate limiting", "Write integration test"],
must_not=["Use synchronous database calls"],
ask_first=["Is this a breaking change?"]
)Track Outcomes
reflect(action="outcome", memory_id=42, outcome_text="JWT auth works great", worked=True)
reflect(action="outcome", memory_id=43, outcome_text="Caching caused stale data", worked=False)
# Failed decisions get 1.5x boost in future recallsSession Start
commune(action="briefing", focus_areas=["authentication", "API"])
# Returns: stats, recent decisions, warnings, failed approaches,
# git changes, plus pre-fetched context for focus areasActive Context (Working Memory)
inscribe(action="activate", memory_id=42, reason="Working on auth refactor",
priority=10, expires_in_hours=8)
# Memory stays in always-hot context, auto-injected into briefings
# Max 10 items, auto-expires, duplicate prevention
commune(action="active_context") # View all hot memories
inscribe(action="deactivate", memory_id=42) # Remove
inscribe(action="clear_active") # Clear allCognitive Tools
# Temporal Scrying: What would I decide differently today?
simulate_decision(decision_id=42)
# Rule Entropy: Which rules have grown stale?
evolve_rule(rule_id=5) # Single rule
evolve_rule() # Batch: all enabled rules
# Adversarial Council: Evidence-grounded debate
debate_internal(
topic="Database choice for sessions",
advocate_position="Use Redis",
challenger_position="Use PostgreSQL"
)Import External Docs
inscribe(action="ingest", url="https://stripe.com/docs/api/charges", topic="stripe")
# Later: consult(action="recall", topic="stripe") to retrieveAI Agent Protocol
The recommended workflow for AI agents:
SESSION START
+-> commune(action="briefing")
BEFORE CHANGES
+-> consult(action="preflight", description="what you're doing")
+-> consult(action="recall_file", file_path="path/to/file.py")
AFTER DECISIONS
+-> inscribe(action="remember", category=..., content=..., rationale=..., file_path=...)
AFTER IMPLEMENTATION
+-> reflect(action="outcome", memory_id=..., outcome_text=..., worked=...)See Summon_Daem0n.md for the complete protocol (with ritual theme for fun).
Claude Code Integration
Automated Hook Installation (Recommended)
python -m daem0nmcp.cli install-claude-hooksThis registers 5 hook modules in ~/.claude/settings.json:
Event | Hook | Purpose |
|
| Auto-briefing summary |
|
| Preflight enforcement + file memory recall |
|
| Rule enforcement on commands |
|
| Suggest remembrance for significant changes |
|
| Auto-capture decisions from conversation |
To remove: python -m daem0nmcp.cli uninstall-claude-hooks
Manual Hooks (Legacy)
Add to .claude/settings.json:
{
"hooks": {
"PreToolUse": [{
"matcher": "Edit|Write|NotebookEdit",
"hooks": [{
"type": "command",
"command": "python3 \"$HOME/Daem0nMCP/hooks/daem0n_pre_edit_hook.py\""
}]
}],
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "python3 \"$HOME/Daem0nMCP/hooks/daem0n_post_edit_hook.py\""
}]
}],
"Stop": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "python3 \"$HOME/Daem0nMCP/hooks/daem0n_stop_hook.py\""
}]
}]
}
}Protocol Skill
A Claude Code skill is included at .claude/skills/daem0nmcp-protocol/SKILL.md that enforces the memory protocol automatically.
OpenCode Integration
OpenCode connects to Daem0n-MCP via the same MCP server. No server changes required -- the daemon serves all clients equally.
Configuration
Create opencode.json at your project root:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"daem0nmcp": {
"type": "local",
"command": ["python", "-m", "daem0nmcp"],
"enabled": true,
"environment": {
"PYTHONUNBUFFERED": "1"
}
}
}
}For Windows (where HTTP transport is required), use:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"daem0nmcp": {
"type": "remote",
"url": "http://localhost:9876/mcp",
"enabled": true
}
}
}System Instructions
OpenCode reads AGENTS.md from the project root for system prompt injection. The Sacred Covenant protocol is included in AGENTS.md with OpenCode-compatible tool names.
If both AGENTS.md and CLAUDE.md exist in a project, OpenCode uses only AGENTS.md.
Tool Names
OpenCode uses a different tool name format than Claude Code:
Client | Format | Example |
Claude Code |
|
|
OpenCode |
|
|
Both formats resolve to the same MCP server tools. Use the format matching your client. See the Tool Names by Client table in the Workflow Tools section for the complete mapping.
How It Works
Hybrid Search (BM25 + Vector + RRF)
BM25 for keyword matching with term saturation and length normalization
ModernBERT vector embeddings (256-dim, asymmetric encoding) for deep semantic understanding
Reciprocal Rank Fusion combines both with configurable weights
"blocking database calls" matches memories about "synchronous queries"
Auto-Zoom Retrieval Routing
Query-aware dispatch classifies complexity and routes to the optimal strategy:
Simple queries → vector-only (fast path)
Medium queries → hybrid BM25+vector
Complex queries → GraphRAG multi-hop with community summaries
Memory Decay
weight = e^(-lambda*t) where lambda = ln(2)/half_life_daysDefault half-life is 30 days. Patterns and warnings are permanent (no decay).
Conflict Detection
When storing a new memory, it's compared against recent memories:
If similar content failed before → warning about the failure
If it matches an existing warning → warning surfaced
If highly similar content exists → potential duplicate flagged
Failed Decision Boosting
Memories with worked=False get a 1.5x relevance boost in recalls.
Warnings get a 1.2x boost. Past mistakes surface prominently.
Background Dreaming
During idle periods, the daemon re-evaluates failed decisions against current evidence. FailedDecisionReview strategy finds worked=False decisions, recalls current evidence, and persists actionable insights as learning memories. Yields cooperatively when the user returns.
Data Storage
Each project gets isolated storage at:
<project_root>/.daem0nmcp/storage/daem0nmcp.dbConfiguration
All settings are configurable via environment variables with DAEM0NMCP_ prefix.
Core Settings
Variable | Default | Description |
|
| Project root path |
| auto | Override storage location |
|
| Logging level |
|
| Remote Qdrant URL (overrides local) |
Embedding Model (v6.6.6+)
Variable | Default | Description |
|
| Model name |
|
| Matryoshka truncation dimension |
| auto-detected |
|
|
| Prefix for query encoding |
|
| Prefix for document encoding |
Search Tuning
Variable | Default | Description |
|
| Vector weight in hybrid search (0.0-1.0) |
|
| BM25 term frequency saturation |
|
| BM25 document length normalization |
|
| RRF fusion dampening constant |
|
| Max results from same file |
Auto-Zoom Routing
Variable | Default | Description |
|
| Master switch for query-aware routing |
|
| Log classifications without routing |
|
| Below this → hybrid fallback |
|
| Multi-hop depth for complex queries |
Background Dreaming
Variable | Default | Description |
|
| Master switch for dreaming |
|
| Seconds of idle before dreaming starts |
|
| Max failed decisions to re-evaluate |
|
| Min age before re-evaluation eligible |
Cognitive Tools
Variable | Default | Description |
|
| Max rounds for adversarial council |
|
| Max rules to analyze for staleness |
|
| Time-based decay weight |
Recall Planner
Variable | Default | Description |
|
| Neighbors for surprise calculation |
|
| Boost threshold (0.0-1.0) |
|
| Max memories for simple queries |
|
| Max memories for medium queries |
|
| Max memories for complex queries |
|
| Outcomes to promote to fact |
See Summon_Daem0n.md for the complete configuration reference (~50 settings).
Architecture
daem0nmcp/
├── server.py # MCP server with 8 workflow + 3 cognitive tools (FastMCP)
├── mcp_instance.py # FastMCP instance creation
├── config.py # Pydantic settings (~50 configurable options)
├── memory.py # Memory storage & semantic retrieval
├── rules.py # Rule engine with BM25 matching
├── similarity.py # TF-IDF index, decay, conflict detection
├── vectors.py # ModernBERT embeddings (ONNX/torch, asymmetric encoding)
├── bm25_index.py # BM25 Okapi keyword retrieval
├── fusion.py # Reciprocal Rank Fusion for hybrid search
├── surprise.py # Titans-inspired novelty detection
├── recall_planner.py # TiMem-style complexity classification
├── retrieval_router.py # Auto-Zoom query-aware search dispatch
├── query_classifier.py # Exemplar-based query complexity classification
├── qdrant_store.py # Qdrant vector database backend
├── active_context.py # MemGPT-style always-hot working memory
├── entity_extractor.py # Entity extraction from memory content
├── entity_manager.py # Entity lifecycle management
├── communities.py # Leiden community detection & summaries
├── context_triggers.py # Auto-recall trigger system
├── context_manager.py # Multi-project context management
├── covenant.py # Sacred Covenant enforcement & preflight tokens
├── database.py # SQLite async database
├── models.py # 10+ tables: memories, rules, relationships, etc.
├── enforcement.py # Pre-commit enforcement & session tracking
├── hooks.py # Git hook templates & installation
├── cli.py # Command-line interface
├── workflows/ # 8 consolidated workflow tools
│ ├── commune.py # Session start & status
│ ├── consult.py # Pre-action intelligence
│ ├── inscribe.py # Memory writing & linking
│ ├── reflect.py # Outcomes & verification
│ ├── understand.py # Code comprehension
│ ├── govern.py # Rules & triggers
│ ├── explore.py # Graph & discovery
│ └── maintain.py # Housekeeping & federation
├── tools/ # MCP tool registrations
│ ├── workflows.py # 8 workflow tool definitions
│ ├── cognitive_tools.py # simulate_decision, evolve_rule, debate_internal
│ ├── memory.py # Legacy memory tools (deprecated)
│ ├── briefing.py # Legacy briefing tools (deprecated)
│ ├── code_tools.py # Legacy code tools (deprecated)
│ ├── context_tools.py # Legacy context tools (deprecated)
│ ├── entity_tools.py # Legacy entity tools (deprecated)
│ ├── graph_tools.py # Legacy graph tools (deprecated)
│ ├── rules.py # Legacy rule tools (deprecated)
│ ├── temporal.py # Legacy temporal tools (deprecated)
│ ├── verification.py # Legacy verification tools (deprecated)
│ ├── federation.py # Legacy federation tools (deprecated)
│ ├── maintenance.py # Legacy maintenance tools (deprecated)
│ └── agency_tools.py # Legacy agency tools (deprecated)
├── cognitive/ # Cognitive tool implementations
│ ├── simulate.py # Temporal scrying (decision replay)
│ ├── evolve.py # Rule entropy analysis
│ └── debate.py # Adversarial council
├── dreaming/ # Background dreaming system
│ ├── scheduler.py # IdleDreamScheduler (idle detection + dispatch)
│ ├── strategies.py # FailedDecisionReview strategy
│ └── persistence.py # Dream session/result models & persistence
├── claude_hooks/ # Claude Code native hooks
│ ├── install.py # install/uninstall-claude-hooks CLI
│ ├── session_start.py # Auto-briefing at session dawn
│ ├── pre_edit.py # Preflight enforcement + file recall
│ ├── pre_bash.py # Rule enforcement on commands
│ ├── post_edit.py # Significance detection
│ ├── stop.py # Auto-capture decisions
│ └── _client.py # Hook helper utilities
├── compression/ # LLMLingua-2 context compression
├── graph/ # Knowledge graph (NetworkX + Leiden)
├── reflexion/ # Metacognitive architecture (LangGraph)
├── agency/ # Dynamic agency (E2B sandboxing)
├── transforms/ # FastMCP 3.0 middleware
│ └── covenant.py # CovenantMiddleware & CovenantTransform
├── ui/ # MCP Apps visual interfaces (D3.js)
├── channels/ # Notification channels (desktop, log, editor-poll)
├── migrations/ # Database schema & embedding migrations
├── code_indexer.py # Code understanding via tree-sitter
├── watcher.py # Proactive file watcher daemon
├── tracing.py # OpenTelemetry integration (optional)
├── prompt_templates.py # AutoPDL-inspired modular prompts
└── tool_search.py # Dynamic tool discovery index
.claude/
└── skills/
└── daem0nmcp-protocol/
└── SKILL.md # Protocol enforcement skill
.opencode/
├── commands/
│ ├── commune.md # /commune slash command
│ ├── counsel.md # /counsel slash command
│ ├── inscribe.md # /inscribe slash command
│ └── recall.md # /recall slash command
└── plugins/
└── daem0n.ts # Covenant enforcement plugin
Summon_Daem0n.md # Claude Code installation grimoire
Summon_Daem0n_OpenCode.md # OpenCode installation grimoire
Banish_Daem0n.md # Uninstallation instructions (both clients)
start_server.py # HTTP server launcher (streamable-http transport)CLI Commands
# Session briefing/statistics
python -m daem0nmcp.cli briefing
# Index code entities
python -m daem0nmcp.cli index [--path PATH] [--patterns **/*.py **/*.ts ...]
# Scan for TODO/FIXME/HACK comments
python -m daem0nmcp.cli scan-todos [--auto-remember] [--path PATH]
# Check a file against memories and rules
python -m daem0nmcp.cli check <filepath>
# Run database migrations (usually automatic)
python -m daem0nmcp.cli migrate [--backfill-vectors]Hook & Enforcement Commands
# Install Claude Code hooks (user-level, all projects)
python -m daem0nmcp.cli install-claude-hooks [--dry-run]
# Remove Claude Code hooks
python -m daem0nmcp.cli uninstall-claude-hooks [--dry-run]
# Install OpenCode configuration (project-level)
python -m daem0nmcp.cli install-opencode [--dry-run] [--force]
# Creates: opencode.json, .opencode/ directories, .opencode/plugins/daem0n.ts
# AGENTS.md and command files are not auto-created
# Install git pre-commit hooks
python -m daem0nmcp.cli install-hooks [--force]
# Remove git pre-commit hooks
python -m daem0nmcp.cli uninstall-hooks
# Show pending decisions and blocking issues
python -m daem0nmcp.cli status
# Record outcome for a decision
python -m daem0nmcp.cli record-outcome <id> "<outcome>" --worked|--failedAll commands support --json for machine-readable output and --project-path to specify the project root.
Upgrading
1. Update the Code
# If installed from source (recommended)
cd ~/Daem0n-MCP && git pull && pip install -e .
2. Re-encode Embeddings (v6.6.6+ — REQUIRED for existing data)
The embedding model changed from all-MiniLM-L6-v2 (384-dim) to nomic-ai/modernbert-embed-base (256-dim). Existing embeddings must be re-encoded:
python -m daem0nmcp.migrations.migrate_embedding_model --project-path /path/to/.daem0nmcpQdrant collections are auto-recreated with the correct dimension on first startup.
3. Install Claude Code Hooks
python -m daem0nmcp.cli install-claude-hooks4. Restart Claude Code
After updating, restart Claude Code to load the new MCP tools.
4b. Update OpenCode Configuration (if using OpenCode)
python -m daem0nmcp.cli install-opencode --forceThis regenerates opencode.json and the plugin to match the latest version.
5. Migrations Run Automatically
Database schema migrations are applied automatically when any MCP tool runs. No manual migration step required.
6. Index Your Codebase
python -m daem0nmcp.cli indexSupports Python, TypeScript, JavaScript, Go, Rust, Java, C, C++, C#, Ruby, PHP via tree-sitter.
Troubleshooting
MCP Tools Not Available in Claude Session
Symptom: claude mcp list shows daem0nmcp connected, but Claude can't use mcp__daem0nmcp__* tools.
Fixes:
Start server before Claude Code (Windows):
# Terminal 1: Start Daem0n server first python ~/Daem0n-MCP/start_server.py --port 9876 # Wait for "Uvicorn running on http://localhost:9876" # Terminal 2: Then start Claude Code claudeRe-register the server:
claude mcp remove daem0nmcp -s user claude mcp add daem0nmcp http://localhost:9876/mcp -s user
Hooks Not Firing
MCP server running:
curl http://localhost:9876/mcpshould respondHooks configured: check
~/.claude/settings.jsonor.claude/settings.jsonProject has
.daem0nmcp/directory
Communion/Counsel Errors
COMMUNION_REQUIRED→ Callcommune(action="briefing", project_path="...")firstCOUNSEL_REQUIRED→ Callconsult(action="preflight", description="...", project_path="...")first
OpenCode: Tools Not Found
Symptom: OpenCode reports "tool not found" when using mcp__daem0nmcp__* format.
Fix: OpenCode uses single-underscore format: daem0nmcp_commune (not mcp__daem0nmcp__commune). See Tool Names by Client for the full mapping.
OpenCode: MCP Connection Timeout
Symptom: First tool call times out, but subsequent calls work.
Fix: The embedding model loads on first call (several seconds). Add "timeout": 30000 to your opencode.json MCP config.
OpenCode: Covenant Not Enforced
Symptom: No preflight warnings, no post-edit suggestions in OpenCode.
Fix:
Verify plugin exists:
ls .opencode/plugins/daem0n.tsVerify AGENTS.md contains the Sacred Covenant section
Check OpenCode logs for plugin errors
Development
# Install in development mode
pip install -e .[dev]
# Run tests (500+ tests)
pytest tests/ -v --asyncio-mode=auto
# Run server directly (stdio)
python -m daem0nmcp.server
# Run HTTP server (Windows)
python start_server.py --port 9876Support
If Daem0nMCP has been useful to you, consider supporting its development:
Uninstallation
See Banish_Daem0n.md for complete removal instructions (covers both Claude Code and OpenCode), or quick version:
Claude Code
python -m daem0nmcp.cli uninstall-claude-hooks
claude mcp remove daem0nmcp --scope user
pip uninstall daem0nmcp
rm -rf ~/Daem0n-MCP
rm -rf .daem0nmcp/OpenCode
rm opencode.json
rm -rf .opencode/commands/ .opencode/plugins/daem0n.ts
pip uninstall daem0nmcp
rm -rf ~/Daem0n-MCP
rm -rf .daem0nmcp/ "The system learns from YOUR outcomes.
Record them faithfully..."
~ Daem0nDaem0nMCP v6.6.6: ModernBERT Deep Sight (256-dim Matryoshka, ONNX quantized, asymmetric encoding). 8 workflow tools with 59 actions + 3 cognitive tools (simulate_decision, evolve_rule, debate_internal). Background Dreaming, Auto-Zoom Retrieval Routing, Active Context, Visual Portals (MCP Apps), GraphRAG, bi-temporal knowledge, LLMLingua-2 compression. Claude Code native hooks + OpenCode integration (plugins, commands, covenant enforcement). 500+ tests. The daemon reaches beyond the veil.
Available Tools
11 toolscommuneC
Session start & status operations.
Actions: briefing, active_context, triggers, health, covenant, updates
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| since | No | ||
| action | Yes | ||
| visual | No | ||
| entities | No | ||
| file_path | No | ||
| focus_areas | No | ||
| project_path | No | ||
| interval_seconds | No | ||
| parent_community_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It only provides a category and a list of action names, with no indication of side effects, permissions, or whether actions are read-only or mutating. This is minimally informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, but the brevity is under-specification rather than conciseness. The action list is cryptic and would be more useful if each action were briefly defined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 11 parameters, no annotations, and no parameter descriptions, the description is highly inadequate. It does not explain how actions relate to the many input parameters, nor what the output schema will contain. This is far from complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description needed to clarify parameter meanings. It only hints that 'action' can take values like briefing or health, but gives no insight into tags, limit, since, visual, entities, file_path, focus_areas, project_path, interval_seconds, or parent_community_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool handles 'Session start & status operations', giving a general resource and purpose. However, the listed actions (briefing, active_context, triggers, health, covenant, updates) are not explained, and the description doesn't distinguish this from sibling tools like govern or reflect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention use cases, exclusions, or relationships to sibling tools, leaving the agent to guess the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultD
Pre-action intelligence gathering.
Actions: preflight, recall, recall_file, recall_entity, recall_hierarchical, search, check_rules, compress
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | ||
| tags | No | ||
| limit | No | ||
| query | No | ||
| since | No | ||
| topic | No | ||
| until | No | ||
| action | Yes | ||
| offset | No | ||
| visual | No | ||
| context | No | ||
| condensed | No | ||
| file_path | No | ||
| highlight | No | ||
| categories | No | ||
| action_desc | No | ||
| description | No | ||
| entity_name | No | ||
| entity_type | No | ||
| content_type | No | ||
| include_meta | No | ||
| project_path | No | ||
| compress_text | No | ||
| highlight_end | No | </b> | |
| preserve_code | No | ||
| include_linked | No | ||
| highlight_start | No | <b> | |
| include_members | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits, but it does not. There is no mention of side effects, permissions, rate limits, output nature, or other operational details. The action names suggest intelligence gathering, but their actual behavior is undefined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, but it is under-specified rather than appropriately concise. The action list is presented without context or definitions, and the description lacks structure to help an agent understand how to use the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's high complexity (28 parameters, multiple actions) and the presence of an output schema, the description is severely incomplete. It does not explain what actions do, what parameters mean, or what outputs to expect. This is insufficient for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to explain the many parameters. It only lists possible action values, leaving parameters like 'visual', 'condensed', 'highlight', and 'compress_text' completely unexplained. No parameter semantics are added beyond the property names themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Pre-action intelligence gathering' is vague and lacks a clear verb+resource structure. The list of actions (preflight, recall, search, compress) hints at capabilities but does not define what they do or how they relate to the tool's purpose. It also fails to distinguish the tool from sibling tools like explore or reflect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use consult versus other tools. The phrase 'pre-action' implies a temporal context, but it is not elaborated. There are no explicit alternatives, exclusions, or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_internalA
Adversarial Council -- convene an internal debate grounded in memory evidence.
Runs a structured advocate/challenger/judge debate where each argument is supported only by recalled memory evidence. No external reasoning is invoked. Convergence detection halts deliberation when positions stabilize. The synthesis is inscribed as a consensus memory for future retrieval.
Args: topic: The subject of deliberation advocate_position: The position the advocate will defend challenger_position: The position the challenger will defend project_path: Project root
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| project_path | No | ||
| advocate_position | Yes | ||
| challenger_position | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses key behaviors: arguments are supported only by recalled memory evidence, no external reasoning, convergence detection halts deliberation, and consensus memory inscription. This adds meaningful context beyond the schema, though it does not mention all possible side effects or errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear title, two sentences of explanatory detail, and a structured Args list. No filler or redundant information; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers the core purpose, process, side effects, and constraints. It does not explain return values (but an output schema exists) nor explicit usage timing, but overall it provides sufficient context for an agent to understand the tool's function and behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The Args list provides brief definitions for all four parameters, but the explanations are minimal (e.g., 'project_path: Project root') and add limited value beyond the parameter names themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool convenes an internal structured debate grounded in memory evidence, naming specific roles (advocate/challenger/judge). It distinguishes itself from siblings by highlighting that no external reasoning is invoked and that the synthesis is recorded as consensus memory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for internal deliberation using memory evidence, but provides no explicit 'when to use' or 'when not to use' guidance, nor does it name alternative tools. Usage context is implied but not clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evolve_ruleA
Rule Entropy Analysis -- examine rules for signs of decay and drift.
Cross-references rule triggers against the code index and outcome history to produce staleness scores and concrete evolution suggestions. The daemon proposes changes but never inscribes them without consent.
Args: rule_id: Specific rule ID to analyze (omit for batch analysis of all rules) project_path: Project root
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | No | ||
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly states that the daemon 'proposes changes but never inscribes them without consent,' which reveals the non-mutating, advisory nature of the tool. It does not cover permission requirements or failure modes, but the key behavioral trait is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: a clear title line, a two-sentence body with a focused purpose statement, and a concise Args block. Every sentence contributes useful information without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and there are only two optional parameters, the description provides sufficient context for correct invocation: what the tool does, how to target a specific rule or run batch analysis, and the non-mutation guarantee. It could mention prerequisites like the need for a code index or outcome history, but this is not a significant gap for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args section is crucial. The description adds meaningful context to both parameters: rule_id is explained as 'Specific rule ID to analyze (omit for batch analysis of all rules)' and project_path as 'Project root'. This goes beyond the schema's bare names and defaults, though project_path could be more detailed about how it is used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Rule Entropy Analysis -- examine rules for signs of decay and drift' and details how it cross-references rule triggers against the code index and outcome history to produce staleness scores and evolution suggestions. This clearly specifies the verb (examine/analyze), resource (rules), and output, while the phrase 'never inscribes them without consent' distinguishes it from the sibling tool 'inscribe'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended use clear: analyze rules for decay/drift. It also explains batch vs. specific analysis via the rule_id parameter ('omit for batch analysis of all rules'). However, it does not explicitly name alternative tools or state when another sibling tool should be used instead, so it falls short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exploreC
Graph & discovery operations.
Actions: related, chain, graph, stats, communities, community_detail, rebuild_communities, entities, backfill_entities, evolution, versions, at_time
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | ||
| limit | No | ||
| topic | No | ||
| action | Yes | ||
| format | No | json | |
| visual | No | ||
| direction | No | both | |
| entity_id | No | ||
| max_depth | No | ||
| memory_id | No | ||
| timestamp | No | ||
| memory_ids | No | ||
| resolution | No | ||
| entity_name | No | ||
| entity_type | No | ||
| community_id | No | ||
| project_path | No | ||
| end_memory_id | No | ||
| include_orphans | No | ||
| start_memory_id | No | ||
| min_community_size | No | ||
| relationship_types | No | ||
| include_invalidated | No | ||
| parent_community_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing side effects, authorization needs, or state changes. The description does not mention that some actions like 'rebuild_communities' or 'backfill_entities' likely mutate data, nor does it disclose read-only behavior, rate limits, or return characteristics. There is no behavioral transparency at all.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the main category, followed by an action list. There is no extraneous prose. However, the action list is not structured with descriptions or grouped by purpose, which limits its usefulness. Still, it earns its place as a compact enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's high complexity—24 parameters, 11 dispatching actions, and no annotations—the description is severely incomplete. It provides no per-action guidance, no parameter-action mapping, and no explanation of expected outputs or side effects. The presence of an output schema does not make up for the absence of operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 24 parameters with zero description coverage, and the description only lists possible values for the 'action' parameter without explaining their semantics. This is marginally helpful for understanding the required 'action' field, but it fails to clarify the purpose of the other 23 parameters, including relationships between them and the actions. The description does not compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool is for 'Graph & discovery operations' and lists eleven action names, which gives a broad sense of scope. However, it does not define any specific action or the resource it operates on, making it only slightly more helpful than the tool name. It is not a tautology, but it lacks the specificity needed to clearly distinguish individual operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus its siblings, nor any context for choosing among the listed actions. The action list implies there are different modes, but no criteria or examples are provided. This leaves the agent without direction for selecting the correct operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
governC
Rules & triggers management.
Actions: add_rule, update_rule, list_rules, add_trigger, list_triggers, remove_trigger
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| action | Yes | ||
| enabled | No | ||
| must_do | No | ||
| pattern | No | ||
| rule_id | No | ||
| trigger | No | ||
| must_not | No | ||
| priority | No | ||
| warnings | No | ||
| ask_first | No | ||
| trigger_id | No | ||
| active_only | No | ||
| enabled_only | No | ||
| project_path | No | ||
| recall_topic | No | ||
| trigger_type | No | ||
| recall_categories | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits, but it does not. It gives no indication of side effects, required permissions, rate limits, or what happens when actions are executed. The list of actions is not accompanied by any behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose, but it is under-specified. The line-break list of actions is clear, but the brevity comes at the cost of missing essential context, so it is not effectively structured for decision-making.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and 18 parameters, the description provides almost no context. It does not explain how to combine actions with parameters, what outputs to expect, or any operational details. This is severely incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fails to explain any of the 18 parameters. It does not map parameters like 'pattern', 'must_do', 'ask_first', or 'project_path' to specific actions, leaving the agent without any semantic guidance for choosing and filling parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as managing rules and triggers, and lists specific actions (add_rule, update_rule, list_rules, etc.) that define its scope. This distinguishes it from siblings like 'evolve_rule' which is more focused on rule evolution, though it could be more explicit about the governance context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It simply lists actions without explaining scenarios, prerequisites, or conditions under which this tool is preferred over siblings like 'evolve_rule' or 'maintain'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inscribeC
Memory writing & linking operations.
Actions: remember, remember_batch, link, unlink, pin, activate, deactivate, clear_active, ingest
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| tags | No | ||
| topic | No | ||
| action | Yes | ||
| pinned | No | ||
| reason | No | ||
| content | No | ||
| context | No | ||
| category | No | ||
| memories | No | ||
| priority | No | ||
| file_path | No | ||
| memory_id | No | ||
| rationale | No | ||
| source_id | No | ||
| target_id | No | ||
| chunk_size | No | ||
| description | No | ||
| happened_at | No | ||
| project_path | No | ||
| relationship | No | ||
| expires_in_hours | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention side effects, data loss potential (e.g., unlink, clear_active), authorization needs, or state changes. The action names hint at behaviors but the description itself provides no transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, which is concise, but it's also under-specified. The structure (a header plus a list of actions) is clean, but it lacks the depth needed to be useful. It's not bloated, but it's not well-rounded either.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (22 parameters, 8 actions, no annotations, no parameter descriptions), this description is far from complete. There's no context about which actions pair with which parameters, what the expected behavior is, or what the output contains. An agent would be guessing at how to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It only lists possible values for the 'action' parameter, which is helpful, but it provides no meaning for the other 21 parameters. This is minimal compensation and leaves most parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Memory writing & linking operations' which gives a vague sense of purpose, but it doesn't define what the tool actually does beyond a category. The list of actions (remember, link, pin, etc.) provides some specificity, but the overall purpose is still fuzzy and doesn't clearly distinguish it from siblings like reflect or maintain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description simply lists actions without explaining any context, prerequisites, or exclusions. It's an empty shell regarding usage selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maintainC
Housekeeping & federation operations.
Actions: prune, archive, cleanup, compact, rebuild_index, export, import_data, link_project, unlink_project, list_projects, consolidate, purge_dream_spam
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| label | No | ||
| limit | No | ||
| merge | No | ||
| topic | No | ||
| action | Yes | ||
| dry_run | No | ||
| summary | No | ||
| archived | No | ||
| memory_id | No | ||
| categories | No | ||
| linked_path | No | ||
| project_path | No | ||
| relationship | No | related | |
| archive_sources | No | ||
| include_vectors | No | ||
| older_than_days | No | ||
| merge_duplicates | No | ||
| min_recall_count | No | ||
| protect_successful | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure, but it offers none. Actions like prune, purge, cleanup, and consolidate are potentially destructive, yet there is no mention of side effects, reversibility, permissions, or safety defaults. The dry_run parameter is not mentioned either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise in length but under-specified. It front-loads a generic category ('Housekeeping & federation operations') and a list of actions, but the content is too sparse to be useful. It is not verbose, but it also does not earn its place as a meaningful description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (20 parameters, 12 actions, no annotations), the description is severely incomplete. It does not explain how actions relate to parameters, what each action does, or when to use them. The existence of an output schema is the only mitigating factor, but it cannot compensate for the missing operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameter meanings, but it does not. It only lists the action names and leaves 20 parameters (e.g., data, merge, archive_sources, project_path) completely unexplained. The description adds no value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as handling 'Housekeeping & federation operations' and lists 12 specific actions (prune, archive, cleanup, etc.), which helps an agent grasp the scope. It distinguishes itself from sibling tools like reflect or explore by its maintenance-focused role, though the term 'federation' remains vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description simply lists actions without any context on prerequisites, scenarios, or exclusions. An agent gets no help deciding between 'maintain' and a sibling like 'govern' or 'understand'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reflectD
Outcomes & verification operations.
Actions: outcome, verify, execute
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| text | No | ||
| action | Yes | ||
| worked | No | ||
| memory_id | No | ||
| as_of_time | No | ||
| categories | No | ||
| outcome_text | No | ||
| project_path | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavior. It does not reveal whether actions are read-only, mutating, cause side effects, require authentication, or have other implications. For instance, the 'execute' action could be destructive, but no safety information is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While the description is brief (two short phrases), it is under-specified rather than concise. It provides no structured breakdown of actions, parameters, or usage examples, so the brevity is a liability, not a convenience.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has high complexity (10 parameters, multiple actions, an output schema yet not shown), but the description provides virtually no context. It does not explain what 'outcome', 'verify', or 'execute' mean, how they relate, or what kind of output to expect, making the tool unusable for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 10 parameters, and schema description coverage is 0%. The description does not explain the meaning or expected format of any parameter. Required 'action' is a bare string with no enum or examples, and optional fields like 'worked', 'memory_id', and 'project_path' are completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Outcomes & verification operations' is an abstract category, not a specific verb+resource. It lists action names ('outcome', 'verify', 'execute') without defining what each does, and does not distinguish 'reflect' from sibling tools. The tool's purpose remains ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention any context, prerequisites, or exclusions, and fails to reference any sibling tools for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_decisionA
Temporal Scrying -- replay a past decision with current knowledge.
Reconstructs the context that existed at the decision's moment of inscription, compares it with the daemon's present understanding, and reveals what is now known that was not known then.
Args: decision_id: Memory ID of the decision to scry project_path: Project root
| Name | Required | Description | Default |
|---|---|---|---|
| decision_id | Yes | ||
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of explaining behavior. It discloses that the tool reconstructs past context, compares it with current understanding, and reveals previously unknown information, implying a non-destructive analysis. However, it does not address potential side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a memorable title followed by a clear explanation and a brief Args list. No unnecessary detail is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (covering return values), the description sufficiently covers purpose and parameters. It does not clarify how project_path is used or mention any preconditions, but for a 2-parameter tool this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an 'Args' section that defines decision_id as 'Memory ID of the decision to scry' and project_path as 'Project root,' providing semantic meaning that the bare schema lacks. With 0% schema description coverage, this full compensation earns a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Temporal Scrying -- replay a past decision with current knowledge,' which clearly identifies the action and resource. It further explains the process of reconstructing context and revealing new insights, making it distinct from sibling tools like reflect or explore.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear context for use (replaying past decisions with current knowledge) but does not explicitly mention alternatives or situations to avoid. This meets the 'clear context, no exclusions' bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
understandC
Code comprehension operations.
Actions: index, find, impact, todos, refactor
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| limit | No | ||
| query | No | ||
| types | No | ||
| action | Yes | ||
| patterns | No | ||
| file_path | No | ||
| entity_name | No | ||
| project_path | No | ||
| auto_remember | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it fails to mention side effects (e.g., 'refactor' may modify code), permissions, or output behavior. The action list hints at capabilities but does not explain consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a clear category followed by a list of actions. Both lines are useful and the structure is easy to scan, though it lacks detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the tool is complex with 10 parameters, no schema descriptions, and no annotations. The description is far too sparse to give an agent enough context on how to correctly invoke actions and choose parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description does not mention any of the 10 parameters (e.g., path, query, limit, action) or their roles. It provides no compensation for the schema's missing documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as 'Code comprehension operations' and lists five actions, giving a general sense of its purpose. However, it does not describe what each action actually does, making the purpose somewhat vague rather than clearly specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any exclusions or context. It merely states a category and action names, leaving the agent to infer usage without support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
11 tool updates
v1.0.1- First observed
commune - First observed
consult - First observed
debate_internal - First observed
evolve_rule - First observed
explore - First observed
govern - First observed
inscribe - First observed
maintain - First observed
reflect - First observed
simulate_decision - First observed
understand
TDQS
Each tool targets a distinct operational domain (memory, rules, code, decisions, housekeeping), with only minor overlap between explore and consult in retrieval contexts. Descriptions are clear enough to differentiate them.
Tool names mix single verbs (reflect, explore, commune) with compound forms (simulate_decision, evolve_rule, debate_internal). This inconsistent pattern makes it harder to predict tool function from name alone.
11 tools is well within the ideal 3-15 range, and each tool bundles a coherent set of sub-operations that justifies its presence. The count feels appropriate for the server's broad scope.
The surface covers memory, rules, code comprehension, decision analysis, session management, and housekeeping. Minor gaps include lack of explicit rule deletion and some overlapping retrieval methods, but these do not significantly hinder agent workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Private persistent memory for Claude, ChatGPT & Gemini via MCP - semantic search, zero-code setup.
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceCognitive memory system for AI agents with 129 MCP tools. Persistent 6-tier hierarchical memory (working→short-term→long-term→semantic), Ebbinghaus forgetting curves, dream consolidation, hybrid retrieval (BM25+RRF), goal tracking, emotional recall, knowledge graphs, and a 26-job consciousness daemon. Works with Claude Code, Cursor, and any MCP client.-
- AlicenseDqualityAmaintenanceSuperMemory is an MCP-first learning memory layer for agents. It helps Claude, Cursor, and other MCP clients reuse validated lessons from prior failures, corrections, and outcomes without saving full transcripts.292MIT
- AlicenseNot gradedqualityBmaintenancePersistent memory for AI coding agents that stores and recalls preferences, decisions, and conventions via semantic similarity, with zero cloud dependencies and plug-and-play MCP integration for Claude Code.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceGives AI persistent personal memory with hybrid search, temporal decay, and knowledge graph. Works with Claude and any MCP client.168MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/9thLevelSoftware/Daem0n-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server