A complete memory layer: store, search, link, track, isolate, and integrate. Built for developers who want their agents to compound knowledge over time.
Six primitives that cover the full memory lifecycle. Each one is production-tested.
Save memories with tags and domains. Every memory is auto-indexed for full-text and semantic search the moment it lands. No manual curation required.
Three modes: full-text (BM25 ranking), semantic (OpenAI embeddings), and hybrid (reciprocal rank fusion of both). Find by keyword or meaning.
Connect memories with typed relationships: relates_to, refines, contradicts, supports, implements, derived_from. Graph traversal at depth 1-2.
Session-level task management: create, update, and list tasks. Monthly usage tracking and token savings estimation so you know exactly what memory is worth.
Multi-tenant with API key authentication. Domain separation within tenants. Tier-based rate limits and memory caps. Your data never touches another user's.
MCP native for Claude Desktop, Claude Code, and Cursor. REST API for GPT, Gemini, and custom agents. Code examples in Python, JavaScript, and curl.
Install @echo-memory/mcp and your AI gets these tools automatically.
Every feature is accessible over HTTP. Use it from any language, any framework, any agent.
MCP for Claude-native apps. REST for everything else. Code examples for the fastest path to production.
{
"mcpServers": {
"echo-memory": {
"command": "npx",
"args": [
"@echo-memory/mcp"
],
"env": {
"ECHO_API_KEY": "echo_sk_..."
}
}
}
}
# Store a memory
curl -X POST \
https://echo-memory.fly.dev/api/v1/memories \
-H "Authorization: Bearer echo_sk_..." \
-H "Content-Type: application/json" \
-d '{
"content": "Ship v2 by Friday",
"tags": ["sprint", "deadline"]
}'
# Search memories
curl \
"https://echo-memory.fly.dev/api/v1/memories/search?q=deadline" \
-H "Authorization: Bearer echo_sk_..."
import requests
API = "https://echo-memory.fly.dev/api/v1"
headers = {"X-API-Key": "echo_sk_..."}
# Store
requests.post(f"{API}/memories", json={
"content": "Ship v2 by Friday",
"tags": ["sprint"]
}, headers=headers)
# Search
r = requests.get(f"{API}/memories/search",
params={"query": "deadline"},
headers=headers)
print(r.json()["data"])
One memory layer, every AI tool you use.
Free tier. No credit card. Five minutes to first API call.
Questions? Want beta access? Reach out directly. We set up every beta tester personally.