DuDuClaw
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DUDUCLAW_MCP_API_KEY | No | Optional. A standalone key from `duduclaw mcp init`. When unset, the container issues its own key limited to memory and wiki tools. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| memory_searchA | Keyword search over your own memory: notes you stored plus facts the gateway learned from your chats. Returns JSON {results,total}. Use before answering from recall; for a known id use memory_read. |
| memory_storeA | Save one free-text note to your own memory; memory_search finds it and later prompts get it injected. Returns memory_id. Never overwrites. Per-user preferences go to user_profile_record. |
| memory_readA | Read one of your memory entries by id (from memory_store or memory_search): content, tags, layer, importance, created_at. Unknown or foreign ids are refused. Several ids: memory_fetch_batch. |
| memory_fetch_batchA | Fetch up to 100 of your memory entries by id in one call. Returns {memories, missing_ids}; unknown or foreign ids go to missing_ids instead of failing. Use instead of repeated memory_read. |
| memory_alias_addA | Fold a surface form into a canonical entity (e.g. '老闆' -> 'Wang Ming') so recall treats them as one. Lowercased; chains flattened; re-adding an alias re-points it. See memory_alias_list. |
| memory_alias_listA | List your memory's entity aliases as {canonical, alias} pairs plus a total. Check here before memory_alias_add so you do not re-point an existing alias by accident. |
| memory_get_historyA | Every value a (subject, predicate) fact has had, oldest to newest, expired rows included, showing which write superseded which. For the value at one instant use memory_get_at. |
| memory_get_atA | The single (subject, predicate) fact valid at one instant by world time, or found:false. Safe with out-of-order ingestion. Full change log: memory_get_history; free-text recall: memory_search. |
| code_mapA | Rank a local repo's source files by relevance to a query (tree-sitter symbol graph + PageRank) and summarise their key symbols. Read-only. Use to find where code lives; it does not return file bodies. |
| user_profile_recordA | Record one durable preference of a specific end user (timezone, language, 'prefers tea'). Same predicate again supersedes the old value, history kept. Notes not tied to a user: memory_store. |
| user_profile_getA | One user's currently-valid preference facts plus the rendered '## About This User' block injected into replies to them. Read-only. Add or change facts with user_profile_record. |
| user_code_profileA | Compile your user-as-code profile from current memory facts: typed preference and constraint rules, unresolved conflicts, untyped-row count. Read-only. One user's view: user_profile_get. |
| wiki_lsA | List wiki pages as a directory tree with titles and last-updated dates. scope="shared" lists the cross-agent wiki. Use to browse; to find pages by content use wiki_search. |
| wiki_readA | Read a wiki page (frontmatter + body). Use wiki_ls or wiki_search to find page paths first. Pass scope="shared" to read from the cross-agent shared wiki. |
| wiki_writeA | Create or overwrite a whole wiki page (content incl. YAML frontmatter); atomic, updates _index.md and _log.md. scope="shared" obeys the namespace policy. To edit, wiki_read the page first. |
| wiki_searchA | Full-text search of wiki pages, trust-weighted, with layer/min_trust filters and optional 1-hop expand. scope="shared" searches the shared wiki. Notes outside the wiki: memory_search. |
| wiki_lintA | Audit the wiki for orphan pages, broken links and stale pages; returns a report and changes nothing. scope="shared" audits the shared wiki and its frontmatter schema. Totals only: wiki_stats. |
| wiki_statsA | Wiki totals: pages, index entries, recent activity, health score (shared scope adds per-contributor counts). Read-only. To see the problems behind the score use wiki_lint. |
| wiki_exportA | Export a wiki (yours by default) under /exports as one HTML file (default) or an Obsidian vault folder; returns the path. Overwrites the previous export, never the wiki itself. |
| wiki_dedupA | Find likely duplicate wiki pages by title and tag similarity; returns pairs with each page's trust and the reason. Read-only, merges nothing: merge by hand with wiki_write. |
| wiki_graphA | Render the wiki link graph as a Mermaid diagram (nodes = pages, edges = related links), or only pages within |
| wiki_rebuild_ftsA | Rebuild the wiki full-text index from the pages on disk; returns the page count. Safe to repeat. Use only when wiki_search misses pages you know exist, e.g. after files were edited directly. |
| wiki_shareA | Publish a summary of one of your wiki pages to the shared wiki at sources/--.md with attribution; re-sharing overwrites it. Secret-scanned. Full shared pages: wiki_write scope=shared. |
| memory_improveA | Reflect over your memories about a topic and get a clustered proposal scaffold for consolidated rules. Returns candidates only — review, then persist with memory_store. Writes nothing itself. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Descriptions actively cross-reference each other (e.g. memory_read vs memory_fetch_batch, memory_get_history vs memory_get_at, memory_search vs wiki_search), making boundaries clear. A few pairs are close (user_profile_get vs user_code_profile, memory_read vs memory_fetch_batch) but the descriptions resolve them. No two tools appear to do the same thing.
Consistent snake_case with clear prefix namespacing (memory_*, wiki_*, user_profile_*, code_map). Minor deviation: most are prefix_verb but memory_alias_add/memory_alias_list are prefix_noun_verb, and some wiki tools are prefix_verb_fts style. Still highly readable and predictable.
24 tools is on the heavy side but spans four distinct subsystems (memory, wiki, user profile, code), so the count is defensible. Wiki alone accounts for 11 tools, which could arguably be trimmed, but each has a distinct read-only or mutating role.
Broad coverage: memory store/read/search/batch/history/aliases/reflection, full wiki lifecycle (write/read/ls/search/export/graph/lint/stats/dedup/reindex/share), profile record/get/compile, plus code mapping. Main gap is the absence of any delete operation for memory or wiki entries (relies on overwrite), and code tooling stops at mapping with no file-body access.