The chart is the receipt.

Ask Claude or ChatGPT a question about public data. With escrito connected, the answer comes back as a chart with a watermark and a short link to every source, step and check behind it.

Anyone can re-run it, or branch it: change one step and see what changed.

One-time setup

In Claude or ChatGPT settings, add a connector with this URLdata.escrito.io/mcp

Works in Claude, ChatGPT, Cursor and Claude Code. The numbers come from the publisher's data, not the AI's memory.

your assistant
escrito connected
Has the typical person's income recovered since the 2008 crash? Compare Poland, Germany, the US, the UK, Italy and Greece, then share it.
Used escritosearch_datasetsdescribe_datasetquerycomputechartshare

Claude

Not everywhere. Poland is up 86% since 2007 and Greece is down 22%. Here is the chart, with its link.

Since 2007: Poland +86%, Greece −22% Median daily income per person, price-adjusted, 2007 = 100 Median income per person, 2007 = 100 60100140180 20072009201120132015201720192021 100180 200720142021 Poland +86% US +22% Germany +19% UK +7% Italy +2% Greece −22% Poland +86% US +22% Germany +19% UK +7% Italy +2% Greece −22% Source: World Bank PIP, national surveys. CC BY 4.0. Survey years only. Source: World Bank PIP. CC BY 4.0. e escrito escrito.io/s/k7m2p9 escrito.io/s/k7m2p9 Reproduced Reproduced 4 steps · same answer same answer

↓ what escrito.io/s/k7m2p9 opens

  • SourcesWorld Bank, free to reuse (CC BY 4.0)
  • Method4 steps, each shown
  • Checks9 run, 3 notes
  • Re-run✓same answer on a fresh machine
In Claude. Real World Bank data, survey years 2007 to 2021.

Public data

Thousands of official datasets, one sentence away.

Your assistant searches the catalog and reads each dataset's license, units and limits before it uses one.

escrito records every download, so "Source: World Bank" on your chart names the exact release and when it was fetched.

ChatGPTescrito connected
BLSjobs, wages, prices
BEAGDP and income
Censuspeople and housing
FREDeconomic data
EIAenergy
CDChealth
World Bankevery country
OWIDOur World in Data
Eurostatthe EU
State portalsopen data
City portals311, permits, crime
+ moreopen-data portals

Your own file works the same way.

Upload a CSV, Excel, Stata or SPSS file. Your assistant confirms with you how to read it, and the page shows those choices.

survey_wave4.xlsx · sheet T3how it was read
ABCD
1Table 3. Household income by region (example)
3regionmediansampledweighted
4North31.41,204412,000
5South27.8998389,200
6Islands–4114,300
sheet T3rows 3 to 61 header row"–" means missing

Posting

Post it to X. The proof goes with it.

Your assistant hands back the card, caption and alt text. X shows the card under your link.

Claudeescrito connected
Post it to X.
Used escritoshare · post to X

Claude

Your post for X is ready. Check it, then press Post to X.

From escrito · share

Card1200 × 675Caption194 characters, as posted

Alt text, from the data

Line chart: median daily income per person, six countries, 2007 to 2021. Poland rose 86%, the most. Greece fell 22%, the only one below 2007.

Post to XLinkedInThreadsMastodon
Copy linkEmbedPNG · SVG · PDF
Your newsroom · now
on X

Since 2007, the typical person's income rose 86% in Poland and fell 22% in Greece. World Bank data, survey years to 2021. Every step is on the page, and anyone can re-run it: escrito.io/s/k7m2p9

escrito.ioSince 2007: Poland +86%, Greece −22%
World Bank data · 4 steps reproduced · re-run or branch

The watermark

A screenshot still finds its way home.

Charts get cropped and pasted into group chats, so escrito puts the way back inside the image, on every export.

a reader · reposted · 2h

Is this right? Greek incomes still 22% below 2007??

412 repostsno link in post
J. Okafor · economist
Why 2021? Pandemic aid pads that year. End it in 2019 and I bet the story shrinks.

