[1] add
Send the raw text.
Documents, chat turns, notes. One call stores the source and asks the extractor for facts.
POST /v1/add
{ "content": "..." } memory for ai agents
thin-memory turns raw text into durable facts, keeps them in isolated containers,
and returns a ranked context block whenever your agent asks. It runs on Cloudflare's
edge with managed models — one tmk_ key, no vector database, no BYOK.
25 adds / 500 searches / 10 extractions per month · no card · key in one request
container user_amanda plan free facts 38 / documents 4 > what does amanda prefer? 0.91 rust for services, typescript for the ui 0.88 picks mongodb atlas over postgres 0.84 leads design at a 12-person studio in lisbon 0.71 ships on fridays, async reviews only 4 of 38 facts / 41 ms
An agent forgets everything the moment the context window closes.
thin-memory is the smallest useful fix: one API that accepts text, extracts the durable facts with managed models, stores them next to their embeddings, and serves them back scoped, ranked and token-aware.
It is deliberately thin. No pipeline to operate, no embedding provider to choose, no vector cluster to size. D1 for facts, Vectorize for the vectors, Workers AI for the embeddings. You bring an agent and a key.
raw text / documents / chat
|
v
+--------------------------+
| extract facts | managed models
+--------------------------+
|
v
+--------------------------+
| embed + store | workers ai / d1 / vectorize
+--------------------------+
|
v
+--------------------------+
| recall + rank | container-scoped
+--------------------------+
|
v
context block -> your agent [1] add
Documents, chat turns, notes. One call stores the source and asks the extractor for facts.
POST /v1/add
{ "content": "..." } [2] learn
Managed extraction returns short, self-contained statements. Each one is embedded and indexed in your container.
- amanda leads design in lisbon - prefers rust for services - chose atlas over postgres
[3] recall
Search returns ranked facts and documents. Profile returns the stable block an agent should read first.
GET /v1/profile -> 41-token context block
Every add returns what the extractor kept. Search hits short statements, not four kilobytes of chat.
Each key is pinned to one container tag. Hydration filters on it, so a prompt bug cannot leak another user's memory.
Five MCP tools over streamable HTTP for Claude, Cursor and OpenCode. Plain JSON for everything else.
Workers, D1 and Vectorize. No region picker, no cluster to warm, no cold index to explain to your users.
Monthly counters, honest 429s and an upgrade URL. Free by default, Pro when your agent remembers too much.
Embeddings and extraction are managed. Your only credential is a tmk_ key — not an OpenAI bill.
Point your client at the MCP endpoint. Keep the key.
The server exposes add_memory, search_memory,
context, list_memories and delete_memory.
Streamable HTTP, stateless, no session to keep alive.
Prefer plain HTTP? The API reference covers the six REST calls and the exact error shapes.
{
"mcpServers": {
"memory": {
"url": "https://thin-memory.parithosh.workers.dev/mcp",
"headers": { "Authorization": "Bearer tmk_..." }
}
}
} replace tmk_... with the key from /claim
| per month | free | pro |
|---|---|---|
| adds | 25 | 50,000 |
| searches | 500 | 200,000 |
| managed extractions | 10 | 10,000 |
| price | $0 | $19 / mo |
Give it somewhere to put what matters. Free keys are free forever — sign in with a verified email at /claim to mint one. Pro is $19 a month when you need the room.