Early access
Every database you have, one map.
Claude reads your PostgreSQL, MySQL, MariaDB, SQL Server, Oracle and SQLite through an agent inside your network: the schema first, then one read-only SELECT at a time, with personal values masked before they leave your machines. No port is opened and no connection string leaves.
Sign-ups are by invitation while the product is in early access.
$ strata login$ strata connect add postgres --name crm --environment prod$ strata reflect crm$ strata mcp --install claude-desktop
Read-only, three walls deep
A role the agent proves cannot write before it keeps the connection; a guard that admits one SELECT and nothing else; a read-only transaction with a timeout and 500 rows a page at most.
Personal values masked at the source
A column tagged personal or sensitive, or named like one from the first day, is masked on the agent before the answer leaves your network, unless your role may see it.
Schemas, not data, make the map
Reflection reads the catalog alone: names, types, keys and comments. The map is kept on the agent and in your workspace; no row is ever stored.
Two ways in
On your machine
strata mcp --install claude-desktop hands the agent to Claude Desktop, Claude Code or Cursor on the same machine. The answers stay on it.
From claude.ai, on the web or a phone
Add your workspace as a connector and sign in, with the agent running strata serve inside your network. Each call goes through the service to it, decided by your role at both ends; the agent still holds every key.
A console for your team


Sources and their proof
Each database with the proof that its role cannot write, its schema as the last reflection read it, and a way to reflect it again.
Proposals
Tags Claude suggests for the map wait for a person. Keep or skip each one, then apply: masking on your agents goes by it from then on.
The queries log
Every statement asked of your sources: who asked, the source, how it was decided. Never a row of the answer. Export it as CSV or JSON.
People and roles
Invite a teammate with a role. Owner, Operator and Reader decide what each may do on each tier, through any app.
Policy and the Simulator
Edit the roles and the rules as a draft, try any call against it in the Simulator, and publish: the service and every agent decide by the published version.
What Claude can ask
db_sourcesThe databases this agent reads: each with its engine, version, tier, how many tables and when it was last reflected.
db_tablesOne source's tables and views from its map: each with its estimated rows, its column count, the tags its columns carry and its comment.
db_describe_tableOne table's columns with their types, keys, comments and tags, the tables it references and those that reference it, and its indexes.
db_sampleUp to 50 rows of one table, optionally filtered, with every tagged column masked for a role without personal data on the tier.
db_profile_columnOne column's shape without its contents: count, nulls, distinct values, range, mean where numeric, lengths, and the ten most common values, masked as the column is.
db_queryOne SELECT, read-only: at most 500 rows a page with a cursor for more, typed columns, every tagged column masked for a role without personal data on the tier, and the statement as run.
db_explainThe plan a SELECT would run with (EXPLAIN, never ANALYZE), so a full scan of a large table is seen before it is run.
db_reflectReads one source's catalog again (never a row) and says what changed since the last reflection.
map_getThe map: every reflected source's tables and columns with their tags, or one source's, or one table's.
map_tablesOne source's reflection whole, a page at a time: every table's columns with their types, defaults and comments, its keys, what it references, its indexes and its estimated rows.
map_searchEvery table and column across the sources whose name, comment or tag matches: a tag (customer_id), a word, a column's name.
map_proposeProposes tags for columns and join hints between sources, each with its reason, for a person to apply: it changes nothing, and answers the proposal's id and what it would change in the map.
map_proposalsThe proposals made on this agent, newest first: who made each, whether it waits, was applied or was dismissed, and how much of it would still change the map.
entity_lookupEverything the sources hold about one key: each column tagged with it (`customer_id`), or joined to one by a hint, read in parallel (at most 50 rows a column), one record per source, masked by tag.
orbgem_search_notesSearches the customer's Orbgem notes by keyword (and filters such as type:runbook, tag:oncall, since:7d): each match's title, path, type, when it changed and a snippet.
orbgem_read_noteReads one Orbgem note by its title, alias or path: its text, tags and links. A long note answers in parts, saying which line continues it.
orbgem_recent_notesLists the Orbgem notes changed most recently, newest first.
orbgem_daily_noteReads the Orbgem daily note of one day (today unless a date is given): what was captured that day.
orbgem_open_tasksLists the unchecked checklist items across the Orbgem notes, high priority first, each with its note.
orbgem_log_entryAdds an entry to today's Orbgem daily note, the person's timeline: a finding or a result in a line or a few, with [[Title]] links to the notes it concerns.