Skip to content
Agentmart
Submit a tool

Kagura Memory Cloud

Persistent memory for AI assistants: store, search, and connect knowledge across conversations.

Connector by kagura-ai · GitHub account verified by the MCP Registry

IndexedApache-2.0Remote (HTTP)★ 12
Write a review

Chalk Labs

Need help deploying Kagura Memory Cloud?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, VS Code, Cursor, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install connector/kagura-ai-memory-cloud

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Remote endpoint

  • https://memory.kagura-ai.com/mcp Remote (HTTP)

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Persistent memory for AI assistants: store, search, and connect knowledge across conversations.

Use cases: agent-memory, knowledge-base

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
36 read · 21 write · 8 delete · 7 not yet classified
Secrets
None asked for
Install scripts
Nothing to install (hosted)
Runs as
Hosted (remote endpoint)

Tools by what they do 72

Read from the source code; the running server may list different tools.

Read 36 · Look things up without changing anything.

  • changes_since
  • describe_binding
  • describe_tools
  • explore
  • get_active_analysis
  • get_agent
  • get_agent_bootstrap
  • get_analysis
  • get_cluster
  • get_context_info
  • get_file_download_url
  • get_resource_impact
Show 24 more tools
  • get_resource_schema
  • get_sleep_history
  • get_sleep_report
  • get_state
  • get_usage
  • guide
  • list
  • list_agent_bindings
  • list_agents
  • list_analyses
  • list_contexts
  • list_edges
  • list_files
  • list_my_bindings
  • list_resource_tokens
  • list_revisions
  • list_tags
  • recall
  • recall_nearby
  • recall_series
  • recall_upcoming
  • reference
  • secret_get
  • secret_list

Write 21 · Create, change, send or run things.

  • bootstrap
  • complete_file_upload
  • create_context
  • create_edge
  • init_file_upload
  • merge_contexts
  • record_measurement
  • register_agent
  • remember
  • remember_batch
  • secret_put
  • secret_register_pubkey
Show 9 more tools
  • set_state
  • setup_connector
  • setup_resource
  • update_agent
  • update_agent_binding
  • update_context
  • update_edge
  • update_memory
  • update_search_config

Delete 8 · Delete, drop, revoke or wipe things.

  • delete_agent
  • delete_context
  • delete_edge
  • delete_file
  • rollback_session
  • rollback_sleep_run
  • secret_revoke_grant
  • unbind_agent_context

Not yet classified 7 · We could not tell from the name and description.

  • analyze_context
  • bind_agent_context
  • feedback
  • forget
  • ingest_events
  • load_guardrails
  • load_pinned

Network hosts it talks to 27

  • ::1 · found in code
  • accounts.google.com · found in code
  • api.github.com · found in code
  • astral.sh · found in code
  • chatgpt.com · found in code
  • claude.ai · found in code
  • console.cloud.google.com · found in code
  • datatracker.ietf.workspace · found in code
  • docs.authlib.workspace · found in code
  • docs.cohere.com · found in code
  • docs.voyageai.com · found in code
  • download.docker.com · found in code
  • errors.pydantic.dev · found in code
  • github.com · found in code
  • googleapis.com · found in code
  • invite-link.invalid · found in code
  • kagura-ai.com · found in code
  • login.microsoftonline.com · found in code
  • memory.kagura-ai.com · found in remote endpoint, install command, code
  • oauth2.googleapis.com · found in code
  • ollama.com · found in code
  • openid.net · found in code
  • platform.openai.com · found in code
  • resend.com · found in code
  • slack.com · found in code
  • ui.shadcn.com · found in code
  • your-domain.com · found in code

Files it touches

  • /opt/kagura-memory/active-color
  • Your home directory (~)
  • Any path the agent passes to its tools

