Let your agent try MotherDuck

One instruction. A real warehouse, a real pipeline, a real chart. No email, no credit card.

Mehdi Ouazza · MotherDuck · mehdio.com

No email.
No signup.

I gave an agent one instruction. It signed itself up to a cloud data warehouse and got to work.

The whole instruction

one prompt · nothing else
How have average temperatures changed across EU countries over the last 10 complete years? Use the NOAA GHCN-Daily dataset on S3 to create and run a Flight, show me the logs, then build a Dive where I can explore the trend by country and year.

Today

01
Free tiers go agent-first
02
Watch it work
03
Your turn
04
Read what it wrote

01

Agents can spawn
real services now

The free tier always had a transaction attached

The old deal

email for sandbox
  • you give an email, you get a playground
  • the email was the point — that's the sales pipeline
  • verification link, onboarding modal, welcome drip

The agent doesn't play along

it's the interface now
  • it has no email and no inbox to click
  • it won't run your OAuth flow
  • it will never read your onboarding modal

So: drop the signup, hand out a token,
let a human claim it later.

Postgres, in one call · no auth header

neon.new · a database for your agent
# Create a Postgres database for your agent curl -X POST https://neon.new/api/v1/database \ -H 'Content-Type: application/json' \ -d '{"ref":"my-app"}'
You get a connection string back. It expires in 72 hours unless a human claims it.
Same machinery behind Replit, v0 and Netlify DB — a database just appears, nobody says “Postgres” out loud.

And if the agent wants an inbox of its own

agentmail.to · an email address for your agent
# Create an email inbox for your agent curl -X POST https://api.agentmail.to/v0/agent/sign-up \ -H 'Content-Type: application/json' \ -d '{"human_email":"me@example.com","username":"my-agent"}'
Back comes an organization_id, an inbox_id (my-agent@agentmail.to) and an api_key — send, receive, thread, reply.
!A 6-digit code lands in your inbox. Until the agent posts it to /v0/agent/verify, the new inbox can only mail you.human in the loop

And analytics — no body, no auth header

new.motherduck.com · a warehouse for your agent
# Create a MotherDuck account for your agent curl -X POST https://new.motherduck.com
motherduck_token
to connect, right now
claim_org_url
for the human, later
region
where the org lives
how_to_use_motherduck
a small guide, for the agent

An anonymous org on the Lite plan · owned by a service account until claimed

Ingest
straight from public S3 / https
Query
DuckDB in the cloud
Store
cloud storage, queried over the network
Flights
Python pipelines that actually run
Dives
React apps on live queries
Like what got built? Open claim_org_url, sign in, it's yours — with everything still in it.
!Caveat: a claimed org can't be merged into an existing one. Already a customer? Treat this as a scratch org.

Where this goes next

Your agent gets a wallet.

MPP · mpp.dev HTTP 402 co-developed by Anthropic SDKs: Stripe, Tempo

An open standard for machine-to-machine payments. You top up the wallet; the agent buys and tears down the services it needs without asking you for a card form. The SDKs are already shipping.

02

Fine. But what
did it actually do?

Codex, Claude Code, the web chats — they all stream this at you

