Skip to main content
Glama

⚡ dakera-mcp

CI Crate npm Downloads License: MIT LoCoMo 88.2% Glama Docs dakera.ai Playground

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,536 evaluated questions · LLM-judged retrieval recall) — 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_tools and dakera_load_tools to fetch additional tool schemas only when you need them

Default tool set (core profile)

Tool

Purpose

dakera_store

Store a memory with importance, tags, and type

dakera_recall

Semantic recall by query text

dakera_search

Advanced memory search with tag/type filters

dakera_session_start

Start a session to group related memories

dakera_session_end

End a session with optional summary

dakera_batch_recall

Bulk filter-based recall (by tags, importance, time)

dakera_forget

Delete specific memories by ID

dakera_hybrid_search

Combined vector + BM25 search

dakera_fulltext_search

BM25 full-text search

dakera_knowledge_graph

Build a knowledge graph from a seed memory

dakera_extract

Extract entities and structure from free-form text

dakera_batch_forget

Bulk delete by tags, type, or time range

dakera_discover_tools

Search the full tool catalog by keyword or tier

dakera_load_tools

Load full schemas for specific tools on demand

Profiles & token cost

Profile

Tools

~Tokens

How to enable

core

14

~3,350

Default — always loaded

admin

34

~6,700

DAKERA_MCP_PROFILE=admin

power

79

~16,600

DAKERA_MCP_PROFILE=power

all

99

~19,950

DAKERA_MCP_PROFILE=all

Token figures are estimates (JSON bytes / 3). The attachment tools below count in power and all, but only appear while the connected server has the feature on (see Dakera v0.12).

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 tool

Profile 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=power

3. Default: core (14 tools, ~3,350 tokens)


Related MCP server: Zep MCP Server

Dakera v0.12

dakera-mcp 0.11 works against Dakera v0.11.108 and v0.12.0 servers. Every v0.11 tool keeps its name and arguments; the v0.12 additions are optional arguments that are sent only when you supply them, and tools that call v0.12 routes.

Dakera server

dakera-mcp 0.11

v0.12.0

every tool; the attachment tools while DAKERA_ATTACHMENTS (and DAKERA_VISION for images) is on

v0.11.108

every v0.11 tool unchanged; the attachment tools, dakera_encryption_status and dakera_embed_migration_status are not listed (a direct call says they need v0.12); dakera_encryption_rotate_key needs new_key

older

not tested

What is new

Tool

Tier

Needs

What it does

dakera_capabilities

power

v0.12

GET /v1/capabilities: active model, search mode, scoring strategy, accepted lang values, which opt-in features are on. On a v0.11 server it answers capabilities_available: false

dakera_health

power

any

GET /health: status and version; on v0.12 also degraded, config_warnings, embed_migration

dakera_wake_up

power

any

an agent's startup context in one call: its top memories by importance x recency, no query, no embedding

dakera_embed_migration_status

admin

v0.12

progress of the one-time background re-embed after the upgrade

dakera_encryption_status

admin

v0.12

the encryption keyring and the background re-seal (never key material)

dakera_encryption_rotate_key

admin

v0.11+

new_key is optional on v0.12 once encryption is on (the server generates a key; with encryption off, new_key turns it on); wait_secs (at most 20); namespace rotates one namespace

dakera_attachment_upload / _list / _download / _delete

power

v0.12 + DAKERA_ATTACHMENTS

files (or text) a memory can reference with dakera_store attachment_ref

dakera_attachment_transcribe

power

v0.12 + DAKERA_ATTACHMENTS

WAV speech to text in any language the model knows (lang forces one) into a memory; a background job, wait_seconds (at most 45) waits for it

dakera_attachment_index_image

power

v0.12 + DAKERA_ATTACHMENTS + DAKERA_VISION

PNG page as a visual memory (use an agent dedicated to images: the visual lane stores page vectors)

dakera_attachment_job

power

v0.12 + DAKERA_ATTACHMENTS

status of a transcription / index job

