Memlord
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEMLORD_PORT | No | Server port | 8000 |
| MEMLORD_DB_URL | No | PostgreSQL connection URL | postgresql+asyncpg://postgres:postgres@localhost/memlord |
| MEMLORD_BASE_URL | No | Public URL for OAuth | http://localhost:8000 |
| MEMLORD_OAUTH_JWT_SECRET | No | JWT signing secret | memlord-dev-secret-please-change |
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
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| store_memoryA | Save a new memory. Idempotent: returns existing if content already stored. name: human-readable name, unique within the workspace. workspace: name of the workspace to store into. Omit to store as a personal memory. force: skip near-duplicate check and store unconditionally. |
| retrieve_memoryA | Hybrid semantic + full-text search. Returns names + metadata only. Use get_memory(name=...) to fetch full content of a specific result. Pass workspace= to search only within a specific workspace. |
| recall_memoryA | Search memories by time expression + semantics. Returns names + metadata only. Examples: "last week", "yesterday", "about Python last month". Use get_memory(name=...) to fetch full content of a specific result. Pass workspace= to search only within a specific workspace. |
| get_memoryA | Fetch full content of a single memory by numeric ID. Use only when you already know the ID — e.g. after retrieve_memory() or recall_memory() which return IDs in their results alongside compact snippets. Do NOT use for search — use retrieve_memory() for semantic/text search or recall_memory() for time-based queries like 'last week'. |
| list_memoriesA | Browse all memories ordered by creation date (newest first). Returns full content (not snippets). Use to enumerate or audit without a specific query. |
| search_by_tagA | Find memories by exact tag match. Returns all results (no pagination). operation="AND" (default): memory must have ALL specified tags. operation="OR": memory must have AT LEAST ONE of the specified tags. Tags are case-insensitive. Use retrieve_memory() for semantic/text search or list_memories(tag=...) to browse a single tag with pagination. |
| delete_memoryA | Delete a memory by name. Pass workspace to disambiguate if the name exists in multiple workspaces. |
| update_memoryB | Update an existing memory identified by name. Only provided fields are changed. new_name: rename the memory to this name. workspace: disambiguate if the name exists in multiple workspaces. |
| move_memoryA | Move a memory to a different to_workspace. name: name of the memory to move. workspace: name of the target workspace (must be a member with write access). from_workspace: disambiguate source if the name exists in multiple workspaces. |
| list_workspacesA | List all workspaces you are a member of (personal + shared). |
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 10 tools
The CRUD and workspace tools are clearly separated, but the three search tools (retrieve_memory, recall_memory, search_by_tag) plus list_memories create moderate overlap. The descriptions provide enough guidance to avoid frequent misselection.
Most tools follow a consistent verb_noun pattern like store_memory, get_memory, update_memory, and delete_memory. However, search_by_tag breaks the pattern, and list_memories/list_workspaces use plural nouns, causing minor inconsistency.
Ten tools is well-scoped for a memory server, covering CRUD, multiple retrieval modes, tag search, and workspace management. Each tool has a clear role without significant redundancy.
The core memory lifecycle is well covered: store, retrieve, get, update, delete, and move. A minor gap is that get_memory requires an ID by name is not directly available, so users must list or search first to find the ID.