Semanticus
Documentation

The two doors

Every capability in Semanticus ships twice: as a surface in the Studio UI, and as an MCP tool your own Claude drives. Both operate the same live session, so you and the agent are never looking at two different pictures of the model.

One model, two drivers

Most tools make you choose: a rich workbench where the AI can only chat from the sidelines, or a write API the agent can call with nowhere for a human to watch and veto. Semanticus is built the other way around. Every capability is reachable from both doors, on the same engine, the same session, the same change-bus and the same undo timeline.

Door 1 · The Studio UI

You point, click and type: browse the model tree, edit DAX and properties, run queries, review a change plan, watch the agent work. Native VS Code where it fits, and a React webview for the rich Studio panels.

Door 2 · The MCP tools

Your Claude calls the same operations by name: create_measure, run_dax, ai_readiness_scan, start_workflow and more. There is no capability behind a door only one driver can open.

Every edit broadcasts live

A change made through either door commits, then broadcasts a model/didChange event so the other door repaints from the live truth. Each edit is tagged with its origin, human or agent, so you can always see who did what. In the Edit History tab this reads as a co-authoring timeline: every change is attributed to You or the AI Assistant, and you can undo back to any point.

The Edit History tab: a co-authoring timeline attributing each change to You or the AI Assistant, with undo-to-here.

One shared undo timeline

Because it is one session, it is one undo stack. Your edits and the agent's edits interleave on a single timeline, and undo walks back whoever's change was last. That is what makes an AI change safe to accept: if you do not like it, one undo reverts it, exactly as if you had made the edit yourself.

The same task, either door

Say you want a Margin measure on the Sales table. Here is the same job done through each door. The result is identical: one undoable step that appears instantly in the other door, tagged with who made it.

In the Studio UI (you)Over MCP (your Claude)
Select the Sales table in the model tree, add a measure, and type its DAX in the editor: Margin = [Sales] - [Cost]. Save. Call create_measure with the table ref, the name Margin, and the expression [Sales]-[Cost]. It returns the new object ref and is undoable.
The new measure appears in the tree and the properties grid immediately. The edit broadcasts, so the Studio repaints and the measure appears in your tree, tagged agent.
Rehearse first

Any single mutating op can be run through dry_run to see the exact change it would make, with a guarantee of no mutation. It is plan mode for a single edit. See the write chokepoint.

Why this beats copy-paste AI

The alternative most people live with is copy-paste: the assistant works on a snapshot you pasted into a chat, proposes text, and you paste it back and hope it still fits. That is two pictures of the model, drifting apart with every exchange, and no undo that spans both.

Dual-drive removes the second picture. The agent reads and writes the same live model you are looking at, so it cannot drift from what you see, and every move it makes is one entry on the timeline you control. You get an assistant with real hands on the model, and a veto that is always one undo away.