Per-request lang (en, de, fr, es, it, pt, nl; v0.12) is accepted by dakera_store, dakera_recall, dakera_recall_associated, dakera_search, dakera_memory_update, dakera_extract, dakera_auto_tag and the attachment jobs; dakera_store also takes attachment_ref (sha256:<hex> of an attachment in the agent's own namespace, _dakera_agent_<agent_id>). Neither is sent unless given, so the same calls work on a v0.11.108 server.

Other optional arguments (all servers): ttl_seconds and metadata on dakera_store; tags, memory_type and session_id filters on dakera_recall; limit on dakera_batch_recall; limit / offset on dakera_session_list, dakera_session_memories and dakera_agent_sessions (the server pages at 50); memory_type on dakera_knowledge_deduplicate; dedup_on_store / dedup_threshold on dakera_memory_policy_set.

Features the server has off are left out

The opt-in features (attachments, speech to text, image indexing) are off by default on the server. dakera-mcp asks GET /v1/capabilities (once a minute, 3 s timeout) before it lists tools:

  • attachments off, or a server without /v1/capabilities (v0.11): the dakera_attachment_* tools are not listed and not returned by dakera_discover_tools; a direct call answers with the variable to set (DAKERA_ATTACHMENTS=1) and makes no request.

  • vision off: dakera_attachment_index_image is left out (DAKERA_VISION=1 turns it on).

  • A server without /v1/capabilities (v0.11) also hides dakera_encryption_status and dakera_embed_migration_status, whose routes are new in v0.12.

  • The server cannot be asked (down, starting, key refused): nothing is hidden (asked again after 10 s).

The default core profile has no opt-in tools, so it never makes that request.

Errors

Error answers keep the server's text and add a Hint: line for the v0.12 cases: a key pinned to namespaces gets 403 on node-wide /admin routes (backups, encryption, quotas, config); backup download, upload and restore need super_admin; 413 (body over a limit, or a hard quota), 501 (feature off), 503 (Retry-After, which the retry logic now honours, up to 8 s) and 429 (rate limit). A route the server lacks (an older server) and a v0.11 rotation without new_key get a hint too. A request that timed out is retried only when it is safe to repeat (GET, PUT, DELETE): a store, an import or a key rotation is never sent twice.


Run Dakera

The MCP server connects to a Dakera memory server. You need one running first:

docker run -d \
  --name dakera \
  -p 3000:3000 \
  -e DAKERA_ROOT_API_KEY=dk-mykey \
  ghcr.io/dakera-ai/dakera:latest

For 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-mcp

Homebrew (macOS / Linux)

brew install dakera-ai/tap/dakera-mcp

Cargo

cargo install dakera-mcp

Docker

docker pull ghcr.io/dakera-ai/dakera-mcp:latest

Binary download

Pre-built binaries for macOS, Linux, and Windows are available on the releases page.

Platform

File

macOS (Apple Silicon)

dakera-mcp-aarch64-apple-darwin.tar.gz

macOS (Intel)

dakera-mcp-x86_64-apple-darwin.tar.gz

Linux x64

dakera-mcp-x86_64-unknown-linux-musl.tar.gz

Linux arm64

dakera-mcp-aarch64-unknown-linux-musl.tar.gz

Windows x64

dakera-mcp-x86_64-pc-windows-msvc.zip


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:3000",
        "DAKERA_API_KEY": "your-key"
      }
    }
  }
}

To start with the power profile (exposes up to 79 tools):

