Ask. Don't buy.
Software at the speed of a question. Describe the app your team needs. It is live in minutes, on real data, always up to date, shared with your team.
Every number in one shape
Public statistics and your own tools, ingested, normalized and historized. One country code, one time column, one unit, so two sources join without a pipeline.
Your AI builds the app, we run it
Describe the app your team needs. Your AI builds it against that data through MCP, and it goes live on a URL your team opens.
Public data that already agrees with itself
World Bank, Eurostat, OECD, WHO, IMF, FRED, the ECB, the US Census and the SEC, cleaned, schema-detected and entity-resolved as it arrives. Germany is DEU in every table, a year is a year, and a percent says so, which is what turns a join across two publishers into a filter. Every row keeps the link to the source it came from.
Explore the data
Your own tools, connected once
Analytics, search, ads, commerce, social and your AI spend. We run the OAuth apps, the token refresh and the schema changes, so connecting is a click and yesterday is still there tomorrow. Anything else joins as a REST connector with a key you paste once.
Connect your own
Prompt to production
A data app is a page that answers one question on live data. Your AI builds it through MCP, in five calls, and nobody opens a canvas.
The five calls
- create_app names it and opens a workspace.
- update_app_manifest declares the data it is allowed to read.
- write_app_artifact or upload_app_bundle carries the code.
- get_app_preview_url opens it privately, before anyone else sees it.
- publish_app puts it on a URL your team opens.
Then read the same numbers back out wherever you already work, in an LLM, in Power BI or in Excel, over the public API and MCP. Connect via MCP
Do you feel the business vibes?
Read the developer docs
Ask for the answer, not the table
The same question twice. On the left in words, on the right the way the publisher's own API wants it. Both sides are measured, not estimated.
With autario
- Ask
- What was the unemployment rate in Germany from 2010 to 2020?
query_dataset(dataset_id, filter: ["countryiso3code:eq:DEU", "date:gte:2010", "date:lte:2020"], sort: "date:asc")
- The same call over REST:
GET /api/v1/public/datasets/6217e2ba-f66a-45c9-8d0d-953daeb0670d/data?filter=countryiso3code:eq:DEU&filter=date:gte:2010&filter=date:lte:2020&sort=date:asc
- Answer
-
| Year | Value (%) |
| 2010 | 7.043 |
| 2011 | 5.967 |
| 2012 | 5.372 |
| 2013 | 5.316 |
| 2014 | 4.979 |
| 2015 | 4.612 |
| 2016 | 4.104 |
| 2017 | 3.781 |
| 2018 | 3.384 |
| 2019 | 3.163 |
| 2020 | 3.881 |
All 11 rows, as they are returned.
11 rows, about 356 tokens in TOON.
Straight from the source API
What you have to know before you can write it: the indicator code SL.UEM.TOTL.ZS, the entity code DEU and the provider's own date syntax date=2010:2020.
GET https://api.worldbank.org/v2/country/DEU/indicator/SL.UEM.TOTL.ZS?date=2010:2020&format=json&per_page=100
The answer arrives as nested JSON that repeats the indicator name and the country on every row:
{"indicator":{"id":"SL.UEM.TOTL.ZS","value":"Unemployment, total (% of total labor force) (modeled ILO estimate)"},"country":{"id":"DE","value":"Germany"},"countryiso3code":"DEU","date":"2020","value":3.881,"unit":"","obs_status":"","decimal":1}
11 rows, 2,798 bytes, about 700 tokens in JSON.
Same 11 rows, about 2 times fewer tokens. The bigger difference is that one side takes a question and the other takes three codes.
If you paste the whole table instead, the same period for all 265 entities is 2,915 rows and about 181,731 tokens. That is the 510 times figure, and it answers a different question.
Measured on 2026-09-04 against Unemployment Rate by Country (World Bank), published by World Bank. The source API call was measured on 2026-09-09. Token counts are approximations at about four characters per token.
Source dataset: Unemployment Rate by Country (World Bank)
What the data layer guarantees
- Normalized at ingestion
- Cleaned, schema-detected, entity-resolved and shadow-columned when it arrives, not when you query it. That is what makes a join across two publishers a filter instead of a project.
- Every number cites its source
- Each dataset links to the primary source it came from and each row keeps its publisher and its period. Nothing is generated, and a number that cannot be traced does not ship.
- Always up to date
- A self-healing engine refreshes on a schedule or on demand, and the builder picks which. When a dataset changes shape, the change is written to a changelog your app can read.
- Open and model-agnostic
- Public data is free to browse and query without an account, and no provider is wired in. Connect Claude, ChatGPT, Gemini or anything else that speaks MCP.
Start with a question
Open an app, read the data, or connect your AI through MCP. Looking costs nothing and needs no account.