Skip to main content
Your agent gets these tools in Editor mode, on top of every Asker tool. It reads your current semantic layer, makes a validated change, lets you verify it, and publishes only when you say so.

How an edit flows

1

Read the current model

The agent loads the live model with get_graph — entities, relationships, and dimensions — and the tables and columns the model can be built on with sl_get_semantic_schema. To see how analysts actually query the data, it can pull the warehouse query history with fetch_qlh.
2

Make the change

It composes an ordered list of typed operations — add an entity, change a relationship, declare a dimension — and submits it with make_edit. Every operation is validated first: structure, table membership, a dry run of each SQL base query, and definition checks. Any error rejects the whole edit with issues keyed to the operation, and nothing is saved.On success, the response tells your agent which flow it is in:
  • status: "committed" with a branch — the edit is a pending change. Your agent is switched to it, so its follow-up questions and get_graph run against the pending change, not the live model. This is the flow on accounts with Model Versioning.
  • status: "processing" with a changeset_id — the edit was submitted for review. Your agent polls sl_get_edit_state until each operation is confirmed, and a Data Expert then approves the resulting edit sessions in Jedify before they can be published.
3

Verify

Ask questions — they run against the pending change. Run a test set against it with ask_benchmark to check that known answers did not regress. Where Model Versioning is enabled, compare_changes shows exactly what differs from the live model.
4

Publish or discard

publish_change makes the change live. It requires explicit confirmation: the first call returns needs_confirmation and your agent asks you before calling again with confirm: true. discard_change abandons the pending change instead.
Nothing goes live until you confirm. Your agent must ask before it publishes, and on accounts without Model Versioning a Data Expert also approves the edit in Jedify first.

Tools

Read the model

Make, publish, and discard changes

Verify and version

These tools are available when Model Versioning is enabled for your account. On other accounts they return an error saying the operation isn’t available — make_edit, publish_change, and discard_change are the editing flow there. These match what you see in the app’s Versions menu and review screen.

Test sets

A test set is a saved group of questions with recorded answers. Re-running it re-asks every question and compares each new answer to the recorded one, so a change to the model or the data shows up as a failing case. When you ask your agent to “create a test set for these questions”, it asks them all at once with ask_questions, waits for them to finish, keeps the ones that report eligible_for_test_set: true, and creates the set from those — reporting any question that was not eligible and why.

Cross-source relationships

For accounts with more than one data source: relationships that join an entity in one source to an entity in another.

API sources

Listed only when your account has a connected API source (such as HubSpot). API entities have their own authoring format and write tool; they share the same pending change and publish_change as everything else.

What an edit can contain

make_edit takes an ordered list of operations. Each one carries a local_ref your agent chooses (echoed back in the results and in any issue) and references entities by label; an entity must be declared before an operation that references it. Relationships specify a cardinality (one_to_one, one_to_many, many_to_one, many_to_many), a join type (INNER, LEFT, RIGHT, FULL, CROSS), and join keys — equality by default, or between with a high bound. Semantic dimensions are declared on an entity by column (from_column or semantic_id) with a name and a generic definition. They are shared: if the column already has a dimension, the existing one is linked and your name and definition are kept aside. Dimensions are add-only through make_edit; on accounts with Model Versioning, unlink_dimensions on update_node drops an entity’s link to a dimension.