{
  "mcpServers": {
    "dakera": {
      "command": "dakera-mcp",
      "env": {
        "DAKERA_API_URL": "http://localhost:3000",
        "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

→ Full docs
→ MCP reference

Repo

What it is

dakera-py

Python SDK

dakera-js

TypeScript SDK

dakera-cli

CLI

dakera-deploy

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 tools
dakera_batch_forgetA

Bulk-delete memories matching filters (tags, importance range, time window, type, session); at least one is required. Permanent: to demote instead, use dakera_memory_importance.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags to match (all required)
agent_idYes
session_idNo
memory_typeNo
created_afterNoAfter Unix timestamp
created_beforeNoBefore Unix timestamp
max_importanceNoMax importance threshold
min_importanceNoMin importance threshold

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description must carry the safety profile, and it does by flagging the operation as 'Permanent' and pairing it with a non-destructive alternative. It does not disclose what the call returns (e.g., deletion count) or how multiple filters combine, so the destructive disclosure is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences: the operation, its filter surface and its prerequisite come first, followed by the safety note and the alternative. No filler and no redundancy with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, no-annotation, no-output-schema tool, the description covers permanence and filter scope but omits return behavior and whether the filters AND together versus OR. Adequate to call correctly, but a few gaps remain for a tool whose effects are irreversible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description enumerates the filter families (tags, importance range, time window, type, session), which maps onto most of the eight parameters, and adds a cross-parameter rule ('at least one is required') that the schema itself does not encode. It stops short of syntax details for the timestamp/importance bounds that the schema partly covers at 63%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Bulk-delete memories') plus the qualifying dimension (matching filters) in a single clause. It is clearly distinguishable from the single-record dakera_forget and from dakera_memory_importance, which it names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the selection constraint ('matching filters ... at least one is required') and routes the agent to the correct alternative for the non-destructive case ('to demote instead, use dakera_memory_importance'). It lacks guidance on when to prefer this over per-record deletion, but the context is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dakera_batch_recallA

List memories by filters (tags, importance, time window, type, session) without a query; at most limit (default 100). Use instead of dakera_recall when no semantic search is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags to match (all required)
limitNo
agent_idYes
session_idNo
memory_typeNo
created_afterNoAfter Unix timestamp
created_beforeNoBefore Unix timestamp
max_importanceNoMax importance (inclusive)
min_importanceNoMin importance (inclusive)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose real behavior the schema omits: the result cap 'at most limit (default 100)'. However, it never states that this is a read-only, non-mutating operation, nor mentions ordering, pagination, or auth requirements – gaps that matter for a list endpoint with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the capability, the defining constraint, the limit cap, and the routing rule, all front-loaded. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only filtered-list tool with no output schema and no annotations, the description covers purpose, the key filter dimensions, the result cap, and sibling routing. It is missing only ordering/pagination behavior and any mention of the required agent_id, which keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 56%, and the description enumerates the filter dimensions (tags, importance, time window, type, session), which loosely maps to the filter parameters. But it adds no format or semantics beyond the schema's own enum and inline descriptions, and the required 'agent_id' parameter is never mentioned anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List memories') plus the defining scope constraint ('by filters ... without a query'), which is exactly what separates it from semantic recall. It explicitly names the sibling it replaces, so an agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear selection rule: 'Use instead of dakera_recall when no semantic search is needed,' naming both the alternative and the condition. It stops short of stating when NOT to use it (e.g., when relevance ranking matters) or how it relates to the other search siblings.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNo
queryNoKeyword to search tool names/descriptions.

TDQS

A4.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 entities, topics, key phrases and a summary from text with the provider chain: extractor_override, then the namespace default, then the server default (GLiNER local). For ad-hoc GLiNER types use dakera_auto_tag. Needs a write key for the namespace (for all namespaces when neither namespace nor agent_id is given).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoen, de, fr, es, it, pt or nl (v0.12+)
textYesText to extract information from
agent_idNo
namespaceNoNamespace whose extractor config applies (default: agent_id's)
extractor_overrideNoProvider for this request only

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses the credential requirement (write key for the namespace, expanded scope when neither namespace nor agent_id is given) and the provider fallback chain. It does not describe the shape of the extraction result or any failure modes, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with no filler; the core action is front-loaded, followed by the provider chain and the auth caveat. The first sentence is long but each clause carries information, so no trimming is warranted beyond minor restructuring.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a nested extractor_override object, no output schema and no annotations, the description covers configuration resolution and auth scope well. It leaves the returned extraction structure unexplained, but with no output schema declared that is a secondary gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, so the baseline is 3, but the description adds meaning the schema lacks: the precedence order for extractor_override versus the namespace/server default, and the authorization implication of namespace/agent_id omission. That is genuine value beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a precise verb (Extract) and an explicit resource list (entities, topics, key phrases, summary) from text, and names the sibling/alternative dakera_auto_tag for ad-hoc GLiNER types. An agent can tell this apart from the retrieval-oriented siblings without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names a concrete alternative ('For ad-hoc GLiNER types use dakera_auto_tag') and explains the provider resolution order (extractor_override → namespace default → server default GLiNER local), which tells the agent when this tool's configuration applies. It stops short of stating when-not to use it versus the search/knowledge_graph siblings.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoDelete memories with these tags
agent_idYes
memory_idsNoSpecific memory IDs to delete

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoGraph traversal depth (controls candidate count)
agent_idYes
memory_idYesSeed memory ID to build graph from
min_similarityNoMinimum similarity threshold 0.0-1.0

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsYesTool names to load schemas for

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_recallB

Semantic recall: the top_k (default 5) memories closest to a query, optionally narrowed by tags, memory_type or session_id. include_associated adds KG neighbours one hop away (dakera_recall_associated goes deeper).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoen, de, fr, es, it, pt or nl (v0.12+)
tagsNo
queryYesSemantic query text
sinceNoOnly memories created at or after this ISO-8601 timestamp
top_kNoMax results to return
untilNoOnly memories created at or before this ISO-8601 timestamp
agent_idYes
session_idNo
memory_typeNo
min_importanceNoMin importance threshold
include_associatedNoInclude KG-linked memories in results

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It does disclose genuinely useful behavior: top_k defaults to 5 and include_associated pulls one-hop KG neighbours rather than deeper traversal. It does not state that this is a read-only/non-mutating operation, nor anything about result volume, ranking, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core semantic-recall behavior and the default before the optional modifiers. Dense but no filler; only slight compression cost is that the parenthetical routing note is easy to skim past.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and only 64% schema coverage across 11 params, the description is adequate but incomplete: it never says what a recalled memory looks like, how ranking/scores are returned, or how the temporal (since/until) and language parameters behave.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 64% with 11 params. The description adds real value the schema lacks — the top_k default of 5 and the semantics of include_associated (one hop) — and summarizes the tags/memory_type/session_id narrowers. But since/until, lang, and min_importance are untouched by either the description or (for several) the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('semantic recall ... memories closest to a query') and describes the retrieval mechanics (top_k nearest-neighbour, optional filters). It names dakera_recall_associated as the deeper alternative, though that tool is not in the sibling list, and it never distinguishes itself from dakera_search / dakera_hybrid_search / dakera_fulltext_search, which an agent must still choose between.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use this for semantic top-k recall with optional narrowing, and use dakera_recall_associated when you want deeper KG traversal. There is no explicit when/when-not and no routing against the several other search siblings, so the agent must infer context from the verb.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryNoOptional session summary
session_idYesSession ID to end

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYes
metadataNoOptional session metadata

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_storeC

Persist a memory (fact, decision, context) for an agent. importance defaults to 0.5; use 0.8-1.0 for memories that must survive decay.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoen, de, fr, es, it, pt or nl (v0.12+)
tagsNoTags for filtering
contentYesMemory content text
agent_idYes
metadataNo
expires_atNoExpiry, Unix seconds (wins over ttl_seconds)
importanceNoImportance 0.0-1.0
session_idNoSession to associate with
memory_typeNo
ttl_secondsNoExpire after N seconds
attachment_refNosha256:<hex> uploaded to the agent's namespace (v0.12)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions decay and the importance scale but omits critical behavioral details: whether this operation is idempotent, what permissions are needed, how conflicts are resolved, whether it returns the ID, or the implications of expiry fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Efficiently front-loaded with two sentences. The first states purpose, the second provides a key parameter default and guidance. No wasted words, though it could be slightly more structured with explicit usage notes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 11 parameters, no output schema, and no annotations, the description is incomplete. It covers purpose and one parameter but neglects critical behavior for a 11-param mutation tool: return values, error handling, alternative tools, and the semantics of fields like expires_at, ttl_seconds, and memory_type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 73%, so the schema already documents most parameters including importance (0.0-1.0). The description adds context about importance defaults and recommended values, which is useful but limited to one parameter. Baseline 3 is appropriate given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (persist) and resource (memory) with examples of memory content types (fact, decision, context). This clearly distinguishes it from read-oriented siblings like dakera_recall and dakera_search, though it doesn't name a specific alternative to avoid.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like dakera_forget or dakera_search. The description implies usage through its content examples but offers no exclusion criteria or alternative routing.

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.

  1. 5 tool updatesv0.11.0
    • Changeddakera_batch_recall1 field changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "type": "integer"
        +}
    • Changeddakera_extract5 fields changed
      • addedInput schema / properties / agent_id
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / entity_types
        Removed value: -{
        -  "description": "GLiNER entity type labels (e.g. [\"person\", \"org\", \"location\"]). Only used when provider is `gliner`.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • changedInput schema / properties / extractor_override / description
        Previous value: -"Per-request provider override — highest priority in the resolution hierarchy. Fields: provider, model, base_url, api_key."New value: +"Provider for this request only"
      • addedInput schema / properties / lang
        Added value: +{
        +  "description": "en, de, fr, es, it, pt or nl (v0.12+)",
        +  "type": "string"
        +}
      • changedInput schema / properties / namespace / description
        Previous value: -"Namespace whose default extractor config is used. If omitted, the server-level default is used."New value: +"Namespace whose extractor config applies (default: agent_id's)"
    • Changeddakera_recall4 fields changed
      • addedInput schema / properties / lang
        Added value: +{
        +  "description": "en, de, fr, es, it, pt or nl (v0.12+)",
        +  "type": "string"
        +}
      • addedInput schema / properties / memory_type
        Added value: +{
        +  "enum": [
        +    "episodic",
        +    "semantic",
        +    "procedural",
        +    "working"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / tags
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changeddakera_search1 field changed
      • addedInput schema / properties / lang
        Added value: +{
        +  "description": "en, de, fr, es, it, pt or nl (v0.12+)",
        +  "type": "string"
        +}
    • Changeddakera_store6 fields changed
      • addedInput schema / properties / attachment_ref
        Added value: +{
        +  "description": "sha256:<hex> uploaded to the agent's namespace (v0.12)",
        +  "type": "string"
        +}
      • changedInput schema / properties / expires_at / description
        Previous value: -"Expiry Unix timestamp (seconds)"New value: +"Expiry, Unix seconds (wins over ttl_seconds)"
      • addedInput schema / properties / lang
        Added value: +{
        +  "description": "en, de, fr, es, it, pt or nl (v0.12+)",
        +  "type": "string"
        +}
      • removedInput schema / properties / memory_type / description
        Removed value: -"Memory type (episodic|semantic|procedural|working)"
      • addedInput schema / properties / metadata
        Added value: +{
        +  "type": "object"
        +}
      • addedInput schema / properties / ttl_seconds
        Added value: +{
        +  "description": "Expire after N seconds",
        +  "type": "integer"
        +}
  2. 13 tool updatesv0.10.12
    • Addeddakera_batch_forget
    • Addeddakera_batch_recall
    • Addeddakera_discover_tools
    • Addeddakera_extract
    • Addeddakera_forget
    • Addeddakera_fulltext_search
    • Addeddakera_knowledge_graph
    • Addeddakera_load_tools
    • Addeddakera_recall
    • Addeddakera_search
    • Addeddakera_session_end
    • Addeddakera_session_start
    • Addeddakera_store
  3. 13 tool updatesv0.10.11
    • Removeddakera_batch_forget
    • Removeddakera_batch_recall
    • Removeddakera_discover_tools
    • Removeddakera_extract
    • Removeddakera_forget
    • Removeddakera_fulltext_search
    • Removeddakera_knowledge_graph
    • Removeddakera_load_tools
    • Removeddakera_recall
    • Removeddakera_search
    • Removeddakera_session_end
    • Removeddakera_session_start
    • Removeddakera_store
  4. 14 tool updatesv0.10.8
    • Addeddakera_batch_forget
    • Addeddakera_batch_recall
    • Addeddakera_discover_tools
    • Addeddakera_extract
    • Addeddakera_forget
    • Addeddakera_fulltext_search
    • Addeddakera_hybrid_search
    • Addeddakera_knowledge_graph
    • Addeddakera_load_tools
    • Addeddakera_recall
    • Addeddakera_search
    • Addeddakera_session_end
    • Addeddakera_session_start
    • Addeddakera_store

TDQS

A3.6/5.0

Scored across 14 tools

Disambiguation3/5

Multiple search tools (dakera_recall, dakera_batch_recall, dakera_search, dakera_fulltext_search, dakera_hybrid_search) overlap in purpose, and dakera_forget/dakera_batch_forget share tag-based deletion. Descriptions help differentiate them, but an agent may still hesitate when choosing between semantic, keyword, hybrid, and filter-only retrieval.

Naming Consistency4/5

All tools use snake_case with a consistent dakera_ prefix, and most follow a verb_noun pattern (store, extract, recall, forget, session_start). Minor deviations like dakera_knowledge_graph and dakera_fulltext_search are noun phrases, but the overall convention is predictable.

Tool Count4/5

With 14 tools, the server is well within a reasonable range for memory and knowledge management. It covers CRUD, search, sessions, graph exploration, and meta-tool discovery, though the several search variants and meta tools make it slightly heavy.

Completeness3/5

Core lifecycle operations exist (store, recall/search, forget), but there is no update/upsert tool for memories or get-by-ID retrieval. Descriptions reference absent tools such as dakera_memory_importance and dakera_recall_associated, indicating notable gaps for a memory server.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A 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.
    250
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Open-source MCP memory server for AI agents — persistent, searchable, tiered memory across sessions. Works over stdio (Cursor, Claude Desktop) or HTTP+SSE. MIT licensed.
    8
    MIT