All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- quinn-proto 0.11.14 → 0.11.15 (RUSTSEC-2026-0185) — fixes remote memory exhaustion via unbounded out-of-order stream reassembly. CVSS 7.5 (high). (#132)
dakera_tif_evaluatetool (Power tier) — wraps the T-I-F (Truth-Indeterminacy-Falsity) reliability workflow into a single MCP call. Given amemory_id(and optionalagent_id), it fetches the memory's feedback history, counts upvote/downvote/flag signals, computes normalised T-I-F scores, and returns a reuse classification (confident_reuse,surface_contradiction,ask_clarification,verify_before_use). Pure arithmetic on feedback signals — no external LLM. Brings theallprofile to 87 tools andpowerto 69.
- Memory feedback tools missing
agent_id—dakera_memory_feedbackanddakera_memory_feedback_getnow forward the requiredagent_idfield; all agents' feedback calls previously returned 422. Restores the org-wide memory reinforcement loop. (#136) - CI integration tests — added explicit GHCR
docker/login-actionstep before pulling thedakeraimage; stale credentials on self-hosted ARM runners causeddenied: deniedon the public image pull. - Docker port mapping — corrected
3300:3300→3300:3000in documentation. (#133) - Playground badge URL — badge now links to
dakera.ai/playground(frontend) instead of the API endpoint. (#131) - MCP Registry org case — restored
Dakera-AIcasing inrepository.urlafter a previous normalisation incorrectly lowercased it. (DAK-7032, #128)
- ARM runner lockfile-aware stale cache purge to prevent spurious compilation failures. (#135)
- Bumped
actions/checkoutv4 → v7 andactions/cachev5 → v6. (#127, #130, #134)
- Glama.ai integration files — added
glama.jsonclaim file and Glama score badge to README for server directory discoverability. (#99, #100) - Improved tool descriptions for TDQS scoring — rewrote all 86 MCP tool descriptions with richer context, parameter explanations, and usage examples to improve Glama quality scores. (#102)
- GitHub Release binary assets — release workflow now uploads pre-built linux x86_64 binary, tarball, and SHA256 checksums to GitHub Releases. (#101)
- Crate metadata for Glama.ai discoverability — added
authors,homepage,documentation,readme,keywords, andcategoriesto Cargo.toml. Fixes "No maintainers listed" on Glama.ai registry. (#98)
- MCP pagination page size increased from 20 to 100 — all profiles (core=14, power=68, all=86) now return in a single page. Eliminates multi-page pagination that caused tool visibility issues in Claude Code and other MCP clients. (#96)
- MCP token/context optimizations — 5 optimizations that cut tool description tokens by ~47%: description compression, property deduplication, default value removal, cursor-based pagination, and compact enum formatting. Core profile now ~2,400 estimated tokens (was ~4,500+). (#88)
- Cross-compilation CI workflow — automated release builds for 10 platform binaries: Linux (x64, ARM64, musl, ARMv7), macOS (ARM64, x64), Windows (x64, ARM64), and FreeBSD (x64). Triggers on GitHub Release publish. (#87)
- Updated documentation to reflect correct tool count: 14 core tools (86+ available via profiles).
- Tool surface reduced from 169 to 14 default tools — the MCP server now exposes only 14
core memory tools by default, down from 169. Agents discover additional tools via the
dakera_discover_toolsmeta-tool. Saves ~35K tokens per session. (#83) - Removed admin, analytics, and streaming tools —
dakera_admin_*,dakera_analytics_*,dakera_streaming_*, and redundant graph/vector tools have been permanently deleted (-1,672 lines). If you relied on these tools, use the Dakera REST API directly. (#84)
- Profile-based tool tiering — three profiles (
minimal,standard,full) control which tools are exposed. Set viaDAKERA_MCP_PROFILEenv var.standardis the default (14 tools). (#83) dakera_discover_toolsmeta-tool — agents can dynamically discover and load additional tools beyond the default set without exposing them all upfront. (#83)- 25 integration tests against live Dakera Docker — end-to-end verification of store, recall, search, session lifecycle, and profile switching against a real Dakera instance. (#85)
- 47 deep profile tiering validation tests — comprehensive coverage of tool visibility, profile transitions, and meta-tool behavior (190 → 237 total tests). (#86)
- Consolidated
graph_traverse/graph_path/graph_exportinto unified graph tools. (#84) - Consolidated
vector_query/vector_multi_search/vector_explaininto unified vector tools. (#84)
- Applied ARM rustfmt 1.9.0 formatting.
- Version bump for Docker image rebuild with MCP annotation. (#72)
- Bumped
thiserrorfrom 1.0.69 to 2.0.18 — internal error handling improvement, no public API change. (#56) - Pinned Rust toolchain to 1.95.0 for reproducible builds. (#59)
- Docker multi-arch release builds — replaced
push-by-digestwith platform-tagged images (VERSION-amd64,VERSION-arm64) followed byimagetools createmanifest merge. Self-hosted ARM runners had unreliable digest availability in GHCR, causing all Docker releases since v0.9.2 to fail. - Added release workflow concurrency control to prevent parallel tag pushes from racing.
- Updated Cargo.lock patch dependencies. (#60)
- Added Dependabot configuration for Cargo and GitHub Actions.
- Concurrent request handling and crash recovery — wraps
stdoutinMutex<Stdout>and addscatch_unwindaround tool handlers to prevent a single panicking tool from crashing the MCP process. Critical for Claude Code which issues concurrent tool calls over stdio. (#54)
- Bumped
rustls-webpkifrom 0.103.12 to 0.103.13 (follow-up security patch). (#52)
- Retry with exponential backoff, connection pooling, and tool timeout — prevents transient
server errors from surfacing as MCP tool failures. Adds
reqwestconnection pooling for keep-alive reuse and a 60-second per-tool timeout. (#53) - Nest filter params in
batch_recallandbatch_forget— filters liketags,min_importance,created_afterwere sent as top-level fields instead of nested under the correct request body structure. (#51)
- Removed GHCR digest validation loop from release workflow (DAK-2005). (#50)
- Extended GHCR digest retry window and upgraded to Node.js 24 actions. (#45)
- Bumped
randfrom 0.9.2 to 0.9.4. (#46) - Security — rustls-webpki CVE patch: Updated to
rustls-webpki 0.103.12addressing GHSA-xgp8-3hg3-c2mh and GHSA-965h-392x-2mh5 (CVSS 2.2 LOW). (#48)
MCP-5 — Cognitive MCP Tools (server v0.9.6+ / v0.9.9+)
Three new tools for managing per-namespace memory policies and Deep Associative Recall directly from MCP clients:
dakera_memory_policy_get— read theMemoryPolicyfor a namespace. Returns all COG-1, COG-3, and SEC-5 policy fields (differential TTLs, per-type decay curves, spaced-repetition settings, consolidation config, and rate limits). WrapsGET /v1/namespaces/:namespace/memory_policy. Requires Read scope. Serverv0.9.6+.dakera_memory_policy_set— partial-update theMemoryPolicyfor a namespace. Performs a GET-then-PUT merge internally so omitted fields are preserved; no need to supply the full schema. WrapsPUT /v1/namespaces/:namespace/memory_policy. Requires Write scope. Serverv0.9.6+(SEC-5 rate-limit fields requirev0.9.9+).dakera_recall_associated— dedicated Deep Associative Recall (KG-3). WrapsPOST /v1/memory/recallwithinclude_associated: trueand exposes the KG-3 parameters directly:associated_memories_depth(1–3 hops, default 1) andassociated_memories_min_weight(0.0–1.0, default 0.0). Response includesmemories(primary hits) andassociated_memories(KG neighbours, each with adepthfield). Requires Read scope. Serverv0.9.8+.
Total MCP tool count: 80 → 83.
- Updated
README.mdto reflect open-core model and current product positioning. (PR#43) - Docs: expanded Available Tools reference from 45 → 83 tools with version badge. (PR#41)
- Docs: filled changelog history gap v0.4.1 → v0.9.1. (PR#40)
- Release workflow: added GHCR propagation validation step before manifest creation to prevent partial-push releases. (PR#42)
dakera_recall: addedinclude_associatedboolean parameter (defaultfalse) — whentrue, the server traverses the knowledge graph from each primary result and includes neighbouring memories in the response. Backed by COG-2 (serverv0.9.6+). (PR#36)dakera_recall: addedsinceanduntilISO-8601 string parameters for time-window recall. Both are optional and can be combined with other filters. Backed by CE-7 (serverv0.9.7+). (PR#38)
ODE-2 — dakera-ode Entity Extraction Sidecar
dakera_extract_entities— run entity extraction via the dakera-ode sidecar. CallsPOST /ode/extractonDAKERA_ODE_URL(default:http://localhost:8080). Acceptscontent,agent_id, and optionalmemory_id/entity_typesfilters. Returns{ entities: [{text, label, start, end, score}], model, processing_time_ms }. RequiresDAKERA_ODE_URLto be configured. (PR#33)
KG-2 — Knowledge Graph Query & Export (server v0.9.8+, backed by /v1/knowledge/*)
dakera_kg_traverse— BFS traversal from a root memory. Acceptsedge_type,min_weight,max_depth(default 3), andlimitfilters. (PR#34)dakera_kg_query— filter-based graph query without requiring a root node; useful for neighbourhood exploration across an agent's full graph. (PR#34)dakera_kg_export— export the knowledge graph asjson(structured edges) orgraphml(XML compatible with Gephi / Cytoscape / yEd). (PR#34)
Total MCP tool count: 76 → 79 → 80 (KG-2 → v0.9.1 params, no new tools).
EXT-1 — Pluggable Extraction Providers (server v0.9.x+)
dakera_extract— run extraction via the full provider hierarchy (per-request override → namespace default → server default → GLiNER local). Supportsgliner,openai,anthropic,openrouter,ollama,none. WrapsPOST /v1/extract. (PR#29)dakera_extractor_get— read the namespace-level default extractor configuration. WrapsGET /v1/namespaces/:ns/extractor. (PR#29)dakera_extractor_set— set or clear the namespace default extractor. WrapsPATCH /v1/namespaces/:ns/extractor. (PR#29)
SEC-3 — AES-256-GCM Encryption Key Rotation (server v0.9.x+)
dakera_encryption_rotate_key— zero-downtime key rotation; re-encrypts all memories under the new key in a single pass. Accepts an optional namespace filter. Requires SuperAdmin scope. WrapsPOST /admin/encryption/rotate-key. (PR#29)
Total MCP tool count: 72 → 76.
MCP-4 (CE-4) — Entity Extraction Tools (server v0.9.x+)
dakera_auto_tag— extract named entities from text via the GLiNER NER pipeline (with a rule-based pre-pass). WrapsPOST /v1/memories/extract. (PR#25)dakera_entity_types_set— enable entity extraction and configure entity types per namespace. WrapsPATCH /v1/namespaces/:ns/config. (PR#25)dakera_memory_entities— retrieve the entity tags stored on a memory at write time. WrapsGET /v1/memory/entities/:id. (PR#25)
MCP-4 (CE-5) — Memory Knowledge Graph (server v0.9.x+)
dakera_graph_traverse— BFS traversal from a memory node with configurable depth (1–5, default 3). WrapsGET /v1/memories/:id/graph. (PR#26)dakera_graph_path— shortest path between two memories. WrapsGET /v1/memories/:id/path. (PR#26)dakera_graph_link_memory— create an explicitlinked_byedge between two memories. WrapsPOST /v1/memories/:id/links. (PR#26)dakera_graph_export— export the full knowledge graph for an agent. WrapsGET /v1/agents/:id/graph/export. (PR#26)
DX-1 — Memory Import / Export
dakera_memory_export— export agent memories to JSONL, CSV, Mem0, or Zep format. WrapsGET /v1/agents/:id/memories/export. (PR#28)dakera_memory_import— import memories from any supported format (auto-detected). WrapsPOST /v1/agents/:id/memories/import. (PR#28)
SEC-1 — Namespace-Scoped API Keys
dakera_namespace_key_create— create an API key scoped to a specific namespace. (PR#28)dakera_namespace_key_list— list keys with access to a namespace. (PR#28)dakera_namespace_key_delete— revoke a namespace key. (PR#28)dakera_namespace_key_usage— get usage statistics for a namespace key. (PR#28)
INT-1 — Memory Feedback
dakera_memory_feedback— upvote, downvote, or flag a memory for quality signals. (PR#28)dakera_memory_feedback_get— retrieve the feedback history for a specific memory. (PR#28)dakera_agent_feedback_summary— aggregate feedback summary across all memories for an agent. (PR#28)
Total MCP tool count: 54 → 72 (16 CE-4/CE-5 tools from internal v0.5.0/v0.6.0 + DX-1/SEC-1/INT-1).
dakera_hybrid_search:vectorparameter is now optional, enabling BM25-only full-text (BM25) search without requiring a pre-computed embedding vector. Fixes DAK-679. (PR#20)
dakera_decay_config_get— returns the current memory-decay configuration (strategy,half_life_hours,min_importance). WrapsGET /admin/decay/config(Admin scope). Implements DECAY-1.dakera_decay_config_set— updates decay settings at runtime without a server restart. Accepts optionalstrategy(exponential|linear|step),half_life_hours(> 0), andmin_importance(0.0–1.0). WrapsPUT /admin/decay/config(Admin scope). Implements DECAY-1.dakera_decay_stats— returns cumulative decay counters (total_decayed,total_deleted,cycles_run,last_run_at) plus per-cycle detail for the most recent run. WrapsGET /admin/decay/stats(Admin scope). Implements DECAY-2.dakera_storeschema updated — new optionalexpires_atparameter (Unix timestamp in seconds). Takes precedence overttl_seconds; on expiry the memory is hard-deleted by the decay engine.
- Unit tests for
dakera_decay_config_setcovering invalid strategy, zero/negativehalf_life_hours, and out-of-rangemin_importance; coverage for definitions length, non-empty descriptions, and unknown tool dispatch for the decay module.
dakera_autopilot_status— returns the live AutoPilot configuration plus last-run statistics (timestamps, memories deduped, clusters consolidated). WrapsGET /admin/autopilot/status(Admin scope). Implements PILOT-4.dakera_autopilot_trigger— forces an immediate AutoPilot cycle. Acceptsactionofdedup,consolidate, orall. WrapsPOST /admin/autopilot/trigger(Admin scope). Implements PILOT-4.
- Unit tests for
dakera_autopilot_triggercovering invalid action, missing action, and unknown tool dispatch; and fordakera_autopilot_status/dakera_autopilot_triggerdefinitions.
- Native binary release artifact: CI now builds and uploads a musl-linked
dakera-mcpbinary on every GitHub release (ci: deploy native binary on release, DAK-575).
- Unit tests for
dakera_batch_recallanddakera_batch_forgetMCP tools, covering request serialization and response deserialization (test: unit tests for batch recall/forget, v0.3.0 gap).
- Pinned all
appleboyGitHub Actions to exact SHA digests to harden CI against supply-chain attacks (fix(ci): pin appleboy actions to exact versions).
dakera_batch_recall— filter-based bulk recall without semantic search (CE-2, dakera server v0.7.0). Acceptstags,min_importance,max_importance,created_after,created_before,memory_type, andsession_idpredicates. CallsPOST /v1/memories/recall/batch.dakera_batch_forget— filter-based bulk delete (CE-2, dakera server v0.7.0). Same predicate set asdakera_batch_recall. The server enforces at least one filter to prevent accidental full-namespace wipe. CallsDELETE /v1/memories/forget/batchwith a JSON body.delete_with_jsoninternal API client method to support DELETE requests carrying a JSON body.
dakera_namespace_configure— create-or-update (upsert) a namespace viaPUT /v1/namespaces/:namespace. Added in dakera server v0.6.0. Requires Write scope.dakera_knowledge_network_cross_agent— build a cross-agent memory similarity network viaPOST /v1/knowledge/network/cross-agent. Added in dakera server v0.4.0 (DASH-A). Requires Admin scope.
- Corrected
execute_toolplacement (moved before test module) and rustfmt formatting
- Unit tests for protocol types and tool helpers (DAK-173)
- Add explicit
GITHUB_TOKENpermissions to CI workflow (#1)
- Upgrade GitHub Actions runners to Node.js 24 compatible versions
- MCP server with stdio JSON-RPC transport
- Memory tools: store, recall, search, get, update, importance, forget, consolidate
- Session tools: start, end, list, get, memories
- Agent tools: stats, memories, sessions
- Knowledge tools: graph, summarize, deduplicate
- Namespace tools: list, get, create, delete
- Vector tools: upsert, query, delete, batch query, bulk update, bulk delete, count, export, aggregate, multi-search, upsert columns, explain, warm, unified query
- Full-text search tools: index, search, delete, stats, hybrid search
- Inference tools: text query, upsert text, batch query text
- Docker support with multi-stage build
- Bearer token authentication support