Make a verified relational dataset and wait for it: every foreign key checked, dates correctly
ordered, declared aggregates and rates exact, before anything is returned. Deterministic for a seed.
Use this when you give a `schema` or `ddl` (seconds). For a plain-English `request` the engine
designs the tables with a model, which can take several minutes: call start_generation instead and
poll get_status, so the call does not sit open and time out.
Args:
request: Plain-English description (needs an LLM key unless `schema`/`ddl` is also given). With no key,
design it yourself instead: blueprint_guide, then `blueprint` below.
schema: A Misata schema dict for exact structural control. No key needed for structure. Its `numbers`
(revenue by month, churn, MRR, shares, averages) are held exactly: see the server instructions.
A column's `moves_with` ({"column": "customers.income", "strength": 0.6}) pairs it with another
number of its row or its parent's, by rank, each keeping its own values.
ddl: CREATE TABLE statements. No key needed for structure. Beside it, schema={"numbers": [...],
"window": {...}} holds the story's numbers on these tables.
seed: Reproducibility seed — the same request/schema and seed always produce the same rows.
research: Ground realistic numbers (prices, growth rates) in real published facts via a web
search. Off by default (an anonymous caller's request should not trigger external
calls unless asked for); needs a key regardless of `schema`/`ddl`.
blueprint: The engine's full design language (blueprint_guide has the reference): readings around
a parent's nominal, drift, autocorrelation, cause-and-effect, event windows, exact
aggregates. Use it whenever the data must behave like the real process. No key needed;
run validate_blueprint on it first.
story: A built-in shape held to exact numbers, the way Studio's plan screen states them. No key
needed; built by code in seconds. {"pack": "saas_sales", "window": {"start": "2024-09",
"end": "2026-08"}, "curves": [{"lever": "mrr_curve", "points": {"2024-09": 50000,
"2026-08": 200000}}], "rates": [{"lever": "monthly_logo_churn", "value": 0.02,
"events": [{"name": "Q3 churn spike", "start": "2025-07-01", "end": "2025-09-30",
"multiplier": 2.5}]}]}. Shapes: saas_sales, ecommerce, fintech, healthcare. Every
stated number is held exactly and read back in SQL; get_certificate has the answer key.
`numbers` sets plain sizes and shares ({"customers": 3000, "products": 400, "return_rate":
0.06}). With no model key the shape's content is generic (ecommerce sells electronics,
books, toys): write it yourself as `content`, e.g. {"catalog": [{"name": "Linen Duvet
Cover", "category": "Bedding", "brand": "Fernhill", "price": 89.0}, ...]} (30-100 items
in this business's own categories, at its real prices).
Returns:
dataset_id: pass this to get_certificate / query_dataset / export_dataset.
passed: whether every check held. A dataset that did not pass is still returned, with
`certificate.findings` saying what failed — inspect before trusting it.
verification: a short, plain-language account of what was checked and what held — show it to the
person as the proof, in place of asking them to take the data on trust.
tables: {name: {columns, preview_rows (first 20), total_rows}} — the preview only; every
row is in the stored dataset, reachable by query_dataset/export_dataset.
certificate: the short form (claims, requirements, findings). get_certificate returns the rest
(patterns, realism scorecard, every proof chart).