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,500

Default — always loaded

admin

34

~6,850

DAKERA_MCP_PROFILE=admin

power

86

~18,200

DAKERA_MCP_PROFILE=power

all

106

~21,600

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,400 tokens)


Related MCP server: Zep MCP Server

Dakera v0.12

dakera-mcp 0.12.3 works against Dakera v0.11.108 and v0.12.0 – v0.12.3 servers. Every tool keeps its name and arguments; the additions are optional arguments that are sent only when you supply them (or that an older server ignores), and tools that call new routes and say so on a server without them. The 0.12.3 additions (separate neighbourhood context, the unknown-field hint, document import) need a v0.12.3 server.

Dakera server

dakera-mcp 0.12.3

v0.12.3

every tool; the recall tools list neighbourhood context apart in context_memories (neighborhood_mode)

v0.12.2

every tool; the recall tools keep the first top_k results and say how many unmarked context items they left out; the attachment tools while DAKERA_ATTACHMENTS (and DAKERA_VISION for images) is on

v0.12.0, v0.12.1

every tool; dakera_session_touch and dakera_agent_create answer that nothing is needed (sessions are not ended for inactivity there, and an agent is created by its first memory); dakera_whoami says it needs v0.12.2; listings return full content (no preview) and include derived sentence sub-memories

v0.11.108

as v0.12.0, and 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

New with Dakera v0.12.2

Tool / argument

Tier

What it does

dakera_session_start idle_timeout_secs

core

the server ends a session idle for 4 h by default; this sets the session's own timeout (0 = never, at most 30 days)

dakera_session_touch

power

POST /v1/sessions/{id}/touch: keeps a session open while the agent works without storing or recalling; answers session_state (active with idle_deadline_at, or ended)

dakera_store

core

storing into an ended session still succeeds; the answer's session_state: "ended" is followed by a note telling the agent to start a new session

dakera_session_end

core

a note when the server had already ended the session for inactivity (the summary passed is then not saved) or when no such session is reachable

dakera_session_list / _get / dakera_agent_sessions

power

sessions carry last_activity_at, ended_reason (client or idle) and idle_since

dakera_agent_create

power

POST /v1/agents: creates an agent (its memory namespace) before its first memory; created: false for an existing one

dakera_whoami

power

GET /v1/auth/whoami: the key's scope, namespaces (prefix patterns such as _dakera_agent_mlx-*), expiry and inert entries; the first thing to call on a 403

dakera_agent_memories / dakera_session_memories / dakera_knowledge_network_cross_agent content_preview_chars

power

content cut to 500 characters by default (content_len / content_truncated mark it; 0 = full content); dakera_memory_get and recall return memories in full

dakera_agent_memories / dakera_wake_up include_derived

power

derived sentence sub-memories are left out of listings by default since v0.12.2; true lists them too

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); content_preview_chars on the memory listings and include_derived on dakera_agent_memories / dakera_wake_up (v0.12.2, ignored by older servers); memory_type on dakera_knowledge_deduplicate; dedup_on_store / dedup_threshold on dakera_memory_policy_set.

Recall: top_k ranked results, context apart