Cropped, recompressed, headline gone. Okafor's question is answered below.

the bottom band, enlarged4 parts

Source: World Bank PIP, national surveys. CC BY 4.0. Survey years only. e escrito escrito.io/s/k7m2p9 Reproduced 4 steps · same answer 1 2 3 4
  1. 1The markTells a reader this chart has a page behind it.
  2. 2The short linkSix characters, easy to type from a photo.
  3. 3The Reproduced markEvery step ran twice and matched.
  4. 4The source linePublisher and license are in the pixels, so a repost keeps the credit.

Anyone can check

Behind the link: what a skeptic would ask for.

Readers need no account and no install.

escrito.io/s/k7m2p9

Since 2007: Poland +86%, Greece −22%

v1 · shared 2026-10-30 · 3 branches

Branch thisPNG · SVG · PDF · CSVEmbed
1

Chart and datainteractive

60100140180 20072011201520192021 PolandUSGermanyUKItalyGreece
country200720192021change
Poland20.4534.7237.97+85.7%
United States60.1270.5273.62+22.5%
Germany54.8662.9965.06+18.6%
United Kingdom50.8654.9254.55+7.3%
Italy48.8548.8349.70+1.7%
Greece36.9226.7128.68−22.3%
2

Method, in the order it ran4 steps

  1. querySet each country's 2007 value to 100
  2. queryChange from 2007 to 2021
  3. computeTrend growth per year
  4. chartLine chart, labels on the lines
Each step opens to show its code.
3

Sources1

World Bank, Poverty and Inequality Platform
CC BY 4.0. Six countries, survey years 2007 to 2021.
fetched 2026-10-30 07:42 UTC · file kept

4

Checks9 run · 3 notes

ok 90 rows in, 90 out. Nothing dropped, nothing blank.

5

Reproductionat share time

✓4 of 4 steps, same answer

6

Branches3

r4t8w2 ends in 2019
m2c9x4 adds France and Spain
p8d1q7 mean instead of median

Checks

Every number is checked, then run twice.

Each check says what it saw, in plain words, with the number.

When you share, escrito runs every step again on a fresh machine. If a number changes, nothing publishes until the step is fixed. Press Re-run to watch.

checks · median income since 20079 run · 3 notes

Table

  • ok90 rows in, 90 out. Nothing dropped, nothing blank.
  • okSurvey years only. No missing year is filled in.
  • okSame measure. All six countries report income, not spending.
  • noteComparable years. The UK series ends in 2021 and Poland's survey changes in 2022, so the chart stops at 2021.
  • notePandemic years. 2020 and 2021 include pandemic aid.

Statistics

  • okTrend per year. Poland grew 4.24% a year, likely between 3.44% and 5.04%. Because each year's income tracks the year before, the range is kept wide.
  • noteA straight line fits Greece poorly. Its income fell, then partly recovered. Italy shows no clear trend.
  • okSmall sample stated. Each trend rests on 15 survey years.

Chart

  • okOne scale, six countries, six colors. No labels overlap.

another chart · refused

One step drew random numbers, so the second run gave a different answer.
re-run · fresh machine
stepfirst runre-run
2007 set to 100 Poland, 2021185.71185.71 ✓
Change since 2007 Poland+85.7%+85.7% ✓
Trend per year Poland+4.24%+4.24% ✓
Chartimageidentical ✓
Reproduced4 of 4 steps, same answer at share time.
ChatGPTescrito connected
I'm an editor. Check escrito.io/s/k7m2p9 before we quote it.
Used escritoverify · 4 of 4 steps, same answer

ChatGPT

It checks out. The 86% is the rise in Poland's median daily income per person from 2007 to 2021, in World Bank survey data.

Branching

Disagree with a branch, not a reply.

Okafor pastes the link into ChatGPT and asks for the same chart ending in 2019. escrito changes the end year and re-runs only what depends on it. Before the pandemic the story holds.

ChatGPTUsed escritofork (branch) · end year 2019

originalescrito.io/s/k7m2p9