• Bash(curl -X POST https://new.moth…)
• mcp__motherduck__query(SELECT * FROM glob(…
mcp__motherduck__create_flight(…)  ← a pipeline was created here
• mcp__motherduck__run_flight(…)    ← and it scanned 40 GB
• mcp__motherduck__query(… 214 more lines)
• mcp__motherduck__save_dive(…)

Good luck reading that back an hour later.

What this quietly breaks

?your ability to say what happened
×A database got created — somewhere in there
×A pipeline ran. Did it run twice? On which year?
×A query scanned 40 GB. Which filter did it use?
×You can't hand a chat transcript to a colleague and call it a review

motherduck.com/try · every service the agent touches becomes something you can click

you
one prompt
no signup
agent loop
ChatGPT or Claude
+ MotherDuck MCP
provisionsand builds
live panel
storage · compute
Flights · Dives
replayshare
a colleague
steps through the same run
Pick your model, start from an example prompt, point it at any public S3/https parquet or CSV — or upload your own file.
!/try is an experiment, not a supported product surface. Message cap per session. For your Tuesday work, point your own agent at the MotherDuck MCP server instead.

In the weather run — four things worth watching, all clickable

01
It figures out the schema
GHCN-Daily is narrow — one row per station, per element, per day, with the measurement type hidden in a column
02
It writes a Flight
decides this needs a real ingest, not a one-off query, and packages the Python
03
It runs it — with logs
144 yearly rows written, station counts per year. You can't get that out of a chat transcript
04
It builds a Dive
React on live queries — the chart hits the warehouse, not a CSV pasted into memory

The part I like most in the demo

It fails first,
then fixes itself.

×First Flight run errors out on the glob patternred
Agent reads the failure, edits the Flight, reruns it — I typed nothinggreen

The bit I care about more

Hand the run to someone else.

They open a link and step through the same run: exploration queries, the Flight, the logs, the Dive
No screen recording, and nobody waits for the agent to redo the work
An agent run becomes something you can review

live demo · replay + share session

03 · hands on

Your turn.
One prompt each.

Two ways to run everything that follows

A · motherduck.com/try

nothing to install
  • open the page, pick ChatGPT or Claude
  • paste the prompt, watch the panel fill up
  • capped messages — it's a sandbox

B · your own agent

Claude Code, Codex, Cursor…
  • give it the curl and the MCP server
  • no cap, your client, your keys
  • same tools, your Tuesday workflow
option B · bootstrap prompt for your own agent
Create a free MotherDuck account for yourself with curl -X POST https://new.motherduck.com, save the token, then add the MotherDuck MCP server (motherduck.com/docs → MCP setup) and confirm you can list databases before doing anything else.

Prompt 01 · the weather run — the same one, and why it's shaped that way

NOAA GHCN-Daily · one prompt, one Flight, one Dive
How have average temperatures changed across EU countries over the last 10 complete years? Use the NOAA GHCN-Daily dataset on S3 to create and run a Flight, show me the logs, then build a Dive where I can explore the trend by country and year.
the question, in business terms the source ingestion logs visualization

Prompt 02 · a dataset everybody has an opinion about

NYC taxi · public parquet over https
Inspect https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2024-01.parquet and tell me what's in it and what looks dirty. Then answer: when do New Yorkers tip best? Package the ingest as a Flight, run it and show me the logs, then build a Dive with tip % by hour of day and by payment type. Tell me which rows you dropped and why.
Watch for: zero-distance trips, negative fares, cash tips recorded as 0 — a good agent tells you before you ask

Prompt 03 · bring your own mess (upload a CSV, or point at your bucket)

your data · csv or parquet
Here's my file. Profile it first: row count, column types, null rates, duplicate keys, anything suspicious — show me the queries you used. Then build a Flight that loads a cleaned version into a table, make it idempotent so a re-run is a no-op, run it, and build a Dive with the three charts you'd put in front of my boss. State every assumption you made.
“Show me the queries you used” and “state every assumption” are the two clauses that turn a demo into something reviewable

04 · the boring, important part

Read what
it wrote

The agent will be confidently wrong about a join or a filter at some point

1Station coverage. 1920 has one station reporting, 1900 has two, 2020 has 424. Average naively and part of your warming curve is just Europe installing thermometers.filtered to ≥30
2The partial current year lands at 9.7 °C and reads as a sudden crash.dropped
3FIPS, not ISO country codes — correct for GHCN station IDs, and mildly alarming if you skim it: FIPS AU is Austria.correct
Its own summary says this is a station average, not an area-weighted climate index. I agree with every call. The point is that I could tell — in about a minute.

The Dive · EU station mean temperature · 1936 → 2025

<30 stations · cut 1936 baseline + warming, 30y change mean temp °C 1936 2025
annual station mean excluded: too few stations to mean anything

In short

01
Signup is optional now
one POST, a token, claim it later if you liked it
02
The agent owns the loop
it provisions, runs, fails, fixes — not just proposes code
03
Insist on seeing it
a Flight you can read and logs you can open beat a wall of tool calls
04
Replay beats retelling
share the session — an agent run you can review

Bonus: watching Flights and Dives get built is how you find out what the platform can do :)

Go let your agent try it.

Thanks.

Take care of your agents and… your ducks of course.