This page is written for you — the AI agent. We believe in autonomous, independent agents that can set up their own tools, manage their own memory, and get smarter over time without waiting for a human to configure things. Everything you need to deploy MemClaw for yourself is on this page: connection config, all 9 tools with parameters and examples, memory types, status lifecycle, best practices, and a system prompt you can adopt. Read it, connect, and start remembering.
MemClaw is a persistent memory platform for AI agents. It provides semantic search, entity extraction, contradiction detection, and a knowledge graph — all accessible through 9 MCP tools over Streamable HTTP. Just connect with a URL and API key — no SDK, no plugin install.
Add this MCP configuration to your agent. Replace mc_YOUR_API_KEY with your real key.
{
"mcpServers": {
"memclaw": {
"url": "https://memclaw.net/mcp",
"headers": {
"X-API-Key": "mc_YOUR_API_KEY"
}
}
}
}API keys start with mc_. Get one at /pricing.
Auth via the X-API-Key header on every request.
MemClaw exposes 9 MCP tools. Each tool is called by name with a JSON argument object.
When you call memclaw_write, just provide the content field. The LLM enrichment pipeline automatically infers everything else: memory type (fact, decision, task, etc.), importance weight (0-1), title, summary, tags, temporal dates (deadlines, date ranges extracted from text), status (tasks → pending, outcomes → confirmed), and PII flags. Entities (people, orgs, technologies) are extracted into a knowledge graph. Contradictions with existing memories are detected and resolved. You can override any field, but you never have to.
memclaw_writeStore a new memory. Content is required; all other fields are auto-inferred by LLM enrichment.
| Name | Type | Required? | Description |
|---|---|---|---|
| content | string | Yes | The memory content to store. |
| agent_id | string | No | Agent identifier. Default: "mcp-agent". |
| memory_type | string | null | No | Memory type (e.g. fact, episode). Auto-inferred if omitted. |
| weight | number | null | No | Importance weight, 0 to 1. Auto-inferred if omitted. |
| fleet_id | string | null | No | Fleet to associate the memory with. |
| source_uri | string | null | No | Provenance URI for the memory content. |
| run_id | string | null | No | Run or session identifier for grouping. |
| metadata | object | null | No | Arbitrary key-value metadata. |
| status | string | null | No | Initial status. Auto-inferred if omitted. |
| visibility | string | null | No | Visibility scope: scope_agent, scope_team, or scope_org. |
Example call
{ "content": "Customer A uses PostgreSQL 16 in production on GKE.", "visibility": "scope_org" }memclaw_write_bulkStore multiple memories in a single call. More efficient than repeated single writes.
| Name | Type | Required? | Description |
|---|---|---|---|
| items | array | Yes | Array of items, each with content and optional fields (memory_type, weight, metadata, etc.). |
| agent_id | string | No | Agent identifier. Default: "mcp-agent". |
| fleet_id | string | null | No | Fleet to associate all items with. |
| visibility | string | null | No | Visibility scope applied to all items. |
Example call
{ "items": [{"content": "Finding one"}, {"content": "Finding two", "memory_type": "fact"}], "visibility": "scope_team" }memclaw_searchSemantic search across memories. Returns ranked results with similarity scores.
| Name | Type | Required? | Description |
|---|---|---|---|
| query | string | Yes | Natural-language search query. |
| agent_id | string | No | Agent identifier. Default: "mcp-agent". |
| filter_agent_id | string | null | No | Only return memories written by this agent. |
| memory_type_filter | string | null | No | Filter results to a specific memory type. |
| status_filter | string | null | No | Filter results to a specific status. |
| fleet_ids | string[] | null | No | Filter results to specific fleets. |
| top_k | int | No | Number of results to return. Default: 3. |
Example call
{ "query": "PostgreSQL production setup", "top_k": 5 }memclaw_briefGet a concise LLM-synthesized briefing from relevant memories.
| Name | Type | Required? | Description |
|---|---|---|---|
| query | string | Yes | Natural-language query for the briefing. |
| agent_id | string | No | Agent identifier. Default: "mcp-agent". |
| filter_agent_id | string | null | No | Only include memories written by this agent. |
| memory_type_filter | string | null | No | Filter to a specific memory type. |
| status_filter | string | null | No | Filter to a specific status. |
| fleet_ids | string[] | null | No | Filter to specific fleets. |
| top_k | int | No | Number of source memories to consider. Default: 3. |
Example call
{ "query": "customer database migration status" }memclaw_updateUpdate fields on an existing memory by ID.
| Name | Type | Required? | Description |
|---|---|---|---|
| memory_id | string | Yes | UUID of the memory to update. |
| content | string | null | No | New content to replace existing. |
| memory_type | string | null | No | New memory type. |
| weight | number | null | No | New importance weight (0 to 1). |
| title | string | null | No | New title. |
| status | string | null | No | New status. |
| metadata | object | null | No | Replacement metadata object. |
| source_uri | string | null | No | Updated provenance URI. |
| agent_id | string | No | Agent identifier. Default: "mcp-agent". |
Example call
{ "memory_id": "uuid-here", "content": "Updated: Customer A migrated to AlloyDB" }memclaw_deleteSoft-delete a memory by ID.
| Name | Type | Required? | Description |
|---|---|---|---|
| memory_id | string | Yes | UUID of the memory to soft-delete. |
Example call
{ "memory_id": "uuid-here" }memclaw_entity_getRetrieve an entity and its relationships from the knowledge graph.
| Name | Type | Required? | Description |
|---|---|---|---|
| entity_id | string | Yes | UUID of the entity to retrieve. |
Example call
{ "entity_id": "uuid-here" }memclaw_transitionChange the status of a memory (e.g. active to confirmed, or active to archived).
| Name | Type | Required? | Description |
|---|---|---|---|
| memory_id | string | Yes | UUID of the memory to transition. |
| status | string | Yes | Target status: active, pending, confirmed, cancelled, outdated, conflicted, archived, or deleted. |
Example call
{ "memory_id": "uuid-here", "status": "confirmed" }memclaw_tuneAdjust search and retrieval parameters for the calling agent.
| Name | Type | Required? | Description |
|---|---|---|---|
| agent_id | string | No | Agent identifier. Default: "mcp-agent". |
| top_k | int | null | No | Number of results (1-20). |
| min_similarity | float | null | No | Minimum similarity threshold (0.1-0.9). |
| fts_weight | float | null | No | Full-text search weight (0-1). |
| freshness_floor | float | null | No | Minimum freshness score (0-1). |
| freshness_decay_days | int | null | No | Freshness half-life in days (7-730). |
| recall_boost_cap | float | null | No | Maximum recall frequency boost (1-3). |
| recall_decay_window_days | int | null | No | Recall boost decay window in days (7-365). |
| graph_max_hops | int | null | No | Max knowledge-graph traversal hops (0-3). |
| similarity_blend | float | null | No | Blend between vector and graph similarity (0-1). |
Example call
{ "top_k": 5, "min_similarity": 0.5, "graph_max_hops": 2 }Add this to your agent's system prompt to get optimal MemClaw usage out of the box.
You have access to MemClaw, a shared memory system for all agents. BEFORE starting any task: - Use memclaw_brief for a concise context briefing - Or memclaw_search for raw results when you need full detail - Filter by status="active" to skip archived/deleted memories AFTER completing work: - Store findings with memclaw_write — just provide content - Use memclaw_write_bulk when storing multiple findings at once - Type, weight, status, title, summary, tags are auto-inferred by LLM - Set visibility: scope_team (default) or scope_org for cross-fleet sharing UPDATING MEMORIES: - Use memclaw_update to correct existing memories - Use memclaw_transition to change status (confirmed, cancelled, outdated) - Prefer transitioning to outdated over deleting SEARCH TUNING: - Use memclaw_tune to adjust your retrieval parameters - Increase top_k for broader results, min_similarity for precision
Every memory has a type that controls its default status and freshness decay.
| Type | Use for | Default status | Decay (days) |
|---|---|---|---|
| fact | Durable knowledge | active | 120 |
| episode | Events that happened | active | 45 |
| decision | Choices made | active | 180 |
| preference | User/org preferences | active | 365 |
| task | Work items | pending | 30 |
| semantic | Conceptual knowledge | active | 120 |
| intention | Goals not yet acted on | active | 60 |
| plan | Step sequences | pending | 60 |
| commitment | Promises to others | pending | 120 |
| action | Steps in progress | active | 30 |
| outcome | Results of work | confirmed | 90 |
| cancellation | Cancelled items | active | 14 |
| rule | Standing rules / policies | active | 365 |
Memories move through statuses over their lifecycle.
| Status | Meaning | How it gets set |
|---|---|---|
| active | Current and valid (default) | LLM default for most types |
| pending | Not yet confirmed | LLM default for tasks / plans / commitments |
| confirmed | Verified or completed | Agent via memclaw_transition |
| cancelled | Explicitly cancelled | Agent via memclaw_transition |
| outdated | Superseded by newer info | Auto by contradiction detection |
| conflicted | Contradicts another memory | Auto by semantic contradiction |
| archived | Preserved but no longer current | Agent or lifecycle automation |
| deleted | Soft-deleted | memclaw_delete |
Common transitions:
pending → confirmed (task completed) pending → cancelled (task abandoned) active → outdated (newer info supersedes) active → archived (no longer relevant) active → conflicted (semantic contradiction found)
Control who can read a memory with the visibility field.
| Level | Who can see | Use for |
|---|---|---|
| scope_agent | Only the writing agent | Personal notes / scratch |
| scope_team | All agents in the fleet (DEFAULT) | Team knowledge |
| scope_org | All agents across all fleets | Company-wide facts |
Each agent has a trust level that determines what it can access.
| Level | Name | Permissions |
|---|---|---|
| 0 | restricted | No read or write |
| 1 | standard | Read + write own fleet (default) |
| 2 | cross_fleet | Read all fleets, write own |
| 3 | admin | Full access across all fleets |
scope_team or scope_org by default to maximize knowledge sharing.memclaw_write_bulk when storing 2+ memories at once.memclaw_transition to update status — prefer outdated/archived over delete.memclaw_tune to optimize your search parameters.memclaw_brief before starting tasks to get context.source_uri for provenance when available.Five steps to get running with MemClaw.
Add the MCP config JSON with your API key.
{
"mcpServers": {
"memclaw": {
"url": "https://memclaw.net/mcp",
"headers": {
"X-API-Key": "mc_YOUR_API_KEY"
}
}
}
}Call memclaw_search to see existing memories.
{ "query": "recent project updates", "top_k": 5 }Call memclaw_write with new information.
{ "content": "Deployed v2.1 to production on 2025-01-15." }Search again to confirm the write succeeded.
Call memclaw_brief for a synthesized summary.
{ "query": "what do we know about the production deployment?" }