Memstate AI - Agent Memory System
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEMSTATE_API_KEY | Yes | API key from memstate.ai/dashboard | |
| MEMSTATE_MCP_URL | No | Override for self-hosted deployments | https://mcp.memstate.ai |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| memstate_deleteA | Soft-delete a memory by keypath. Creates a tombstone version preserving full history. The memory can be un-deleted by setting a new value at the same keypath. USE THIS WHEN: You need to remove outdated or incorrect memories, clean up a keypath subtree, or mark memories as no longer relevant. NOT FOR: Updating content (use memstate_set or memstate_remember to overwrite with new content instead). memstate_delete(project_id="myapp", keypath="config.old_setting") memstate_delete(project_id="myapp", keypath="config", recursive=true) → deletes config and all children History is preserved. Use memstate_history to see the deletion in the version chain. Keypath is auto-prefixed. |
| memstate_delete_projectA | Soft-delete an entire project and all its memories. Creates tombstone versions for every memory, preserving full history. The project is hidden from listings but can be restored by creating a new project with the same ID. USE THIS WHEN: You want to remove all memories for a project, e.g. cleaning up test data or decommissioning a project. memstate_delete_project(project_id="old-project") All memories get individual tombstone versions. History is preserved via memstate_history. |
| memstate_getA | Browse and retrieve memories. Use BEFORE starting tasks to fetch existing knowledge. USE THIS WHEN: You need to read what's already stored — list projects, browse a project tree, or get content at a keypath. NOT FOR: Saving new content (use memstate_remember for markdown/summaries, memstate_set for one keypath value). memstate_get() → list all projects memstate_get(project_id="myapp") → full project tree memstate_get(project_id="myapp", keypath="database") → subtree memstate_get(project_id="myapp", keypath="db", include_content=true) → with full content memstate_get(memory_id="mem_abc123") → single memory by ID Keypath is auto-prefixed. Default recursive=true. |
| memstate_historyA | View version history for a keypath or memory chain. Use when you need to see how a value changed over time. USE THIS WHEN: Debugging past state, auditing changes, or recovering a previous value. NOT FOR: Reading current content (use memstate_get) or saving (use memstate_remember or memstate_set). memstate_history(project_id="myapp", keypath="config.database.port") memstate_history(memory_id="mem_abc123") Returns all versions with timestamps; latest is marked is_latest=true. |
| memstate_rememberA | Save markdown, task summaries, or any text. Server extracts keypaths and creates structured memories automatically. This is the PREFERRED way to save information. USE THIS WHEN: Saving task summaries, meeting notes, docs, or any text with multiple facts. The server handles organization, conflict detection, and versioning. NOT FOR: Setting one specific keypath to a short value (e.g. config.port = "8080") — use memstate_set for that. memstate_remember(project_id="myapp", content="## Task Summary\n- Added OAuth\n- Files: auth.go, middleware.go", source="agent") memstate_remember(project_id="myapp", content="Architecture decision: migrated to JWT tokens for session management") Content limit: 100,000 chars. Processing is async (~15-18s); returns job_id immediately. |
| memstate_searchA | Find memories by meaning (semantic search). Use BEFORE starting tasks when you don't know the exact keypath. USE THIS WHEN: You want to find relevant memories by topic or meaning, not by exact keypath. NOT FOR: Saving content (use memstate_remember for markdown/summaries, memstate_set for one keypath value). memstate_search(query="how is authentication configured", project_id="myapp") memstate_search(query="database connection settings", project_id="myapp") Returns summaries with similarity scores. Use memstate_get(memory_id="...") to fetch full content of a result. |
| memstate_setA | Set one keypath to a short value. Only for simple key=value facts like config, status, or version numbers. USE THIS WHEN: You need to store ONE specific value at a known keypath (e.g. a port number, a status flag, a version string). NOT FOR: Task summaries, markdown, or text with multiple facts — use memstate_remember instead. memstate_set(project_id="myapp", keypath="config.database.port", value="5432") memstate_set(project_id="myapp", keypath="status.deployment", value="production") memstate_set(project_id="myapp", keypath="version.current", value="2.1.0") Value limit: 2,000 chars. If longer, use memstate_remember instead. Keypath is auto-prefixed. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose with minimal overlap. The descriptions explicitly differentiate tools (e.g., memstate_remember vs. memstate_set, memstate_get vs. memstate_search) and include 'USE THIS WHEN' and 'NOT FOR' sections that prevent confusion. The tools cover different aspects of memory management without redundancy.
All tools follow a consistent 'memstate_verb' naming pattern (e.g., memstate_delete, memstate_get, memstate_search). This uniformity makes it easy to identify the server's tools and their functions at a glance, with no deviations in style or structure across the set.
With 7 tools, the server is well-scoped for an agent memory system. Each tool serves a specific, necessary function (e.g., create, read, update, delete, search, history, project management), and there are no extraneous tools. The count aligns with the domain's complexity without being overwhelming or insufficient.
The tool set provides comprehensive coverage for memory management, including CRUD operations (memstate_remember/set for create/update, memstate_get for read, memstate_delete for delete), search (memstate_search), version history (memstate_history), and project-level management (memstate_delete_project). There are no obvious gaps; agents can handle full memory lifecycles and workflows effectively.