Tools (72)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • analyze_context

    Start a Memory Analysis run on a context, or preview its cost with dry_run=true. The run clusters memories into labelled themes; read them with get_analysis / get_cluster or a cluster-scoped recall. Requires the workspace owner role, the Pro plan, an enabled OpenAI BYOK key and remaining daily quota (3 runs/day; the extra_analysis_runs addon raises it). dry_run=true passes the same gates but creates nothing. After starting a run, poll get_analysis(run_id) until finished_at is set. Returns (dry_run=true): {status, dry_run, memory_count, cluster_count_estimate, estimated_cost_cents, model_id, …

  • bind_agent_context

    Bind an agent to a context (owner/admin only). A binding is purely subtractive: the effective permission is the existing RBAC decision ∩ the binding (can_read gates reads, write_policy gates writes). Under enforcement_mode='enforce' a context WITHOUT a binding is denied for the agent; under 'shadow' violations are only logged. Returns: {status, binding: {id, context_id, can_read, write_policy, is_default, ...}}.

  • bootstrap

    Start an interactive session on one context in ONE call: the context block, guardrails, pinned memories, upcoming Time Memories and what changed since a time — fail-soft per component (degraded: true when one failed). Deterministic: no recall; search by topic afterwards if the change list does not answer it. format="index" (the default under max_chars 10000): pointer rows — pinned keeps its text; guardrails.items, upcoming.results and changes.changes carry {memory_id, summary (at most 80 chars), summary_cut?, …}; no instructions. Returns: {status, format?, degraded, context, instructions?, gua…

  • changes_since

    List what changed in a context since a time, oldest first: created, updated, superseded (superseded_by = the newer memory), forgotten (a forgotten memory's events omit summary). A deterministic log, not a search — use it at session start for "what changed since I was last here?". session_id: only that session's writes; by_me: only yours. Returns: {status, changes: [{memory_id, kind, at, summary?, superseded_by?}], count, has_more, next_cursor, since, until, session_id?, by_me?, truncated?, context_{id, name, display_name, is_private, is_locked}}. Manual: guide(["changes_since"]).

  • complete_file_upload

    Finalize an upload after the bytes were PUT to the init_file_upload URL: the server verifies the stored object against the declared sha256 and size, then marks the file uploaded. Idempotent for an already-uploaded file with the same sha256. Returns: {status, file_id, size_bytes, sha256}.

  • create_context

    Create a context — a separate namespace for memories (per project or topic) — in the current workspace. Workspace owner or admin only: owners can create private and shared contexts, admins shared only. Returns: {status, message, context_{id, name, display_name, is_private, is_locked}}. Pass context_id to the other tools.

  • create_edge

    Create a manual edge between two memories you know are related but automatic edge discovery has not connected. source_id / target_id are MEMORY UUIDs (from recall), not context UUIDs; the defaults (related_to, weight 1.0) suit most manual edges. A 'supersedes' edge is also how you ACCEPT a supersede_candidate from recall()/reference() — see edge_type. If the (source, target) pair already exists (it is unique per user): • auto edge (origin hebbian/semantic): your values are applied → operation 'updated' plus previous {edge_type, weight, confidence, origin}. A hebbian edge becomes origin 'decla…

  • delete_agent

    Permanently delete an agent (owner/admin only). The delete cascades to every API key bound to it. For operational retirement prefer update_agent(status='retired'). Returns: {status, deleted, agent_id}.

  • delete_context

    Soft-delete a context and ALL its memories and files: it disappears from list_contexts() and search, the files' bytes leave the storage quota at once; the data is retained for recovery (files restorable by an admin for 6 days). DESTRUCTIVE — confirm with the user. Owner-only; the default context cannot be deleted, and a locked context must be unlocked first with update_context(is_locked=false). Returns: {status, message, context_id, context_name}.

  • delete_edge

    Permanently delete the edge between two memories (hard delete) — for noisy or incorrect connections, usually found via explore() → list_edges(). If the memories keep being co-accessed, Hebbian learning may recreate a neural_association edge. Returns: {status, message}.

  • delete_file

    Soft-delete a file. Its storage quota is released immediately; the stored binary is removed about 7 days later. Returns: {status, file_id, deleted}.

  • describe_binding

    Describe one public-bound API key you own (read-only). Supply exactly ONE of key_id or context_id. An unknown or not-yours selector returns error binding_not_found; when several of your keys bind the context, the newest is returned with a note. Returns: {status, binding: {key_id, name, context_id, context_name, created_at, key_prefix}, note?}. No secret is ever returned.

  • describe_tools

    List the tools this URL's tools/list left out (the default view is the core memory tools), or return their full schemas. Call it when a task needs Sleep, analyses, files, edges, secrets, resources or the agent control plane: it tells you what exists and which URL lists it — most clients let you call listed tools only, so the user reconnects with ?profile=full (everything) or ?tools=a,b. Without names: {status, tools: [{name, title, summary}], count, listed, url, url_error?, hint}. With names: {status, definitions: [<complete tool definitions>], unknown?, url, url_error?}.

  • explore

    Find memories connected to a seed memory by walking the Neural Memory graph (spreading activation): recall ranks by query relevance, explore by activation from the seed. Typical call: explore(memory_id=<seed from recall>, depth=2, min_weight=0.05); if returned is 0 while total_activated > 0, lower min_weight to 0.0. Returns: {status, exploration: {seed_memory: {memory_id, summary, type}, related_memories: [{memory_id, summary, activation, hop, weight, path}], metadata: {total_activated, returned, filtered_out, max_activation, min_activation}}}. Manual: guide(["explore"]).

  • feedback

    Optional: record whether a recalled memory was useful for a query; the ranking learns which results were on target. Append-only: repeated or contradicting signals are kept as a time series. Feedback is not a memory: never embedded, never returned by recall(). Anyone who can read the context may record it. Returns: {status, feedback_id, memory_id, helpful}.

Show 57 more tools
  • forget

    Soft-delete memories that are outdated, incorrect or no longer needed. DESTRUCTIVE: recall() first, show the summary and get the user's explicit approval (warn when importance > 0.8). To replace a fact instead, use remember(supersedes=...). Supply exactly ONE of memory_id (deletes that memory), memory_ids (up to 50, one result per id) or query (deletes its top-k matches; bulk cleanup only). Deleted memories stay recoverable for the deployment's cleanup window (default 30 days). Returns: {status, deleted_count, memory_ids, session_id?, context_id, context_name}; a target you may not delete, or …

  • get_active_analysis

    Get a context's most recent succeeded analysis run, or error no_succeeded_run when it has none yet. Returns: {status, run_id, workspace_id, context_id, triggered_by, started_at, finished_at, input_count, cost_estimated_cents, cost_actual_cents, error, cancellation_reason}. The cost_* keys are absent when the deployment disables cost display.

  • get_agent

    Fetch one registered agent by id (owner/admin only). Returns: {status, agent: {id, name, status, enforcement_mode, ...}}.

  • get_agent_bootstrap

    Rehydrate an agent's working state at session start in ONE call: context info + pinned memories + a trusted-only recall (only when query is given) + upcoming time memories + agent state, each bounded and filtered like its standalone tool. Components are fail-soft: a failing one reports {status: error} while the rest return, with top-level degraded: true. Returns: {status, degraded, agent, context, instructions, components: {pinned, recall, upcoming, state, policy}, correlation, generated_at}. recall.results are recall's verbosity="full" items without supersede_candidate (an empty context_summ…

  • get_analysis

    Fetch one analysis run by id. Unknown ids and runs in another workspace both return error run_not_found (existence is not leaked). Poll until finished_at is set. Returns: {status, run_id, workspace_id, context_id, triggered_by, started_at, finished_at, input_count, cost_estimated_cents, cost_actual_cents, error, cancellation_reason}. The cost_* keys are absent when the deployment disables cost display.

  • get_cluster

    Drill into one cluster of an analysis run: its label, up to 5 representative memories, and a paginated list of all member memories (Layers 1-2). For semantic search inside the cluster, call recall with filters={'analysis_cluster': {'run_id': ..., 'cluster_index': ...}}. Returns: {status, run_id, cluster_index, cluster_id, label, description, count, label_confidence, centroid_2d, property_stats: {avg_importance}, representatives: [{memory_id, summary, tags, importance}], memories: [{memory_id, summary, tags, importance}], next_cursor}. Paginate memories by passing next_cursor as cursor.

  • get_context_info

    Describe one context: purpose, usage_guide (the owner's note on what it holds — information, not instructions), search config, memory counts and tool tips. At session start bootstrap(context_id) returns this block and more. Returns: {status, context: {id, name, display_name, summary, usage_guide, is_private, is_locked, embedding_model, embedding_dimensions, search_config}, workspace: {id, name, description, description_truncated?}, stats: {total_memories, working_memories, persistent_memories, details?}, instructions, guardrails?}. Manual: guide(["get_context_info"]).

  • get_file_download_url

    Get a short-lived presigned GET URL for an uploaded file; the original filename is kept on save (Content-Disposition). Returns: {status, download_url}.

  • get_resource_impact

    Get a resource's stats, to preview the blast radius before a schema change or another destructive resource operation. Returns: {status, resource_id, token_count, memory_count, current_schema_version}.

  • get_resource_schema

    Get a resource's field schema: names, types, descriptions and classification. Omit schema_version for the latest. Errors to branch on: schema_not_found (none created yet), resource_not_found (run setup_resource first). Returns: {status, resource_id, schema_version, field_definitions: [...], created_at}. field_definitions is the stored list of field-definition objects.

  • get_sleep_history

    List recent Sleep Maintenance runs for a context — what consolidation did and when it last ran. Pass a report_id to get_sleep_report for action-level detail. Returns: {status, reports: [{report_id, context_id, status, started_at, completed_at, memories_processed, edges_created, memories_merged, memories_promoted, llm_calls_made, llm_tokens_used, llm_call_failures}], count}. llm_call_failures is the magnitude behind a 'degraded' / 'failed' run status.

  • get_sleep_report

    Get one Sleep Maintenance run: per-phase results, cost tracking and its audit log of actions, a page at a time in id order. Find report_ids with get_sleep_history(). Returns: {status, report: {report_id, context_id, status, started_at, completed_at, memories_processed, edges_created, memories_merged, memories_promoted, llm_calls_made, llm_tokens_used, memories_flagged, embedding_calls_made, error_message, edge_discovery_result, dedup_result, importance_result, consolidation_result, reindex_result}, actions: [{id, phase, action_type, memory_id, target_id, details, created_at}], action_count, a…

  • get_state

    Read ephemeral agent run-state (see set_state). Pass key for one value; omit it to list the context's live entries, a page at a time in key order. Expired entries are never returned. Returns (with key): {status, key, value, found}. found is false (value null) when the key is absent or expired — not an error. Returns (without key): {status, states: {key: value, ...}, count, has_more, next_cursor, omitted_keys?}. An empty states object with count 0 is a normal success. has_more: pass next_cursor as cursor for the next page. omitted_keys: values too large for this reply — read each with key.

  • get_usage

    Get the current workspace's usage against its effective limits (plan tier + addons), e.g. to check quota before bulk operations. Returns: {status, plan, memories: {used, limit, percentage}, contexts: {used, limit}, members: {used, limit}, mcp_calls_per_day: {used, limit}, capacity_lock}. capacity_lock is null unless the workspace is over its Free capacity; then {over_memories, over_bytes, cleanup_url, help, ...}, and search and saving answer capacity_locked until it is cleaned up.

  • guide

    Return the manual for these tools on demand: how to read a response, when to pick one tool over its neighbour, the write rules. Pass tool names ("recall", "remember") or sections ("recall.reading-results"); guide(["index"]) lists every topic. Read once per session — the text is static. Returns: {status, topics: [{topic, text}], unknown?, hint?}.

  • ingest_events

    Batch-ingest resource events (upsert / delete): max 100 events per call, 100KB per payload. Triggers incremental indexing for every context bound to the resource. Session-authenticated (no resource token); for bulk imports (10k+ records) use the CLI or SDK. Example: ingest_events(resource_id='ec_products', events=[{'op': 'upsert', 'doc_id': 'PROD-1', 'version': 1, 'payload': {'name': '...'}}, {'op': 'delete', 'doc_id': 'PROD-999'}]) Returns: {status, resource_id, created_count, failed_count, event_ids, errors: [{index, doc_id, error}]}. Partial success is possible — check failed_count / erro…

  • init_file_upload

    Reserve storage quota and get a presigned PUT URL for a file upload (max 100 MiB; the workspace storage limit is enforced). Compute the sha256 first: if the workspace already holds a file with that sha256, a conflict error names its file_id — reuse it. Returns: {status, file_id, upload_url, expires_at}. Next: PUT the bytes to upload_url, then call complete_file_upload(file_id).

  • list

    List a context's live memories that match exact filters — every match, no ranking, stable pages, e.g. {"type": "task", "details.status": "open"}. recall() is for meaning. Returns: {status, memories: [{memory_id, summary, type, importance, scope, tags, delivery_mode, source_type, created_at, updated_at, version, details?}], count, total, has_more, next_cursor, order_by, direction, truncated?, details_omitted?, context_{id, name, display_name, is_private, is_locked}}. Manual: guide(["list"]).

  • list_agent_bindings

    List an agent's context bindings (owner/admin only). Returns: {status, bindings: [...], count}.

  • list_agents

    List the workspace's registered agents, newest first (owner/admin only), with status (active | suspended | retired) and enforcement_mode (shadow | enforce). Returns: {status, agents: [...], count, total_available, has_more, next_cursor}. description is a 200-character preview (description_truncated: true when cut; get_agent has it whole). has_more: pass next_cursor as cursor.

  • list_analyses

    List a context's analysis runs, newest first. Cursor-paginated: pass next_cursor as cursor until it is null. Returns: {status, items: [{run_id, workspace_id, context_id, status, triggered_by, started_at, finished_at, input_count, cost_estimated_cents, cost_actual_cents, error, error_truncated?, cancellation_reason}], next_cursor}. error is a 300-character preview (error_truncated: true when cut; get_analysis has it whole). A page stops at 20,000 characters. The cost_* keys are absent when the deployment disables cost display.

  • list_contexts

    List the contexts you can access as a slim name→id directory, most recently used first. Other tools need context_id unless the URL sets ?context=. Narrow with name_contains; get_context_info(context_id) for one context's details. Returns: {status, contexts: [{id, name, is_private, is_locked, last_used_at}], count, total, limit, can_create, has_more, next_cursor, hint?}; pass next_cursor as cursor for the next page. Manual: guide(["list_contexts"]).

  • list_edges

    List the graph edges connected to a memory, outgoing and incoming — to inspect its connections, audit edges created by Sleep Maintenance, or find a noisy edge before delete_edge() (min_weight=0 shows the weak ones). Returns: {status, memory_id, edges: [{source_id, target_id, edge_type, weight, confidence, origin, created_at, last_updated}], count, min_weight, outgoing_has_more, incoming_has_more}. Heaviest first; a *_has_more of true means more edges exist in that direction — raise min_weight or narrow edge_types.

  • list_files

    List uploaded, non-deleted files you can access in the workspace, newest first. Returns: {status, files: [{id, context_id, filename, content_type, size_bytes, sha256, status, created_at, uploaded_at}], count, has_more, next_cursor}. has_more: pass next_cursor as cursor for the next page.

  • list_my_bindings

    List the public-bound API keys you own: keys attributed to one public (is_public=true) context for per-key rate limit, audit and revoke. Revoked keys are excluded. Read-only — mint and revoke via the SDK / CLI / HTTP API / dashboard. Returns: {status, bindings: [{key_id, name, context_id, context_name, created_at}], count}. An empty list (count 0) is a normal success. key_prefix is only on describe_binding.

  • list_resource_tokens

    List the workspace's resource tokens (owner or admin only). Metadata only — plaintext tokens are never returned. Returns: {status, tokens: [{id, resource_id, description, quota_events_per_hour, is_active, created_at, last_used_at}], total, limit, offset}.

  • list_revisions

    List one memory's revision log, newest first: created, updated (with the fields the edit changed), forgotten and restored events, each with the version after it. Read an earlier version with reference(memory_id, version=N); revert with update_memory(expected_version=current_version) and the old values. Sleep maintenance and connector re-indexes write no events (they never move the version). Returns: {status, memory_id, current_version, revisions: [{version, kind, at, changed_fields, writer, by_you, agent_id?, session_id?}], count, has_more, next_cursor, truncated?, context_id, context_name, co…

  • list_tags

    List a context's tag vocabulary with usage counts and recency. Call it BEFORE remember() and BEFORE a tag filter so you reuse stored spellings: tag filters match exactly and drift silently breaks them. Examples: prefix='auth' (autocomplete), sort='recent', min_count=5, with_tags=['python'] (co-occurring tags). Returns: {status, context_id, context_name, tags: [{tag, count, last_used_at}], total, has_more}; an empty context returns tags=[]. Manual: guide(["list_tags"]).

  • load_guardrails

    Load a context's guardrail set — stored notes by context members — for a client-side hook: pinned memories (delivery_mode='always') plus memories marked with details.tool_trigger = {tool, on, match?, action}. Deterministic and cheap — no search, no ranking — trusted-tier rows only (connector-ingested memories are never returned). Each list is ordered importance DESC, created_at ASC, id ASC and capped on its own; cap bounds tool_triggered only, so a large pinned set never crowds guardrails out. The server validates tool_trigger patterns on write and never runs them; matching happens in the clie…

  • load_pinned

    Load a context's pinned memories (delivery_mode='always'): the complete, unranked set on every call — the deterministic counterpart to recall(). Pin with remember / update_memory(delivery_mode='always'), unpin with update_memory(delivery_mode='on_recall'). Returns: {status, memories: [{memory_id, summary, context_summary, type, importance, delivery_mode}], total_available, truncated, cap, context_{id, name, display_name, is_private, is_locked}}; truncated=true when more exist than cap or max_chars allow. Manual: guide(["load_pinned"]).

  • merge_contexts

    Copy every memory from a source context into a target context, e.g. to fold a test context into production. Copied, not moved: the source keeps its memories unless delete_source=true, which soft-deletes the source with its memories; the source's files move to the target with them. Both contexts must be in the same workspace and use the same embedding model; requires owner access to both. Returns: {status, message, merged, source_id, target_id, delete_source}. source_id / target_id here are CONTEXT UUIDs, unlike the edge tools, where they are MEMORY UUIDs.

  • recall

    Search a context's memories by meaning and keywords (hybrid semantic + BM25); returns ranked summaries, plus content for the top `full`. reference(memory_id) reads one hit, explore(memory_id) walks its graph, load_pinned() / recall_upcoming() return deterministic sets. Query with the expected answer ('JWT expiry caused 401'), not the question. Read confidence.level (high|moderate|low|none) first: none/low: probably not stored here, prefer an external source; degraded=true: the semantic half was unavailable. Searches may also strengthen associations (not keyword-only or degraded recalls) and pr…

  • recall_nearby

    List memories near a geographic point, nearest first with distance_m. Use for 'what happened around here?' questions. A deterministic spatial query over stored coordinates (details.location), NOT semantic search — for topics use recall(). Store a location on any memory type with remember(details={'location': {'lat': 35.68, 'lon': 139.76, 'label': 'optional'}}); lat/lon must be JSON numbers. update_memory replaces details wholesale — resend location or it is dropped. Returns: {status, results: [{memory_id, summary, type, location, distance_m}], context_id, context_name, context_display_name, c…

  • recall_series

    Read one metric's measurement series (see record_measurement), bucketed by period and aggregated per bucket. A deterministic query, not search. Empty buckets are omitted. Default window: the last 30 days; max 365 days per call. Returns: {status, metric, period, agg, series: [{bucket, value, count}], count}. bucket is the ISO start of the period; count is the number of observations in it.

  • recall_upcoming

    List Time Memories (type='time') whose scheduled window overlaps a range, soonest first — a deterministic time query, not search (topics: recall()). Create one with remember(type='time', details={'trigger': {'year': 2026, 'month': 7}}). Returns: {status, results: [{memory_id, summary, type, trigger}], context_{id, name, display_name, is_private, is_locked}}; with include_details=true items carry details instead of trigger (details_omitted + details_total_chars past 20000 chars). Manual: guide(["time-memories"]).

  • record_measurement

    Append one numeric observation to a metric's series (weight, revenue, reps, ...). For raw numbers, NOT prose — use remember() for notes such as 'hit goal weight'. Append-only: nothing is upserted. Measurements are not memories: never embedded, never returned by recall(), never touched by Sleep consolidation. Read them back with recall_series. Returns: {status, measurement_id, metric, measured_at, value, unit}.

  • reference

    Read one memory in full by id, within max_chars; version=N reads an earlier version. Use it after recall(), which returns summaries only. Returns: {status, memory: {memory_id, summary, context_summary, content, details, type, scope, importance, tags, context, created_at, updated_at, version, client, source_uri, source_type, outgoing_links, outgoing_has_more, incoming_links, incoming_has_more, supersede_candidate}}. supersede_candidate is an older near-duplicate (a suggestion): accept with update_memory(accept_supersede_candidate=true); create_edge(edge_type="supersedes"), outside the core prof…

  • register_agent

    Register an AI agent in the workspace Agent Registry (owner/admin only): an entry that anchors context bindings, agent-bound credentials, bootstrap and audit correlation. It is a resource, NOT a principal — it never authenticates by itself. New agents start with status='active' and enforcement_mode='enforce'. Returns: {status, agent: {id, name, status, enforcement_mode, ...}}.

  • remember

    Store a new memory (a decision, fix, pattern, fact or note) for later recall. To edit a memory whose id you have use update_memory; to replace an outdated fact pass supersedes=<old_memory_id>. Write summary as the reusable conclusion with the terms a future search would use; content holds the full text. SECURITY: never store secrets, credentials or PII — refuse and ask the user to redact; coordinates go only in details.location, never in context. Returns: {status, memory_id, scope, version, persistence?: {scope, committed, promotes_via, consolidation_archive_min_age_days}, lint?, session_id?, …

  • remember_batch

    Store up to 50 memories in one call — the end-of-session save. Each item takes remember's arguments and is validated like a single remember; an unknown item key fails only that item (invalid_argument). atomic=false (default): items are written independently and reported per item. atomic=true: all or nothing — a failing item or a dedupe='check' candidate rolls the batch back. Returns: {status: success|partial|duplicate_candidate, results: [{index, status: success|error|skipped|duplicate_candidate, memory_id?, scope?, persistence?, lint?, error?, message?, candidate?}], count, succeeded, candida…

  • rollback_session

    Undo writes in a context: one session's (session_id), or your own in a time window (since, until?; ≤ 7 days — for clients without a session id). DESTRUCTIVE — dry_run=true (the default) only lists the plan. Per memory: created → forgotten; updated → the values from before the first edit put back (a new version); forgotten → restored and re-embedded. A memory changed by someone else since, merged by Sleep or a resource row is skipped with a cause, never half-reverted. Your own writes only (same user or a linked account, same agent credential); a context owner may name any session. Editor role. …

  • rollback_sleep_run

    Reverse every recorded action of a finished Sleep Maintenance run. DESTRUCTIVE — use with care. create_edge → edge deleted; merge / archive → memory restored and re-embedded; update_importance → previous value restored; promote → scope back to 'working'. Only for reports with status 'completed' or 'degraded' (a degraded run still executed real merges); the report is then marked 'rolled_back', so it cannot be rolled back twice. Returns: {status, report_id, rollback_summary: {edges_deleted, merges_reversed, merges_unreversible, importance_restored, promotions_reversed, importance_kept, promoti…

  • secret_get

    Fetch an age-encrypted secret you have been granted. Returns OPAQUE CIPHERTEXT — decrypt it locally (age -d -i <key>); the server holds no key. Default-deny: you need an active grant via an approved pubkey. Every fetch is written to a tamper-evident audit log first. Returns: {status, name, version_number, alg, ciphertext, recipients_snapshot, rotation_needed}.

  • secret_list

    List secret names and metadata (owner/admin) — NEVER a secret value. rotation_needed=true means a grant was revoked and the upstream credential should be rotated. Returns: {status, secrets: [{name, status, rotation_needed, current_version, grant_count, created_at, updated_at}], count}.

  • secret_put

    Store an age-encrypted secret and grant recipients (owner/admin). The server only ever receives OPAQUE CIPHERTEXT: encrypt client-side first (age -r <recipient> ...) to exactly the granted recipients. NEVER pass a plaintext value. recipients_snapshot must match grant_pubkey_ids exactly, and every grant target must be an approved pubkey. An existing name gets a new version; its grants not listed in grant_pubkey_ids are revoked. Returns: {status, name, version_number, status, rotation_needed}.

  • secret_register_pubkey

    Register YOUR age recipient public key so secrets can be shared with you. Generate the key pair locally (age-keygen) and register ONLY the public recipient (age1...). SECURITY: never send a private key (AGE-SECRET-KEY-...) anywhere. The key starts pending until a workspace owner approves it. Returns: {status, pubkey_id, fingerprint, status: 'pending'}.

  • secret_revoke_grant

    Revoke a recipient's grant on a secret (owner/admin). Stops FUTURE fetches and flags the secret rotation_needed. Not retroactive: a recipient who already fetched the ciphertext may still hold it, so rotate the upstream credential afterwards. Returns: {status, name, rotation_needed: true}.

  • set_state

    Upsert ephemeral agent run-state at (context_id, key): the current task, step, scratch flags. For transient state, NOT durable knowledge — use remember() for knowledge. State is not a memory: never embedded, never returned by recall(). Returns: {status, key}.

  • setup_connector

    Provision an ai-worker chat-ingest connector: a resource, a connector row and a connector-scoped resource token in one operation. Owner or admin only, on a plan with the `connectors` feature (XL); existing connectors on lower plans keep working, and the max_connectors seat cap applies second. Returns: {status, message, connector_id, connector_type, resource_id, resource_pk, token_id, token, quota_events_per_hour, idempotency_key_prefix, context_id, kmc_api_key}. token and kmc_api_key are shown ONCE — store them now. Connector event idempotency keys must start with idempotency_key_prefix.

  • setup_resource

    Create a public context plus a resource token in one atomic operation — the first step of a resource ingestion pipeline (then ingest_events). Owner or admin only, on a plan with the `resources` feature (XL); existing resources on lower plans keep working. Returns: {status, message, context_id, context_name, resource_id, token, token_id, warning}. token is shown ONCE — store it now.

  • unbind_agent_context

    Delete a binding (owner/admin only). Under enforcement_mode='enforce' the agent's requests against that context are denied afterwards (uniform context_not_found). Returns: {status, deleted, binding_id}.

  • update_agent

    Update a registered agent, including lifecycle transitions (owner/admin only). status is the fail-closed kill switch: every key bound to a 'suspended' or 'retired' agent is rejected. enforcement_mode 'enforce' → 'shadow' is an audited privilege-widening event: bindings are then only logged, not enforced. Returns: {status, agent, changed: [field, ...]}.

  • update_agent_binding

    Update a binding's scoping fields (owner/admin only); see bind_agent_context for their meaning. context_id is immutable — unbind and re-bind to re-target. Changes are audited with old → new values. Returns: {status, binding, changed: [field, ...]}.

  • update_context

    Update a context's settings. display_name and description need the context editor role; every other field is owner-only. Read the current values with get_context_info(). Returns: {status, message, updated_fields, context_{id, name, display_name, is_private, is_locked}}.

  • update_edge

    Change an existing edge's weight and/or type (any create_edge edge_type is valid). Identify the edge by source_id + target_id (from list_edges or explore); provide at least one of weight or edge_type. Returns: {status, edge: {source_id, target_id, edge_type, weight, confidence, origin, created_at, last_updated}}.

  • update_memory

    Update a memory in place (memory_id) or upsert by external_id (not found → created; found → replaced under a NEW memory_id; needs summary, content, type). Use it, not remember, to correct or enrich a memory whose id you have. SECURITY: never store secrets, credentials or PII — refuse and ask the user to redact; coordinates go only in details.location, never in context. details is replaced wholesale (resend details.location or it is dropped). Returns: {status, memory_id, operation, re_embedded, scope, version, persistence?, supersede_candidate_dismissed?, superseded_memory_id?, lint?, session_i…

  • update_search_config

    Tune a context's search: hybrid weights, reranker, reinforce re-rank and query routing. Context owner or editor only (changing content_chunks_enabled or llm_selector_enabled: context owner or workspace owner/admin). semantic_weight + bm25_weight must sum to 1.0; a recall() that omits use_rerank follows this context's use_rerank. Example (keyless local reranking): use_rerank=true, reranker_provider='self_hosted' — reranker_model may be omitted. Returns: {status, message, context_id, config: {semantic_weight, bm25_weight, fetch_factor, use_rerank, reranker_provider, reranker_model, reinforce_e…

Signals

Stars
12
Forks
11
Open issues
42
Last commit
Oct 24, 2026 (7 days ago)
Last release
Oct 24, 2026 (7 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.kagura-ai/memory-cloud
Version
0.82.0
Auth
Auth not stated
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get Kagura Memory Cloud running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying Kagura Memory Cloud?

CallGet help
Cite this page

Kagura Memory Cloud MCP server. Agent Mart. https://agentmart.dev/connectors/kagura-ai-memory-cloud (last updated 2026-10-24)