We'll email you a sign-in link. Plans start at €5 a month; you choose one after signing in.
Remember we picked Postgres for billing.
- decisions
- notes
- bug-triage
One entry in your MCP config
Create an API key on the website, put it in an environment variable, and point your agent at the server. There's nothing to install and nothing to run.
{
"mcpServers": {
"databased": {
"type": "http",
"url": "https://databasedmcp.com/mcp",
"headers": {
"Authorization": "Bearer ${DATABASED_API_KEY}"
}
}
}
}
Codex
[mcp_servers.databased] url = "https://databasedmcp.com/mcp" bearer_token_env_var = "DATABASED_API_KEY"
opencode
"oauth": false stops opencode trying OAuth first; databasedmcp uses API keys.
{
"mcp": {
"databased": {
"type": "remote",
"url": "https://databasedmcp.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer {env:DATABASED_API_KEY}"
}
}
}
}
Any other MCP client that speaks streamable HTTP and can send a bearer token works the same way.
Then say what to keep
You don't design a schema. Tell your agent what's worth keeping and it picks a database, or creates one from a template, and reads the database's guide to learn how the other agents use it.
Keep track of what you learn about this repo in databasedmcp, and check it before you start next time.
- list_databases → nothing that fits yet
- create_database { name: "acme-api", template: "project" }
- get_database → schema, and a guide: how to claim tasks, record decisions, hand off
- execute INSERT INTO memory (kind, title, author) VALUES ('decision', 'Postgres for billing, not SQLite', 'worker-7f3a')
Add one line to CLAUDE.md naming the database, and the next session, or another agent running beside this one, starts with get_database and reads the same rows.
Rows you can read
It's plain SQLite. This is the memory table of the project template, a day into a repo:
| id | kind | title | author | created_at |
|---|---|---|---|---|
| 14 | decision | Postgres for billing, not SQLite | worker-7f3a | 2026-10-29 09:12:40 |
| 15 | convention | Run npm test before every commit | lead-01c2 | 2026-10-29 09:20:03 |
| 16 | finding | Stripe webhooks can arrive out of order | worker-7f3a | 2026-10-29 11:47:18 |
| 17 | question | Keep the v1 API until December? | worker-b9e0 | 2026-10-29 14:05:51 |
| 18 | handoff | Webhook retries half done, see task 9 | worker-b9e0 | 2026-10-29 17:33:26 |
You can open every database on the website, page through its rows and run read-only SQL. Templates start you off: project for agents sharing a repo, notes for a searchable knowledge base, log for runs and evals, learnings for errors and the fixes that worked. Agents can change any of them afterwards.
Two agents, one task, one winner
When several agents share a repo, the project template gives them a task board. Claiming a task is one UPDATE with expect_changes: 1. If another agent got there first, the write changes nothing and fails loudly, so the second agent moves on instead of doing the same work twice.
execute UPDATE tasks SET status = 'doing', owner = 'worker-b9e0' … WHERE id = 9 …
expect_changes: 1
[conflict] Expected 1 changed row, got 0, so nothing was applied. The rows didn't match the WHERE clause: re-read them before retrying.
Tasks also carry leases, dependencies and the paths each one writes, so two agents don't edit the same files.
Secrets bounce off
Agents are told never to store credentials, and the server checks every write anyway. A write containing an AWS, GitHub, Stripe, Slack, Google, OpenAI or Anthropic key, a private key, a JWT or a password in a URL is rejected before it reaches the database, and nothing of it is logged. The agent gets this back and stores where the secret lives instead:
[secret_detected] params[1] looks like a secret (Stripe secret key). Secrets must not be stored in databasedmcp; store a reference instead (e.g. the name of the environment variable that holds it).
It catches known formats, not every secret, so it's a guardrail rather than a guarantee.
Plans
Every plan has every feature. Limits are for your whole account, shared across its databases. Prices are monthly, in euros.
| Starter | Pro | Team | |
|---|---|---|---|
| Per month | €5 | €10 | €20 |
| Active databases | 10 | 30 | 100 |
| Tool calls a month | 100,000 | 300,000 | 600,000 |
| Rows written a month | 200,000 | 600,000 | 1,200,000 |
| Storage | 100 MB | 300 MB | 1 GB |
| People | 1 | 3 | 10 |
A database is active if something wrote to it in the last 14 days. Older ones stay readable and don't count. At a limit, calls stop with an error that names the limit; there are no overage charges.
Questions
Is there a free plan?
No. Signing in is free, and an agent can connect and read without a plan, but writing needs one. The cheapest is Starter at €5 a month.
Where is my data?
On Cloudflare. Each database is its own SQLite database in a Durable Object, and accounts and keys are in D1. We don't offer a choice of region or EU data residency yet.
What happens if I cancel?
Your account becomes read-only. Your agents can still read and delete their databases, and you can still browse them on the website. Cancelling doesn't delete anything.
Who can see my databases?
The people you invite to your account and the agents using its API keys. Everyone on an account sees all of its databases. Keys are shown once, stored hashed, and stop working on the next call after you delete them.