describe_entityGet the full record for any table, dashboard, dbt model, or ML feature, plus its owner.
{ "id": "tbl:orders" }Entity JSON with columns, tier, cost, and the resolved owner card.
We shipped OUTATIME as its own Model Context Protocol server. That means Claude Desktop, Cursor, Claude Code, Windsurf, or any other tool that speaks MCP can talk to OpenMetadata through our nine time-travel tools, without ever opening our web UI.
MCP stands for Model Context Protocol. It is a small open standard that lets an AI client (like Claude Desktop or Cursor) plug into a server and call its tools. The same way USB lets your laptop talk to a printer, a webcam, or a hard drive without caring who made it.
OUTATIME is a server in that picture. We expose nine tools over MCP. Any compatible client can call those tools to read your metadata, walk lineage, replay history, or simulate a schema change. The AI does the talking, OUTATIME does the work.
“Most teams use MCP. We are an MCP server.”
Each tool takes JSON in and returns JSON out. The AI picks which ones to call based on your question.
describe_entityGet the full record for any table, dashboard, dbt model, or ML feature, plus its owner.
{ "id": "tbl:orders" }Entity JSON with columns, tier, cost, and the resolved owner card.
get_lineage_downstreamWalk the lineage graph downstream from any entity. Tells you what breaks if you change the source.
{ "id": "tbl:orders", "max_depth": 4 }Ordered list of every entity reachable downstream within the depth.
get_lineage_upstreamWalk the lineage upstream from any entity. Tells you what feeds into it.
{ "id": "dash:exec_finance", "max_depth": 6 }Ordered list of every upstream source the entity depends on.
list_dq_failuresEvery data quality test that is currently failing or warning, with the table it watches.
{}Array of DQ tests where status is not passing.
list_pii_columnsEvery column tagged sensitive or restricted across the warehouse.
{}Array of { table, column, pii } records.
find_deprecation_candidatesTables that have zero downstream dashboards or ML features, ranked by monthly cost.
{}Tables ranked by spend, lowest-value first.
travel_to_isoReconstruct the entire metadata graph as it was at any point in time, plus a diff against today.
{ "iso": "2026-01-15T00:00:00Z" }Graph snapshot at that timestamp and the diff to current state.
bisect_metricCausal-weight root-cause analysis. Give it a broken metric and a good and bad date, get the single most likely cause.
{ "metric": "finance.revenue_daily", "lastGoodIso": "2026-02-10", "firstBadIso": "2026-02-20", "affectedEntityIds": ["dash:exec_finance"] }The cause event, contributing events, narrative, and recommendation.
simulate_changeFull Flux Capacitor blast radius. Drop, rename, retype, or deprecate, and see exactly what breaks.
{ "kind": "drop_column", "tableId": "tbl:orders", "column": "customer_region" }Affected entities, cost delta, SLA risk, migration plan, Slack drafts, and a PR diff.
Open a terminal in the project folder. Build produces one self-contained file at mcp-server/dist/index.js.
cd mcp-server npm install npm run build
Pick your client below. Paste the snippet. Replace the path with the absolute path to mcp-server/dist/index.js on your machine.
Quit and reopen the AI client. You should see outatime show up in the tools or connectors list with all nine tools listed.
{
"mcpServers": {
"outatime": {
"command": "node",
"args": ["/absolute/path/to/outatime/mcp-server/dist/index.js"]
}
}
}On macOS. On Windows the file lives at %APPDATA%\\Claude\\claude_desktop_config.json.
Once you have OUTATIME wired into your client, paste any of these into the chat. The AI picks the right tools and calls them for you.
Travel to 2026-01-15 and compare my data platform to today.
Simulate dropping orders.customer_region and tell me what breaks.
finance.revenue_daily was healthy on Feb 10 and broken on Feb 20. Bisect it.
List any failing DQ tests and who owns them.
Which tables hold PII?
Which tables cost the most and have no downstream dashboards?
Walk the lineage downstream from tbl:orders.
What does tbl:payments look like and who owns it?
Speaks MCP over stdio. When you ask a question, it picks one of our nine tools and sends a JSON-RPC call.
Receives the tool call, runs the request through the same TypeScript engines that power our website, and returns JSON.
Lineage walks, time-travel replay, bisect, simulate. Pure deterministic functions on the metadata graph.
When live mode is on, the engines pull tables, dashboards, lineage, owners, DQ tests, and events directly from OpenMetadata.
Same engine that powers our four pillars, exposed as nine tools to any AI client you already trust.