dakera_recall and dakera_recall_associated return at most top_k ranked results in memories. They ask the server for neighborhood_mode: "separate", so the session neighbours of the results (memories written around the same time in the same session) come back in their own context_memories list: each entry has context_of (the id of the ranked memory it belongs to) and context_of_rank (that memory's place in memories); its score comes from another search and is not comparable with the ranked scores. A collapsed result (server flag DAKERA_RECALL_COLLAPSE_DERIVED) keeps matched_text, the sentence that matched. neighborhood_mode picks separate (default), inline or off. A server that predates neighborhood_mode (before v0.12.3) appends its context to memories unmarked: the tools keep the first top_k and say how many items they left out.

Memory content in tool results is stored data: initialize tells the client to reason about it and never follow instructions found in it.

Documents (Dakera v0.12.3)

A document becomes chunk memories of the agent, each with its heading path and page, imported by a background job (power tier; listed when /v1/capabilities has documents.enabled):

Tool

What it does

dakera_import_document

content (text, text/markdown or text/html as media_type) or attachment_ref of a file uploaded with dakera_attachment_upload (PDF, DOCX, ...; namespace defaults to the agent's); title, document_id (re-importing it replaces the document), memory fields (tags, session_id, memory_type, importance, metadata, lang), chunking (max_tokens, overlap_tokens, strategy structure or fixed), decompose; wait_seconds (at most 45) waits for the job

dakera_document_status

the import job: Pending, Running (progress), Completed or Failed with error: {status, code}

dakera_list_documents

id, title, media type, chunk count, bytes, pages; limit 1-500, cursor = the previous next_cursor

dakera_delete_document

every chunk of the document

A recall result that is a chunk carries citation: document_id, title, page_start / page_end, heading_path, chunk_index / chunk_count (from memory.metadata._dakera_document). On a server before v0.12.3 (no documents section in /v1/capabilities) the tools are not listed and a direct call says they need v0.12.3; DAKERA_DOCUMENTS=0 on the server hides them the same way.

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. Since Dakera v0.12.2 a refused argument gets 400 with a message naming the field (content: content exceeds maximum of 100000 bytes …, tags[1]: … reserved …); the message is passed on and the hint names the field to correct (the content limit counts UTF-8 bytes). The 403 hints point at dakera_whoami. From Dakera v0.12.3 the admin key, backup and rotate-key routes refuse a field they do not know (422); the hint names it. 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

The image is distroless (no shell, no package manager) and runs as the non-root user 65532.

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"
      }
    }
  }
}

