https://polymnemo.purpleground-26f6d744.westus2.azurecontainerapps.io/mcp ↗
Shared cross-LLM long-term memory over MCP: semantic recall, sessions, and media (pgvector).
polymnemo is a remote MCP server published at polymnemo.purpleground-26f6d744.westus2.azurecontainerapps.io. It has been probed 6 times since 9/12/2026. It answered in 6 of them (100.0%), a near-uninterrupted record. Median response time is 696 ms, a delay an agent will notice. It offers a narrow, focused set of 12 tools. On the protocol side it speaks the 2026-07-28 stateless spec.
Can an LLM agent pick the right tool here — names, descriptions and parameter clarity are assessed.
remember — Parameters 'namespace', 'tags', 'source' have undefined typesrecall — Parameter 'cursor' has undefined typelist_memories — Parameter 'cursor' has undefined typecreate_upload — Parameter 'namespace' has undefined typeconfirm_upload — No explicit error handling for invalid 'id'get_memory — No documentation for handling non-existent 'id'Risk: low
tools/list structure, inputSchema validity, and a functional smoke test — the components of the 0-100 score.
Tools the server advertised in the latest measurement — measured, not catalog-claimed.
pingHealth / connectivity check. Returns server identity plus the active pluggable layers, so a client (or MCP Inspector) can confirm the connection and see how the server is wired.
rememberStore a memory for later semantic recall. Large content is split into smaller chunks on write (one vector each), so this may create several ids. `namespace` groups memories (defaults to the shared namespace); `tags`/`source` are optional metadata. Returns `{ids, chunks, namespace}`.
contentstringrequirednamespacetagssourcerecallSearch memories by meaning and return the closest matches. Results are ranked by similarity and bounded by `limit` (default 8). Use the returned `next_cursor` with `has_more` to page further — you decide whether the results are enough. `namespace` selects the collection (defaults to the shared namespace). Returns `{items, total, has_more, next_cursor}`.
querystringrequirednamespacelimitintegercursorlist_memoriesList stored memories newest-first (no search query). `namespace` selects the collection (defaults to the shared namespace). Page with `next_cursor` / `has_more`. Returns `{items, total, has_more, next_cursor}`.
namespacelimitintegercursorget_memoryFetch a single memory by its id (from `remember`/`recall`/`list_memories`).
idstringrequiredupdateReplace a memory's content (re-embeds it). Returns the updated memory.
idstringrequiredcontentstringrequiredforgetDelete a memory by id. Returns `{id, deleted}` (deleted=false if absent).
idstringrequiredsave_sessionPersist a session's full content under `session_id` for later reload. Content is stored as ordered, losslessly-reassemblable chunks (also embedded, so it's searchable via `recall`). Re-saving the same `session_id` replaces it. Returns `{session_id, chunks, chars, namespace}`.
session_idstringrequiredcontentstringrequirednamespaceload_sessionReload a saved session's content, one character page at a time. Page with `page` (0-based) while `has_more` is true. Returns `{session_id, content, page, page_size, total_chars, has_more}`.
session_idstringrequiredpageintegerpage_sizeintegercreate_uploadRegister a file / image / video memory and get a URL to upload its bytes. The bytes never go through this channel: `description` is embedded so the file is findable via `recall`. **PUT** the raw bytes to `upload_url` sending `upload_headers` (the signed Content-Type). **Then call `confirm_upload`** — the memory stays hidden from `recall` (and the size cap is enforced) until you do. Media defaults to a private namespace. Returns `{memory_id, object_key, upload_url, upload_headers, content_type, namespace}`.
filenamestringrequiredcontent_typestringrequireddescriptionstringrequirednamespaceconfirm_uploadConfirm a media upload after you've PUT the bytes. Verifies the object exists, records its real size + checksum (and rejects an over-limit upload), then makes the memory findable via `recall` / downloadable. `id` is from `create_upload`. Returns `{memory_id, confirmed, size_bytes, content_type}`.
idstringrequiredget_download_urlGet a short-lived URL to download a media memory's bytes. `id` is the media memory's id (from `create_upload` / `recall`). Returns `{memory_id, url, content_type}`.
idstringrequiredDerived by comparing consecutive probes — changes in era, protocol version, build and reachability.
Add this badge to your README — it updates automatically as measurements change.
[](https://mcpmetrics.io/servers/io-github-pcbz-polymnemo)<a href="https://mcpmetrics.io/servers/io-github-pcbz-polymnemo"><img src="https://mcpmetrics.io/badge/io.github.PCBZ/polymnemo/era.svg" alt="mcpmetrics"></a>You are seeing the last 7 days. Sign up for the full history. Which check failed and why is in the dashboard.
Sign up free to seeThe catalog entries whose name and description are closest to this one, found with the same index the search box uses.
Shared long-term memory for AI agents: save and recall context as a searchable knowledge graph.
Solves memory loss for AI agents operating across multiple calls. Store, recall and audit long-term memory with AES-256 encryption. Includes SHA256 deletion audit proof. x402 USDC pay-per-call. Japanese language support included.
Cross-LLM persistent memory: store context once, recall it from any AI model.
Persistent memory API and MCP server for AI agents and workflows. Store, search, and retrieve memories with semantic search across Claude, ChatGPT, n8n, Zapier, Dify, and more. Built for developers who need reliable, long-term context for their AI applications.
Persistent semantic memory storage, associative recall, and recent memory index by namespace.
InfoLang semantic memory MCP — investigate, memorize, and recall compressed agent context.
| Run | Era | Modern | ms | Legacy | ms | Versions |
|---|---|---|---|---|---|---|
| 2026-09-13 01:33:33 | Dual-era | 200 | 580 | 200 | 637 | 2026-07-28 |
| 2026-09-12 23:31:36 | Dual-era | 200 | 581 | 200 | 586 | 2026-07-28 |
| 2026-09-12 21:29:15 | Dual-era | 200 | 9682 | 200 | 9683 | 2026-07-28 |
| 2026-09-12 19:27:29 | Dual-era | 200 | 710 | 200 | 693 | 2026-07-28 |
| 2026-09-12 17:24:09 | Dual-era | 200 | 800 | 200 | 800 | 2026-07-28 |
| 2026-09-12 15:21:42 | Dual-era | 200 | 679 | 200 | 696 | 2026-07-28 |
Each block is one measurement round. Green: working response. Amber: responded but the server was returning errors (5xx). Red: no response at all.
Each cell is one probe run. Faded cells are incomplete probes — one leg did not answer, so the era is inconclusive.
The two probe legs separately: modern server/discover and legacy initialize.
Comments
Sign in to write a comment
No comments yet. Be the first.