Waggle-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WAGGLE_MODEL | No | Embedding model. Use deterministic for offline-safe Glama inspection. | deterministic |
| WAGGLE_BACKEND | No | Backend database type: sqlite or neo4j | sqlite |
| WAGGLE_DB_PATH | No | Path to SQLite database file when WAGGLE_BACKEND=sqlite | /tmp/waggle-memory.db |
| MCP_PROXY_DEBUG | No | Enable verbose mcp-proxy debugging | false |
| WAGGLE_HTTP_HOST | No | Bind host for HTTP service | 0.0.0.0 |
| WAGGLE_HTTP_PORT | No | Bind port for HTTP service | 8080 |
| WAGGLE_LOG_LEVEL | No | Log level | INFO |
| WAGGLE_NEO4J_URI | No | Neo4j Bolt URI when WAGGLE_BACKEND=neo4j | |
| WAGGLE_TRANSPORT | No | Transport mode: stdio or http | stdio |
| WAGGLE_EXPORT_DIR | No | Optional export directory | /tmp/waggle-exports |
| WAGGLE_STARTUP_MODE | No | Startup mode. fast skips ML warmup so Glama can inspect tools quickly. | fast |
| WAGGLE_NEO4J_DATABASE | No | Neo4j database name when WAGGLE_BACKEND=neo4j | |
| WAGGLE_NEO4J_PASSWORD | No | Neo4j password when WAGGLE_BACKEND=neo4j | |
| WAGGLE_NEO4J_USERNAME | No | Neo4j username when WAGGLE_BACKEND=neo4j | |
| WAGGLE_RATE_LIMIT_RPM | No | Global rate limit in requests per minute | 120 |
| WAGGLE_DEFAULT_TENANT_ID | No | Default tenant ID | local-default |
| WAGGLE_MAX_PAYLOAD_BYTES | No | Max request size in bytes | 1048576 |
| WAGGLE_WRITE_RATE_LIMIT_RPM | No | Write-tool rate limit in requests per minute | 60 |
| WAGGLE_MAX_CONCURRENT_REQUESTS | No | Concurrency cap | 8 |
| WAGGLE_REQUEST_TIMEOUT_SECONDS | No | Per-request timeout in seconds | 30 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {
"waggle_server_info": {
"name": "waggle",
"version": "0.0.1",
"runtime_scope": "mcp-server-stdio",
"minimum_supported_protocol_version": "2025-06-18"
}
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| store_nodeB | Store a piece of knowledge as a node in the persistent memory graph. Call this whenever you learn something important from the user: facts, preferences, decisions, entities, concepts, or questions. Prefer atomic facts. |
| store_edgeA | Create a relationship between two stored nodes. Use this immediately after storing related nodes so the memory graph preserves structure, updates, and conflicts. |
| canonicalize_nodeA | Manually merge multiple nodes into a single canonical node. All aliases from the merged nodes flow into the canonical node's aliases. All edges pointing to/from merged nodes are re-pointed to the canonical node. Merged nodes are deleted. Idempotent: merging an already-merged node is a no-op. Use this after reviewing dedup_candidates to resolve ambiguous duplicates. |
| dedup_candidatesA | Return pairs of nodes whose embeddings are above a threshold but below the auto-merge threshold. Intended for human review before calling canonicalize_node. Returns pairs sorted by descending similarity so the most likely duplicates appear first. |
| aggregate_graphA | Retrieve a broad set of nodes bypassing standard semantic limits, optimized for global aggregation and map-reduce tasks. Supports filtering by node_type and tags. |
| query_graphA | Automatically search the memory graph before answering questions that may depend on prior context, user preferences, project decisions, constraints, or earlier conversation state. Returns a serialized subgraph with matching nodes and their connected neighborhood. Uses hybrid retrieval (transcript + graph) by default for robust fallback. Understands temporal references such as 'recently', 'latest', 'originally', and 'last week'. Benchmark modes: use retrieval_mode='graph' for graph-only (no verbatim fallback), 'verbatim' for transcript-only. |
| debug_retrievalA | Diagnose memory retrieval ranking for a query. Returns query embedding preview, context-window routing scores, selected windows, flat top nodes, and tiered top nodes for comparison. |
| get_relatedA | Fetch the neighborhood around a specific memory node. Use when you already have a node ID and need its connected context. Returns matching nodes and edges as a serialized subgraph. |
| get_node_historyA | Inspect one memory node's evidence, validity window, and connected context. Use when auditing why a memory exists or how it changed. Returns the node, evidence records, related nodes, and edges. |
| list_context_scopesA | List known agent, project, and session scope values stored in the current tenant graph. Use before filtering memory by scope. Returns arrays of scope identifiers. |
| list_context_windowsA | List context windows for a project. Use to inspect chat/session-level memory containers, their status, node counts, and update times. |
| get_context_windowA | Inspect one context window, including its nodes and links to other context windows. Use when auditing what a conversation/session contributed to memory. |
| close_context_windowA | Close a context window, recompute its final graph embedding, refresh node counts, and derive cross-window edges. Use when a chat/session is complete. |
| timelineA | Build a chronological view of memory changes for a node, a query result, or the whole tenant. Use when order and evidence matter. Returns timestamped timeline items. |
| list_conflictsA | List contradiction and update edges, with unresolved conflicts shown by default. Use to review memory disagreements before resolving them. Returns conflict entries with source and target nodes. |
| resolve_conflictA | Mark a contradiction or update edge as resolved without deleting the underlying history. Use after deciding how competing memories should be interpreted. Returns the resolved conflict entry. When winner is provided and the edge is CONTRADICTS or UPDATES, the losing node's valid_to is set to now, excluding it from future default queries. |
| update_nodeA | Update an existing memory node's content, label, or tags. Use when a stored memory needs correction without deleting its identity. Returns the updated node. |
| delete_nodeA | Delete a node and all connected edges from persistent memory. |
| clear_sessionA | Delete all memory data for one session/context window stream, including nodes, transcripts, context windows, and connected edges. Requires confirm=true. |
| clear_projectA | Delete all memory data for one project/repository, including nodes, transcripts, repos, context windows, and connected edges. Requires confirm=true. |
| clear_allA | Delete all graph memory data for the current tenant. Requires confirm=true. This does not remove API keys or tenant metadata. |
| decompose_and_storeA | Break long or complex content into atomic memory nodes, store them automatically, and create inferred edges. Use for notes, summaries, or multi-fact passages. Returns the stored subgraph. |
| observe_conversationA | Automatically observe a completed user-assistant turn. ALWAYS persists the verbatim turn first. Then runs extraction (graph inference) as optional enrichment. If extraction fails, the verbatim turn is still stored. Use after turns containing preferences, decisions, constraints, requirements, corrections, project facts, or meaningful task outcomes. Do not ask the user to trigger this. Returns: turn_id, verbatim_stored (bool), nodes_extracted (count), edges_inferred (count), extraction_errors (non-fatal). Required fields: 'user_message' (the user's text) and 'assistant_response' (the assistant's reply). Do NOT use 'user_text' or 'assistant_text' — those field names are not accepted. |
| graph_diffA | Show what changed in the memory graph recently, including added nodes, updated nodes, created edges, and contradiction edges. Use for review or handoff. Returns a serialized graph diff. |
| prime_contextA | Automatically build a compact context brief at the start of a scoped conversation or before work that needs continuity. Use to hydrate an assistant with the most relevant scoped memories. Returns summary text plus nodes and edges. |
| get_topicsA | Detect topic clusters in the graph using community detection. Use to understand the main themes in memory. Returns labeled clusters with representative nodes and tags. Note: scope filtering (project, agent_id, session_id) is optional and silently ignored — topic detection always runs across the full tenant graph. |
| get_statsA | Return high-level statistics about the current memory graph. Use for health checks or quick summaries. Returns node and edge counts, node type breakdowns, and recent or highly connected nodes. |
| export_graph_htmlA | Export the current memory graph as an interactive HTML visualization. Use when a human needs to inspect the graph visually. Returns the output path and graph counts. |
| window_graph_vizA | Export the context-window graph as an interactive HTML visualization. Each node is a chat/session window and edges show overlap, supersession, temporal order, or shared scope. |
| commitA | Snapshot the current memory graph to a portable file (waggle commit). Exports a JSON backup for migration, restore drills, or offline archive. Use commit_format='abhi' (default) for a full .abhi export, or 'backup' for a raw JSON backup. Returns the output path, schema version, and object counts. |
| pullB | Load a memory file into the current graph (waggle pull). Accepts a .abhi file (default) or a raw JSON backup. Runs integrity verification, schema validation, and constraint checks before merging. Returns counts for created and updated nodes and edges. |
| diffB | Compare two .abhi memory files (waggle diff). Reports structural graph changes — added/removed/updated nodes and edges — plus lightweight semantic changes. The output is the screenshot that goes on the homepage. |
| mergeA | Three-way merge branching .abhi memory files (waggle merge). Merges left and right branches against a common base into one output file. Conflicts surface as CONTRADICTS edges — nobody else can do this. Use --merge-strategy to control winner selection when both sides changed the same object. |
| grepB | Execute a saved or ad hoc query against an .abhi file (waggle grep). Triggers the file's on_query event actions and returns matching nodes. |
| load_abhi_chunksB | Load only selected or query-relevant chunks from an .abhi file for partial graph inspection. |
| fsckA | Validate an .abhi memory file without importing it (waggle fsck). Verifies integrity hash, schema compliance, and constraint satisfaction. Like git fsck — run this before trusting a file you received. |
| showA | Inspect an .abhi memory file without loading it into the graph (waggle show). Returns summary stats, node/edge type breakdowns, and metadata counts. Like git show — quick read-only inspection of a commit object. |
| export_markdown_vaultA | Export the current graph as an Obsidian-compatible Markdown vault. Use when a human wants browsable note files with graph links. Returns written files and graph counts. |
| import_markdown_vaultA | Import an Obsidian-compatible Markdown vault into the current graph non-destructively. Use to sync edited vault notes back into memory. Returns created, updated, deleted-edge, and conflict counts. |
| edge_quality_reportA | Audit the quality of relationship edges in the memory graph. Returns counts per edge type, average edge_confidence per type, and the top-10 highest- and lowest-confidence edges for each type. Useful for diagnosing graph health and identifying noisy RELATES_TO edges. |
| build_contextA | Recursively retrieves and compresses relevant Waggle memory for the current task, using graph, hybrid, transcript, update, and conflict-aware retrieval. Decomposes the query into targeted subqueries, expands the graph around key nodes, resolves contradictions and superseded memories, and returns a compact context pack under a configurable token budget. Aliases: recursive_context, assemble_context, rlm_context. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| waggle_memory_policy | Instructions for automatic memory retrieval and ingestion. Use this prompt to make the assistant handle memory without user-triggered tool calls. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Graph Stats | Current graph statistics. |
| Recent Graph Nodes | The 10 most recently updated nodes. |
| Context Windows | Recent context windows grouped by project/session. |
| Automatic Memory Policy | Policy for when assistants should retrieve and write Waggle memory automatically. |
Latest Blog Posts
- 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/Abhigyan-Shekhar/Waggle-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server