1 · Remember
nlqdb_remember({
category: "user_preference",
content: "prefers concise replies",
user_id: "u_412"
}) → { id: 4129, ok: true }
The row lands in agent_memory — typed columns, not
an opaque vector blob.
GROUP BY.
Give your agent a real database as its memory — typed rows it writes as it learns, queried in English. Not the top-k a vector store returns.
Anonymous — no sign-in. Your DB lives 72h; sign in (always free) to keep it.
Install in your agent.
If Cursor didn't open, paste this config manually:
If VS Code didn't open, paste this config manually:
Run in your terminal.
claude mcp add --transport http nlqdb https://mcp.nlqdb.com/mcpAdd to ~/.codex/config.toml.
[mcp_servers.nlqdb]
url = "https://mcp.nlqdb.com/mcp"Settings → Connectors → Add custom connector — paste the URL.
{
"mcpServers": {
"nlqdb": {
"url": "https://mcp.nlqdb.com/mcp"
}
}
}Cascade → MCPs → Configure, or ~/.codeium/windsurf/mcp_config.json.
{
"mcpServers": {
"nlqdb": {
"serverUrl": "https://mcp.nlqdb.com/mcp"
}
}
}Agent Panel → Add Custom Server, or ~/.config/zed/settings.json.
{
"context_servers": {
"nlqdb": {
"url": "https://mcp.nlqdb.com/mcp"
}
}
}
Anonymous — the configs ship with the
pk_live_REPLACE_ME placeholder.
Sign in (free) to inline your live key →
Two MCP tools. One database.
Over MCP your agent calls
nlqdb_remember to write
a typed row, then
nlqdb_query to ask in
English. nlqdb compiles the question to SQL through a typed-plan
trust boundary and runs it on Postgres.
1 · Remember
nlqdb_remember({
category: "user_preference",
content: "prefers concise replies",
user_id: "u_412"
}) → { id: 4129, ok: true }
The row lands in agent_memory — typed columns, not
an opaque vector blob.
2 · Recall
nlqdb_query({
q: "feedback per user, ranked by count this month"
}) Compiled SQL (the exact statement nlqdb ran):
SELECT user_id, COUNT(*) AS feedback
FROM agent_memory
WHERE category = 'user_preference'
AND created_at >= date_trunc('month', now())
GROUP BY user_id
ORDER BY feedback DESC; 3 · The answer — one GROUP BY
| user_id | feedback |
|---|---|
| u_412 | 14 |
| u_207 | 9 |
| u_388 | 6 |
| u_104 | 4 |
| u_551 | 2 |
Rendered from a fixture through the same typed-plan compile path the product runs — server-rendered so it stays crawlable and works with no JS. Numbers are illustrative.
| Capability | Mem0 | Zep | Letta | nlqdb |
|---|---|---|---|---|
| Remember a fact ("Alice has a $50k deal") Storing a fact is table stakes — every memory layer does this. | ||||
| Recall facts by similarity / relevance Mem0/Zep/Letta rank by hybrid/semantic search; nlqdb recalls via SQL filters (embedding hybrid still E-05). | ||||
| Top-N by value ("top 5 deals by size") Needs ORDER BY + LIMIT over the full set, not a top-k similarity search. | ||||
| Aggregate per group ("average deal size per stage") A vector/graph store returns matches; the LLM would have to do the arithmetic. nlqdb runs GROUP BY in Postgres. | ||||
| Time-window analytics ("deals closing this month") Mem0/Zep can filter or point-in-time-recall by time; neither aggregates across a window. | ||||
| Full GROUP BY / JOIN / HAVING over memory The core wedge: a real query planner over the agent's own data. | ||||
| Agent designs its own schema nlqdb provisions Postgres from the agent's first goal; the others impose a fixed memory shape (Graphiti custom entity types ≠ agent-designed tables). | ||||
| Diff preview before destructive writes DDL/DML is previewed and confirmed before it applies (GLOBAL trust-UX). | ||||
| Self-hostable Mem0/Letta are Apache-2.0 self-hostable; Zep self-hosts Graphiti but the platform is hosted; nlqdb is FSL source-available (GLOBAL-019), container pull-forward still WS-11. |
nlqdb_query(…)
nlqdb is a hosted MCP server. Add it to Claude, Cursor, Codex, or any MCP host — OAuth opens in your browser on the first tool call, no key wired up front. No browser in the loop? Run the same server locally with a key.
1 · Paste the connector URL
Into your host’s MCP config — Claude Desktop, Cursor, Codex, Zed, Windsurf.
{
"mcpServers": {
"nlqdb": {
"url": "https://mcp.nlqdb.com/mcp"
}
}
} Or: one command (Claude Code)
One line adds the hosted server; one-click installs for Cursor, VS Code, and more on integrations.
claude mcp add --transport http nlqdb https://mcp.nlqdb.com/mcp
Full MCP setup →
Or: no browser at run time (headless agents, CI)
The hosted route ends on an OAuth consent screen, so an agent
running in CI or on a server can’t finish it. Run the same
MCP server locally instead — same five tools, authenticated by a
key instead of a consent click. Mint an sk_mcp_ MCP
key once at API keys (one signed-in
visit) — scoped to MCP, revocable on its own — paste
it in, and no browser opens again.
{
"mcpServers": {
"nlqdb": {
"command": "npx",
"args": [
"-y",
"@nlqdb/mcp"
],
"env": {
"NLQDB_API_KEY": "sk_mcp_REPLACE_ME"
}
}
}
} See the side-by-side comparisons or the manifesto.
The error has been recorded. Reload to recover; if it persists, sign out and back in.