dakera-mcp
OfficialThe dakera-mcp server provides AI agents with a persistent, queryable memory layer featuring smart token management. Here's what you can do:
Store and Manage Memories
Persist facts, decisions, or context with importance weighting (0.0–1.0), tags, memory type (episodic/semantic/procedural/working), optional expiry, and session association (dakera_store).
Recall and Search Memories
Semantic recall (
dakera_recall) — Retrieve top-k memories by vector similarity, with optional time filters and knowledge-graph expansionAdvanced search (
dakera_search) — Semantic search pre-filtered by tags and/or memory typeFull-text search (
dakera_fulltext_search) — BM25 keyword search for exact-term recall (error codes, IDs, names)Hybrid search (
dakera_hybrid_search) — Combined BM25 + vector search in a single pass, tunable viavector_weightBatch recall (
dakera_batch_recall) — Filter-based listing by tags, importance range, time window, type, or session
Delete Memories
dakera_forget— Delete specific memories by ID or bulk-delete by tagdakera_batch_forget— Bulk-delete by filter criteria (tags, importance range, time window, memory type)
Session Management
dakera_session_start— Open a session to group related memories with optional metadatadakera_session_end— Close a session with an optional summary
Knowledge Graph & Extraction
dakera_knowledge_graph— Build a knowledge graph from a seed memory by exploring connections via embedding similaritydakera_extract— Extract structured entities, topics, key phrases, and summaries from free-form text using configurable providers (GLiNER, OpenAI, Anthropic, Ollama, etc.)
Dynamic Tool Discovery & Loading
dakera_discover_tools— Search the tool catalog by keyword or tier without loading full schemasdakera_load_tools— Fetch full input schemas for specific tools on demand to minimize token usage
Key Highlights
Default 14-tool core profile uses ~2,964 tokens; expand to 86 tools via profiles (
admin,power,all) or on-demand loadingScored 88.2% on the LoCoMo benchmark (1,540 questions)
Compatible with Claude, Claude Code, and any MCP-compatible framework
Self-hostable via Docker or Kubernetes
⚡ dakera-mcp
MCP server for Dakera AI. Gives any MCP-compatible AI agent persistent, queryable memory — with smart token management built in.
Works with Claude, Claude Code, and any MCP-compatible framework.
Part of Dakera AI — the memory engine for AI agents.
The Dakera memory engine scores 88.2% Recall@20 on LoCoMo (1,540 questions · LLM-judge scored) — benchmark details
Architecture: 14 core tools + on-demand discovery
Starting every agent session with 60+ tool schemas wastes ~15K tokens before you write a single message. dakera-mcp solves this with hybrid tool exposure:
14 tools loaded by default — the 12 highest-frequency memory operations + 2 meta-discovery tools
On-demand expansion — use
dakera_discover_toolsanddakera_load_toolsto fetch additional tool schemas only when you need them
Default tool set (core profile)
Tool | Purpose |
| Store a memory with importance, tags, and type |
| Semantic recall by query text |
| Advanced memory search with tag/type filters |
| Start a session to group related memories |
| End a session with optional summary |
| Bulk filter-based recall (by tags, importance, time) |
| Delete specific memories by ID |
| Combined vector + BM25 search |
| BM25 full-text search |
| Build a knowledge graph from a seed memory |
| Extract entities and structure from free-form text |
| Bulk delete by tags, type, or time range |
| Search the full tool catalog by keyword or tier |
| Load full schemas for specific tools on demand |
Profiles & token cost
Profile | Tools | ~Tokens | How to enable |
core | 14 | ~2,964 | Default — always loaded |
admin | 32 | ~5,975 |
|
power | 69 | ~13,205 |
|
all | 87 | ~16,212 |
|
Accessing additional tools
# In your agent: discover what's available
dakera_discover_tools(tier="power")
→ returns names + descriptions, no schemas loaded
# Load schemas for the tools you want
dakera_load_tools(tools=["dakera_consolidate", "dakera_agent_stats"])
→ returns full inputSchema for each toolProfile selection
The profile controls which tools appear in tools/list. Three ways to set it:
1. Per-request (in tools/list params):
{"profile": "power"}2. Environment variable (applies to all requests):
DAKERA_MCP_PROFILE=power3. Default: core (14 tools, ~2,964 tokens)
Related MCP server: Zep MCP Server
Run Dakera
The MCP server connects to a Dakera memory server. You need one running first:
docker run -d \
--name dakera \
-p 3300:3000 \
-e DAKERA_ROOT_API_KEY=dk-mykey \
ghcr.io/dakera-ai/dakera:latestFor persistent storage (recommended):
curl -sSfL https://raw.githubusercontent.com/Dakera-AI/dakera-deploy/main/docker-compose.yml \
-o docker-compose.yml
DAKERA_API_KEY=dk-mykey docker compose up -d
curl http://localhost:3000/health # → {"status":"ok"}Full deployment guide (Docker Compose, Kubernetes, Helm): dakera-deploy
Install
npm / npx (Node.js 18+)
# Global install
npm install -g @dakera-ai/dakera-mcp
# Or run directly without installing
npx @dakera-ai/dakera-mcpHomebrew (macOS / Linux)
brew install dakera-ai/tap/dakera-mcpCargo
cargo install dakera-mcpDocker
docker pull ghcr.io/dakera-ai/dakera-mcp:latestBinary download
Pre-built binaries for macOS, Linux, and Windows are available on the releases page.
Platform | File |
macOS (Apple Silicon) |
|
macOS (Intel) |
|
Linux x64 |
|
Linux arm64 |
|
Windows x64 |
|
Connect
Add to .mcp.json (Claude Code) or claude_desktop_config.json (Claude Desktop):
{
"mcpServers": {
"dakera": {
"command": "dakera-mcp",
"env": {
"DAKERA_API_URL": "http://localhost:3300",
"DAKERA_API_KEY": "your-key"
}
}
}
}To start with the power profile (exposes 68 tools):
{
"mcpServers": {
"dakera": {
"command": "dakera-mcp",
"env": {
"DAKERA_API_URL": "http://localhost:3300",
"DAKERA_API_KEY": "your-key",
"DAKERA_MCP_PROFILE": "power"
}
}
}
}Why This Exists
AI agents forget everything when the session ends. Dakera fixes that. This MCP server gives your agent a persistent memory layer with zero infrastructure overhead — point it at a Dakera instance and it works.
The 14-tool default keeps your context window lean. The meta-tools let you expand on demand when you need advanced operations like bulk vector upsert, knowledge graph traversal, or memory federation.
→ dakera.ai for hosted instance
→ Self-host with dakera-deploy
Documentation
Related
Repo | What it is |
Python SDK | |
TypeScript SDK | |
CLI | |
Self-host Dakera |
dakera.ai · Documentation · Request Early Access
Part of the Dakera AI open-core ecosystem. Built with Rust. Self-hosted. Zero dependencies.
Available Tools
14 toolsdakera_batch_forgetA
Bulk-delete memories matching filter criteria: tags, importance range, time window, or memory type. At least one filter is required to prevent accidental full-agent wipe. Deletion is permanent — use dakera_memory_importance to lower importance scores instead of deleting.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags to match (all required) | |
| agent_id | Yes | ||
| session_id | No | ||
| memory_type | No | ||
| created_after | No | After Unix timestamp | |
| created_before | No | Before Unix timestamp | |
| max_importance | No | Max importance threshold | |
| min_importance | No | Min importance threshold |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states that deletion is permanent, a critical behavioral consequence for a destructive operation. It also warns about the risk of a full-agent wipe if no filter is provided, which is transparent about the tool's potential impact. No annotations are present, so the description carries the full burden, and it meets that need.
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, using only two sentences to convey the purpose, safety requirement, and alternative action. It avoids redundancy and is well-structured, with the main action first followed by critical cautions.
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 description provides enough context to understand the basic operation and safety constraints, but it does not explain the return value, error handling, or how multiple filters are combined (AND vs OR). Since there is no output schema, these gaps leave some ambiguity for the agent.
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 summarizes the filter types (tags, importance range, time window, or memory type) that map to most parameters, adding context beyond the schema. However, agent_id and session_id are not mentioned in the description, and the schema descriptions are uneven (memory_type lacks a description). Thus, parameter coverage is partial.
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's purpose: bulk-deleting memories that match specified filters. It distinguishes itself from singular deletion tools by using the explicit term 'Bulk-delete' and enumerating the filter dimensions (tags, importance range, time window, or memory type).
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 important usage guidance, including the requirement that at least one filter must be provided to prevent accidental full wipe, and advises using an alternative for lowering importance instead of deletion. It does not explicitly compare with dakera_forget, but the safety and alternative guidance is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_batch_recallA
Filter-based memory listing by tags, importance range, time window, type, or session. Prefer over dakera_recall when semantic search is not needed. At least one filter required.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags to match (all required) | |
| agent_id | Yes | ||
| session_id | No | ||
| memory_type | No | ||
| created_after | No | After Unix timestamp | |
| created_before | No | Before Unix timestamp | |
| max_importance | No | Max importance (inclusive) | |
| min_importance | No | Min importance (inclusive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the burden. It implies a read-only listing operation without side effects. It does not mention any destructive actions, but also does not explicitly state read-only or discuss rate limits or auth, so slightly below perfect.
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 concise, using three short sentences. It front-loads the core function and includes key usage constraints without any fluff. Each sentence adds value.
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?
Provides essential context such as the purpose, the alternative tool, and the filter requirement. However, it lacks details about the return format (no output schema) and does not describe all parameters explicitly, so it is not fully complete.
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 63% (5 of 8 parameters have descriptions). Tags, importance range, and time window are described, but agent_id, session_id, and memory_type lack descriptions. The description mentions filtering by type or session, but does not explicitly map these to the parameters, so agents must infer their meaning.
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?
Clearly states it performs 'filter-based memory listing' with a specific verb and resource. Also differentiates from dakera_recall by explicitly noting the preference when semantic search is not needed.
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?
Provides an explicit condition for choosing this tool over dakera_recall ('when semantic search is not needed') and states the requirement that at least one filter must be provided. This gives clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_discover_toolsA
Search the Dakera tool catalog by keyword or tier (core/power/admin/meta) and return names and one-line summaries without loading full schemas. Call this first to find relevant tools, then use dakera_load_tools to fetch only the schemas you need — avoids loading the full catalog upfront.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | ||
| query | No | Keyword to search tool names/descriptions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool returns only names and summaries without loading full schemas, giving insight into its behavior and efficiency. However, it does not explicitly state that it has no side effects (e.g., read-only operation), which is left to inference. Since no annotations are provided, a bit more explicit safety disclosure would be ideal, but the current description is still reasonably transparent.
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 two sentences long, concise, and front-loads the primary purpose. It contains no filler words and each sentence adds value: the first states the function, the second provides usage guidance and efficiency rationale.
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 description provides sufficient context for an agent to decide when to use this tool: it is a discovery step that avoids loading full schemas. It also names the companion tool for schemas, making the workflow clear. The mention of output (names and summaries) covers the basic expectations even without an output schema.
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?
Both parameters (tier and query) are mentioned in the description: 'by keyword or tier.' The description explains that tier is a filter with enum values (core, power, admin, meta, all) and query is a keyword for searching names/descriptions. This provides full semantic coverage without redundancy with the 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 states that the tool searches the Dakera tool catalog by keyword or tier, which is a specific verb and resource. It also distinguishes this tool from others like dakera_load_tools by emphasizing it returns only names and summaries, making its purpose unambiguous.
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?
Explicit guidance is provided: 'Call this first to find relevant tools, then use dakera_load_tools to fetch only the schemas you need.' This tells the agent exactly when to use this tool versus alternatives and highlights the efficiency benefit of avoiding full schema loads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_extractA
Extract structured information (entities, topics, key phrases, summary) from arbitrary text using the configured provider hierarchy: per-request override → namespace default → server default → GLiNER local. Supported providers: gliner (zero-config local ONNX), openai, anthropic, openrouter, ollama, none.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to extract information from | |
| namespace | No | Namespace whose default extractor config is used. If omitted, the server-level default is used. | |
| entity_types | No | GLiNER entity type labels (e.g. ["person", "org", "location"]). Only used when provider is `gliner`. | |
| extractor_override | No | Per-request provider override — highest priority in the resolution hierarchy. Fields: provider, model, base_url, api_key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It explicitly states that api_key is 'Never persisted — used for this request only', and explains the resolution hierarchy (per-request override → namespace default → server default → GLiNER local). It also notes that entity_types are used only when provider is gliner. These details surface important behavioral traits.
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 a single, well-structured sentence. It uses a colon to list the extracted information types and an arrow notation to concisely convey the resolution order. The list of supported providers is compact and informative. No redundant verbiage.
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 complexity of the tool (nested override object, provider hierarchy, multiple providers), the description covers the essential operational details. It explains the provider resolution order, the role of namespace, and the persistence behavior of api_key. While it doesn't describe the output format or error scenarios, these are not explicitly required by any output schema or annotation.
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 100% with each parameter described. The description adds meaningful context beyond the schema: it explains the provider override hierarchy, the namespace default behavior, and the conditional use of entity_types. The extractor_override nested object is also well-documented with its own description.
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's purpose: 'Extract structured information (entities, topics, key phrases, summary) from arbitrary text'. The verb 'extract' and the specific resource (text) make the action unambiguous. It distinguishes itself from sibling tools by focusing on extraction rather than search, store, or recall 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?
The description provides detailed guidance on when and how to use the tool, explaining the provider resolution hierarchy and listing supported providers. It clarifies that entity_types are only used with GLiNER and that api_key is request-scoped. While it doesn't explicitly contrast with alternatives, the provider hierarchy and parameter conditions give clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_forgetA
Permanently delete memories by ID or tag. Provide memory_ids for exact removal or tags to bulk-delete all memories sharing those tags. Deletion is immediate and irreversible — prefer dakera_memory_importance to suppress without deleting.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Delete memories with these tags | |
| agent_id | Yes | ||
| memory_ids | No | Specific memory IDs to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that deletion is immediate and irreversible, and that using tags results in bulk deletion. With no annotations, this covers key behavioral aspects, though it does not mention potential side effects like cascading deletions or missing confirmation.
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, front-loaded with the purpose, and well-structured. It covers purpose, usage, and an alternative in two sentences without unnecessary 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?
Given the lack of an output schema, the description does not need to explain return values. It covers the essential 'when' and 'how' but leaves gaps regarding agent_id semantics and the interaction between parameters, which could affect an agent's correct 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?
The schema provides descriptions for memory_ids and tags, but agent_id has no description in either the schema or the tool description. The description explains the usage of memory_ids and tags, but does not clarify the role of agent_id or whether the two parameters can be combined or are mutually exclusive.
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's purpose: to permanently delete memories by ID or tag. It specifies the resource (memories) and the method (by ID or tag), and distinguishes it from sibling tools like dakera_batch_forget and dakera_memory_importance.
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 explicit guidance on when to use this tool: 'Provide memory_ids for exact removal or tags to bulk-delete all memories sharing those tags.' It also names an alternative (dakera_memory_importance) for a different use case (suppression instead of deletion), making the decision clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_fulltext_searchA
BM25 keyword search over indexed documents. Use over vector search when exact-term recall matters (error codes, IDs, names). For semantic+keyword combined use dakera_hybrid_search.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query text | |
| top_k | No | Number of results to return | |
| filter | No | Optional metadata filter | |
| namespace | Yes | Namespace to search in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. 'Search' implies a read-only operation with no side effects, and the description does not hint at any modifications. However, it does not explicitly state that no data is altered, so a minor gap exists.
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, using two sentences to convey purpose and usage guidance without unnecessary verbiage. It is well-structured and front-loads the core function.
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?
No output schema exists, so the description need not explain return values. It fully covers the tool's purpose, selection criteria, and relationship to sibling tools, leaving no critical information missing for an agent 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?
All four parameters (query, top_k, filter, namespace) have descriptions in the schema, giving high coverage. The tool description adds no extra parameter-specific insights, so the baseline of 3 is appropriate.
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 performs 'BM25 keyword search over indexed documents' and explicitly distinguishes it from vector and hybrid search alternatives. It identifies the specific resource (indexed documents) and the verb (search) without ambiguity.
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 direct usage guidance: 'Use over vector search when exact-term recall matters' and 'For semantic+keyword combined use dakera_hybrid_search.' This tells the agent exactly when to select this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_hybrid_searchA
BM25 + vector ANN hybrid search in a single pass. Omit vector for BM25-only mode. Use for RAG when pure semantic or keyword search alone is insufficient. vector_weight: 0.0=BM25, 1.0=vector (default 0.5).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text query for full-text search | |
| top_k | No | Number of results to return | |
| filter | No | Optional metadata filter | |
| vector | No | Query embedding; omit for BM25-only. | |
| namespace | Yes | Namespace to search in | |
| vector_weight | No | Vector score weight 0.0–1.0; text weight = 1−value. | |
| include_vectors | No | ||
| include_metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description explains the hybrid algorithm and weight behavior, but does not disclose safety, permissions, cost, or error behavior. The 'single pass' note gives a performance hint, but overall transparency is limited.
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?
Two concise, front-loaded sentences with no redundancy. Every sentence provides essential information, and the structure is clear.
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 8 parameters, nested filter object, and no output schema, the description is somewhat minimal. It does not explain return values, pagination, or results handling, leaving gaps for a complex search tool.
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 75% (two parameters lack descriptions in schema). The description adds meaning by explaining the vector parameter for BM25-only mode and the vector_weight range, enhancing understanding beyond the 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 specifies a hybrid search combining BM25 and vector ANN in a single pass, and distinguishes from siblings by noting BM25-only mode and use case for RAG when pure methods are insufficient.
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?
Explicitly states when to use ('RAG when pure semantic or keyword search alone is insufficient') and how to configure modes (omit vector for BM25-only, adjust vector_weight). Lacks explicit exclusion criteria but provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_knowledge_graphA
Build a knowledge graph from a seed memory using embedding similarity. Use to explore how a concept connects to stored knowledge. For BFS traversal of an existing linked graph use dakera_graph_traverse.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Graph traversal depth (controls candidate count) | |
| agent_id | Yes | ||
| memory_id | Yes | Seed memory ID to build graph from | |
| min_similarity | No | Minimum similarity threshold 0.0-1.0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to rely on, the description carries the full burden of disclosing behavioral traits. However, it only states the action ('build a knowledge graph') without clarifying whether this is a read-only operation, what side effects exist, or what the return structure looks like. The term 'build' could imply a mutation, but this is left ambiguous.
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 two sentences long, with no redundant content. It front-loads the primary function, then adds the use case and the differentiation from the sibling tool. Every word contributes to clarity.
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?
No output schema is provided, so the description should hint at what the tool returns. It does not mention the result format (e.g., nodes, edges, graph object) nor any error or edge-case behavior. Given the complexity of building a knowledge graph, the description is insufficient for an agent to fully anticipate the tool's output.
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 covers 75% of parameters with descriptions, but the tool description adds no additional insight about any of them. The missing description for agent_id is not compensated for by the prose. The description does not clarify acceptable values, defaults, or interactions between parameters, leaving the semantics solely to the 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 states the tool's function (build a knowledge graph using embedding similarity), its intended use case (explore concept connections), and explicitly differentiates it from a sibling tool (dakera_graph_traverse) for BFS traversal of existing graphs.
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?
It provides explicit guidance on when to use this tool ('Use to explore how a concept connects to stored knowledge') and when to use an alternative ('For BFS traversal of an existing linked graph use dakera_graph_traverse'). No ambiguity remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_load_toolsA
Fetch the full inputSchema for one or more named tools. Use after dakera_discover_tools. Returns schemas for found tools and a not_found list for unrecognized names.
| Name | Required | Description | Default |
|---|---|---|---|
| tools | Yes | Tool names to load schemas for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the output behavior in detail: it returns schemas for found tools and a not_found list for unrecognized names. This transparency about both success and failure cases exceeds typical descriptions and is fully transparent for a read-only operation.
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, consisting of two sentences that directly state the function, usage timing, and output behavior. Every word serves a purpose, with no extraneous information or redundancy.
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?
For a simple tool that fetches schemas, the description provides all necessary context: what it does, when to use it (after discover_tools), and what it returns (schemas plus not_found list). No additional information is needed for an agent to invoke 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 only parameter 'tools' is described as 'Tool names to load schemas for', which clearly explains its purpose and format. The schema description is comprehensive, and the tool description adds no ambiguity. Coverage is 100%.
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 fetches the full inputSchema for one or more named tools, using specific verb 'Fetch' and resource 'tools'. It also distinguishes itself from siblings by specifying 'Use after dakera_discover_tools' and describing the return behavior.
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 explicitly instructs when to use the tool ('Use after dakera_discover_tools'), providing clear timing guidance. It also implies it is the appropriate tool for loading schemas, while other tools like search or extract serve different purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_recallA
Retrieve top-k memories semantically closest to a query. Prefer over dakera_batch_recall for query-based retrieval. Set include_associated=true to expand results via KG edges (1-3 hops).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Semantic query text | |
| since | No | Only memories created at or after this ISO-8601 timestamp | |
| top_k | No | Max results to return | |
| until | No | Only memories created at or before this ISO-8601 timestamp | |
| agent_id | Yes | ||
| min_importance | No | Min importance threshold | |
| include_associated | No | Include KG-linked memories in results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. 'Retrieve' implies a read-only operation, and the description adds detail about KG expansion behavior, but does not explicitly state side-effect-free or auth requirements. However, the read-only intent is clear from the verb.
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?
Two sentences, front-loaded with purpose, and every phrase provides useful information (top-k, semantic closeness, preference, include_associated). No redundancy.
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 7 parameters and no output schema, the description provides the key usage context (preference over batch recall, KG expansion). However, the required agent_id parameter has no schema description and is not mentioned in prose, leaving a small gap in completeness.
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 adds meaning to 'top_k' with 'top-k' and to 'include_associated' with the KG edge explanation. Since the schema already provides descriptions for most parameters, this adds context beyond the schema, though some parameters (e.g., agent_id) are not elaborated.
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?
Clearly states the action (retrieve), the resource (memories), and the criterion (semantically closest to a query). It also distinguishes from the sibling dakera_batch_recall, making the purpose unambiguous.
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?
Explicitly says to prefer this over dakera_batch_recall for query-based retrieval, and advises setting include_associated to expand via KG edges. This gives clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_searchA
Semantic search with optional tag and memory-type pre-filters. Prefer over dakera_recall when results must be constrained by tag or type alongside the semantic match.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags | |
| query | Yes | Search query text | |
| top_k | No | Number of results | |
| agent_id | Yes | ||
| memory_type | No | Filter by memory type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral traits. It does not explicitly state whether the operation is read-only or has side effects, nor does it mention permissions or rate limits. The description is honest but lacks explicit transparency about its non-destructive nature.
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 a single, concise sentence that packs the core function and the key usage guidance. Every word is necessary, and it is well-structured for quick reading.
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?
For a search tool with two optional filters, the description is sufficient for an agent to decide when to invoke it. It does not specify the return format, but since no output schema is defined and the tool is inherently a search, the missing information is not critical. The description could be slightly richer by mentioning the nature of results, but it is overall complete enough.
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 input schema already has descriptions for 4 of 5 parameters (80% coverage), which is high, so a baseline of 3 is appropriate. The description text merely echoes the 'tag' and 'memory type' filters without adding further meaning, and it does not clarify the purpose of agent_id beyond being required.
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 performs semantic search with optional filters for tags and memory type. It also contrasts with the sibling tool dakera_recall, providing a specific use case, making the purpose unambiguous.
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 explicitly says 'Prefer over dakera_recall when results must be constrained by tag or type alongside the semantic match,' giving direct guidance on when to use this tool versus the alternative. This tells the agent exactly the conditions favoring this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_session_endA
Close an active session with an optional summary. Always call at run end (even on error) to avoid orphaned sessions; summary is retrievable via dakera_session_get.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | No | Optional session summary | |
| session_id | Yes | Session ID to end |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the consequence of not calling (orphaned sessions) and mentions that the summary is retrievable via another tool, adding behavioral context. However, it does not describe side effects like idempotency, error handling, or what happens if the session is already closed.
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 two sentences, front-loaded with the purpose, followed by usage guidance and a cross-reference. No unnecessary words; 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?
For a simple two-parameter tool with no output schema, the description covers purpose, timing, and a related tool reference. It lacks a mention of return value or error scenarios, but these are not critical for such a straightforward operation.
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 100%, so both parameters are already documented. The description adds only marginal value: it notes that the summary is optional and that it can be retrieved later via dakera_session_get. This does not significantly enhance the schema's 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 clearly states the action ('Close') and the resource ('active session'), and mentions the optional summary. It is distinct from sibling tools like dakera_session_start, making its purpose unambiguous.
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?
Explicitly states when to call the tool ('Always call at run end (even on error)') and the reason (to avoid orphaned sessions). It does not name alternatives or exclusions, but the directive is strong enough for an agent to know when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_session_startA
Open a new session, returning a session_id that groups stored memories under a shared context. Attach metadata such as task type or trigger source for later retrieval.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ||
| metadata | No | Optional session metadata |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies state creation (opening a session) and organizes memories, which is a side effect, but it does not detail permissions, authentication, or potential side effects on existing data. Since no annotations are provided, the description carries the full burden but only partially discloses behavior.
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, consisting of two sentences that directly convey the core purpose and the metadata usage. There is no redundant or irrelevant information.
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 description covers the main behavior, return value, and the role of metadata, but it omits an explanation of agent_id and lacks details on error handling or session lifecycle. Given the tool's simplicity and lack of an output schema, the description is reasonably complete but has notable gaps.
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 covers two parameters, with metadata having a description in the schema and the prose. However, agent_id is required but has no description in the schema or the description text, leaving its purpose unexplained. With schema coverage at 50%, the description does not compensate for the missing agent_id semantics.
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's function: it opens a new session, returns a session_id, and groups stored memories under a shared context. It uses a specific verb ('open') and resource ('session'), distinguishing it from the other sibling tools like search or store.
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 gives context about attaching metadata for later retrieval, but does not explicitly state when to use this tool versus alternatives. It does not mention any specific conditions or exceptions, so usage guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dakera_storeA
Persist a new memory for an agent with importance weighting and optional tags. Use to save facts, decisions, or context for future retrieval. importance defaults to 0.5; set 0.8–1.0 for critical memories that must survive decay.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags for filtering | |
| content | Yes | Memory content text | |
| agent_id | Yes | ||
| expires_at | No | Expiry Unix timestamp (seconds) | |
| importance | No | Importance 0.0-1.0 | |
| session_id | No | Session to associate with | |
| memory_type | No | Memory type (episodic|semantic|procedural|working) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It mentions the importance default and decay behavior, and notes that tags are optional. It does not specify return values or error handling, but the core write semantics and importance decay are transparent enough.
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 two sentences, concise and front-loaded with the primary action. It avoids unnecessary detail and keeps the most relevant usage guidance immediately visible.
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 description provides enough context for an agent to decide when to use the tool, especially with the importance/decay explanation. It does not elaborate on every parameter, but the schema already covers those details, so the description fills the key contextual gaps.
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 high (86%), and the description adds meaning beyond the schema by explaining the importance default (0.5) and the threshold for critical memories (0.8–1.0) that survive decay. It also clarifies that tags are optional, augmenting the parameter details.
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's purpose with the verb 'persist' and the resource 'memory for an agent', and it distinguishes itself from sibling tools like dakera_search and dakera_forget by focusing on the write operation.
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?
It explicitly says 'Use to save facts, decisions, or context for future retrieval', providing clear guidance on when to use. It does not explicitly state when not to use, but the sibling tool names make the contrast obvious, so the guidance is adequate.
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.
13 tool updates
v0.10.12- Added
dakera_batch_forget - Added
dakera_batch_recall - Added
dakera_discover_tools - Added
dakera_extract - Added
dakera_forget - Added
dakera_fulltext_search - Added
dakera_knowledge_graph - Added
dakera_load_tools - Added
dakera_recall - Added
dakera_search - Added
dakera_session_end - Added
dakera_session_start - Added
dakera_store
13 tool updates
v0.10.11- Removed
dakera_batch_forget - Removed
dakera_batch_recall - Removed
dakera_discover_tools - Removed
dakera_extract - Removed
dakera_forget - Removed
dakera_fulltext_search - Removed
dakera_knowledge_graph - Removed
dakera_load_tools - Removed
dakera_recall - Removed
dakera_search - Removed
dakera_session_end - Removed
dakera_session_start - Removed
dakera_store
14 tool updates
v0.10.8- Added
dakera_batch_forget - Added
dakera_batch_recall - Added
dakera_discover_tools - Added
dakera_extract - Added
dakera_forget - Added
dakera_fulltext_search - Added
dakera_hybrid_search - Added
dakera_knowledge_graph - Added
dakera_load_tools - Added
dakera_recall - Added
dakera_search - Added
dakera_session_end - Added
dakera_session_start - Added
dakera_store
TDQS
Scored across 14 tools
Multiple tools for semantic retrieval (dakera_search, dakera_recall) and search variants (fulltext, hybrid, batch_recall) have heavily overlapping purposes, making it hard to decide which to call. The distinction between search and recall is subtle and likely to cause misselection.
All tools share the dakera_ prefix, but the verb/noun structure is inconsistent: some use bare verbs (search, store, recall, forget, extract), some compound verbs (batch_recall, session_start), and some noun phrases (knowledge_graph, fulltext_search). 'fulltext_search' also lacks an underscore convention.
14 tools is within the typical 3–15 range and reasonable for a memory server covering storage, retrieval, sessions, extraction, and tool discovery, though slightly on the higher side.
The surface covers core memory operations (store, forget, multiple retrieval modes), sessions, knowledge graph construction, extraction, and tool metadata. It lacks an explicit update or get-by-id operation, but the provided features are largely sufficient for the domain.
Maintenance
Related MCP Connectors
Cloud-hosted MCP server for durable AI memory
- memnodeOAuthdev.memnode
Persistent, inspectable memory for AI agents with lineage, correction, and a hosted MCP endpoint.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Cloudflare Workers MCP server: agent-memory
Related MCP Servers
AlicenseAqualityFmaintenanceAn MCP server that integrates with mem0.ai to help users store, retrieve, and search coding preferences for more consistent programming practices.9659Apache 2.0- FlicenseNot gradedqualityDmaintenanceEnables Claude to store, search, and retrieve persistent memories using Zep Cloud's thread-based memory system for maintaining context across conversations.-
- AlicenseNot gradedqualityAmaintenanceA graph-based MCP server that provides AI coding agents with persistent memory to store patterns, track complex relationships, and retrieve knowledge across sessions. It leverages graph structures to handle temporal queries and relational paths that traditional vector stores often miss.244MIT

Recallofficial
AlicenseNot gradedqualityCmaintenanceOpen-source MCP memory server for AI agents — persistent, searchable, tiered memory across sessions. Works over stdio (Cursor, Claude Desktop) or HTTP+SSE. MIT licensed.7MIT