2007 to 2021: Poland +86%, Greece −22% Median income per person, 2007 = 100 60100140180 20072021 Poland +85.7US +22.5Germany +18.6UK +7.3Italy +1.7Greece −22.3 e escrito.io/s/k7m2p9 Reproduced

branchescrito.io/s/r4t8w2

2007 to 2019: Poland +70%, Greece −28% ↪ branched from escrito.io/s/k7m2p9 60100140180 20072019 Poland +69.8US +17.3Germany +14.8UK +8.0Italy 0.0Greece −27.7 e escrito.io/s/r4t8w2 Reproduced
what changed · k7m2p9 → r4t8w21 step changed
step 12007 set to 100end year 2021 → 2019
step 2Change since 2007same code, re-run on the shorter series
step 3Trend per yearnot on the chart, reused as is
step 4Chartsame design, redrawn
resultPoland+85.7% → +69.8%
resultGreece−22.3% → −27.7%

Revisions

The publisher revises. You get a v2 that says what changed.

When the World Bank revises past years, ask for a refresh. escrito downloads the revision and re-runs every step before v2 goes up.

v1 stays at its link, unchanged, so a story that cited it still matches. Branches can follow v2 or stay put.

v1 → v2: the World Bank revised the boxed years. Same steps, re-run on the new download.

Who it is for

For anyone who asks, or gets asked, "where is that from?"

The answer used to be a footnote and a promise. Now it is a link that runs.

Student in ChatGPT

For my essay: has rent outpaced wages in my state since 2010? Use numbers I can cite.

ChatGPT returns cited numbers and a link the teacher can re-run.

Journalist in Claude

A senator says youth unemployment in Spain has halved since 2013. Check it against Eurostat.

Claude returns a verdict with both dates marked, and a link the editor re-runs before publication.

Researcher in Claude Code

A referee wants Table 3 run a second way. Do both from my replication files.

Claude Code returns both tables, and a link the referee can branch instead of asking for another round.

Curious reader in ChatGPT

Someone posted this chart. Is it right?

ChatGPT explains what the number measures, where it comes from and whether it re-ran.

For the technically curious

Under the hood.

The same record, in the terms an engineer or a statistician would check.

Step graph (DAG), code and fingerprintsrecorded = re-run

  • sourcewb.pip GET api.worldbank.org/pip/v1/pip · fill_gaps=false · EU-SILC, LIS (GSOEP, CPS-ASEC, FRS) sha256:abd3796680d9…6ef26e
    • queryindex_2007 SQL · median / median in 2007 × 100, 2007 to end_year c75d…43cb = c75d…43cb ✓
      • querychange_pct SQL · change from the first to the last year bee9…67e1 = bee9…67e1 ✓
      • chartmedian_income_2007 JSON spec · line, direct labels 3436…6ef1 = 3436…6ef1 ✓
    • computegrowth_trend Python · OLS of log median on year, HAC errors d0f6…d982 = d0f6…d982 ✓
"Same answer" means every step's output had the same SHA-256 on a fresh sandbox, with Python 3.12 and statsmodels 0.14 pinned.

ConnectionMCP

Your assistant calls these tools at data.escrito.io/mcp. query runs SQL at the source; compute runs Python in a sandbox that reaches only PyPI and file storage.
search_datasetsdescribe_datasetupload_datasetquerycomputechartshareforkverifyrefresh

Statistics behind the checksn = 15 per country

  • Durbin-Watson 0.26 to 0.78, so the residuals are autocorrelated. Errors are HAC with 3 lags.
  • Poland +4.24% a year, 95% CI 3.44 to 5.04.
  • Greece R² 0.36. Italy R² 0.02, CI −0.51 to 0.76.

The refusal, in fullbootstrap_ci

compute bootstrap_ci hashed ec31…1b45, then 844e…0e45. The generator had no seed. Fix: np.random.default_rng(2025).

Publish a number someone else can check.

Add data.escrito.io/mcp as a connector in Claude or ChatGPT, and ask the question you are working on.

A new account needs an access code. Have one? Get started. We send codes by email, and nothing else.