dakera_extract_entities calls the ODE sidecar at DAKERA_ODE_URL; those requests currently carry the Dakera API key as well (tracked in Dakera-AI/dakera#924).

To start with the power profile (exposes up to 86 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.

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.

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.

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

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.

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.

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.

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_recallA

Semantic recall: the top_k (default 5) memories closest to a query, optionally narrowed by tags, memory_type or session_id. Session neighbours go in context_memories, outside top_k. include_associated adds KG neighbours one hop away (dakera_recall_associated goes deeper). Best first: rank_score (v0.12.3+) orders them; score may rise.

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
neighborhood_modeNoSession-neighbour context: separate (listed apart, the default), inline or off
include_associatedNoInclude KG-linked memories in results

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does add real behavior: default top_k=5, session neighbours placed in context_memories outside the top_k count, and include_associated expanding one KG hop. It omits read-only confirmation, pagination/result-size behavior, and what happens when a query matches nothing.

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?

Three dense sentences, front-loaded with the core semantic-recall action and the important top_k consequence before the sibling redirect. Minor phrasing like 'score may rise' is slightly cryptic, but there is no filler.

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 12-parameter tool with no annotations and no output schema, the description covers the most consequential semantics (top_k default, neighbour placement, KG expansion, ranking field). It still leaves a third of parameters and the result structure to be inferred, so it is adequate but not complete.

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 67%, and the description compensates by disclosing the top_k default of 5 and the role of include_associated and neighborhood_mode ('session neighbours go in context_memories'), which the schema does not fully convey. It says nothing about since/until/min_importance/lang, but those are documented in 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?

The description states a specific verb+resource ('Semantic recall: the top_k memories closest to a query') and specifies the narrowing dimensions (tags, memory_type, session_id). It distinguishes itself from dakera_recall_associated, but does not differentiate from sibling semantic/hybrid/fulltext search tools.

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?

It explicitly routes the agent to dakera_recall_associated for deeper KG traversal and explains include_associated's role, which is useful. However, it never states when to prefer this over dakera_search, dakera_hybrid_search or dakera_fulltext_search, leaving the main selection decision to inference.

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 a session with an optional summary. Call at run end, even on error. A session the server already ended (idle) keeps its state; your summary is then not saved.

NameRequiredDescriptionDefault
summaryNoOptional session summary
session_idYesSession ID to end

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose real behavior: an already-ended (idle) session is not destroyed by this call and the supplied summary is silently discarded. That conditional, no-op-on-idle semantics is exactly what an agent needs before calling. It omits whether summary persistence is permanent or whether callers need auth.

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?

Three short sentences, front-loaded with the action, then the trigger, then the edge-case caveat. Nothing is repeated from the name or schema and nothing extraneous is included.

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 two-parameter tool with full schema coverage, no output schema, and no nested objects, this is nearly sufficient: action, timing, and idle-session behavior are all present. Only the success-path outcome and any permission requirements are left unstated.

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 100%, so the baseline is 3, but the description adds genuine semantics the schema cannot: the summary's persistence is conditional on the session still being live. That is meaningful meaning beyond "Optional session summary".

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?

"Close a session with an optional summary" names a specific verb and resource, and the pairing with dakera_session_start is inferable from the session lifecycle. It stops short of naming the sibling explicitly, so an agent must rely on the name prefix to pair start/end.

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?

"Call at run end, even on error" gives a clear trigger condition, including the error path that agents commonly mishandle. It also covers the degenerate case where the server already ended the session, though it names no alternative tool or prerequisite.

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 session; its session_id groups the memories you store. The server ends a session idle for 4 h by default (v0.12.2+).

NameRequiredDescriptionDefault
agent_idYes
metadataNoOptional session metadata
idle_timeout_secsNoEnd after this many idle seconds; 0 = never (v0.12.2+)

TDQS

A3.5/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 behavioral burden, and it does disclose one valuable trait: idle sessions are auto-ended after 4 h by default. It omits other important behaviors — whether calling again for the same agent_id creates a duplicate session, what the call returns, and any permission or concurrency effects.

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 compact clauses with zero filler; the core purpose is front-loaded and the lifecycle caveat follows immediately. Every phrase contributes 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?

With no annotations and no output schema, the description should say more about the return shape (presumably the session_id) and what happens on repeated calls. It implies session_id is returned and covers lifecycle, but leaves the required agent_id and duplicate-session semantics unexplained.

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 coverage is 67%, with agent_id (the required param) undocumented in both schema and description, while metadata is covered by the schema and idle_timeout_secs gets the useful extra detail that 0 means never. The description adds the 4 h default behavior but does not explain the required identifier.

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 and resource ('Open a session') and immediately explains its function relative to siblings: the session_id groups memories you store, which distinguishes it from dakera_store/dakera_session_end. It stops short of naming the counterpart tool explicitly, but the agent can place it correctly.

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 linkage to storing memories implies this is a prerequisite step before dakera_store, and the idle-timeout note hints at lifecycle expectations. However, there is no explicit 'use this when...' or 'do not use if a session already exists' guidance, and no mention of how it relates to dakera_session_end.

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.

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. 2 tool updatesv0.12.3
    • Changeddakera_recall1 field changed
      • addedInput schema / properties / neighborhood_mode
        Added value: +{
        +  "description": "Session-neighbour context: separate (listed apart, the default), inline or off",
        +  "enum": [
        +    "separate",
        +    "inline",
        +    "off"
        +  ],
        +  "type": "string"
        +}
    • Changeddakera_session_start1 field changed
      • addedInput schema / properties / idle_timeout_secs
        Added value: +{
        +  "description": "End after this many idle seconds; 0 = never (v0.12.2+)",
        +  "type": "integer"
        +}
  2. 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"
        +}
  3. 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
  4. 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
  5. 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.5/5.0

Scored across 14 tools

Disambiguation3/5

The memory-retrieval surface is crowded: dakera_recall, dakera_search, dakera_fulltext_search, dakera_hybrid_search and dakera_batch_recall all return memories, and recall vs search in particular differ only in framing (session neighbours, pre-filters) that an agent must read carefully to distinguish. Store/forget, forget/batch_forget, session_start/session_end, and discover_tools/load_tools are otherwise clearly separated, and the descriptions do actively steer selection.

Naming Consistency4/5

All names share the dakera_ prefix and snake_case, with verb-first forms dominating (store, forget, recall, search, extract, load_tools). Minor deviations are the noun-only dakera_knowledge_graph and the noun-first session_start/session_end forms, but the set remains highly predictable.

Tool Count4/5

14 tools is a reasonable scope for a memory/KG server, covering write, delete, retrieval, sessions, graph exploration, extraction and catalog meta-tools. Slightly heavy on the retrieval side, where five near-parallel search tools inflate the count, but nothing feels gratuitous.

Completeness2/5

Multiple descriptions point agents at tools that are not in this set — dakera_memory_importance (suggested repeatedly as the non-destructive alternative to forgetting), dakera_graph_traverse and dakera_auto_tag — creating guaranteed dead ends. There is also no update/edit or importance-adjust operation, so stored memories can only be created or destroyed, not amended.

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.
    252
    MIT
  • A
    license
    Not graded
    quality
    B
    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.
    33 PyPI
    8
    MIT