I let an agent sign itself up to a cloud data warehouse, then replayed every step

- 8 min read

BY

I gave an agent one instruction: load the public NOAA GHCN-Daily weather dataset and show me how temperatures across the EU have changed. It signed itself up to a cloud data warehouse, pulled the last ten years of readings straight off S3, wrote a Python pipeline, ran it, fixed its own bug, and drew me a chart. I never typed an email or a credit card.

The warehouse was MotherDuck, which I work on, so weigh the product parts accordingly. The bit I actually want to talk about is more general. Agents can now provision real infrastructure by themselves, and that quietly breaks something.

What it breaks is your ability to say what happened. Codex, Claude Code, the web chats, they all stream a wall of tool calls at you. Somewhere in there a database got created, a pipeline ran, a query scanned 40GB. Good luck reading that back an hour later.

So this post has two halves. First, why free tiers are going agent-first, with the curl commands to prove it. Then how I replayed everything my agent did, using our experiment at motherduck.com/try.

The end of a /try session, showing the Replay and Share session buttons alongside the live infrastructure panel with cloud storage, remote MCP, compute, Dives and Flights

Wait, agents can spawn services without me paying?

The free tier has always been there for humans, but there was a transaction attached: give me your email, I'll give you a sandbox. That email was the whole point. It's how a SaaS company turns a trial into a sales pipeline.

With agents, that transaction falls apart. The agent is the interface now, and it doesn't have an email. It doesn't want to run an OAuth flow, click a verification link, or read your onboarding modal. So a bunch of companies did the obvious thing: drop the signup, hand out a token, and let a human claim the account later if they like what got built.

A few you can try right now:

A transactional DB for your app, Postgres, with Neon

Copy code

# Create a transactional DB for your app, Postgres curl -X POST https://neon.new/api/v1/database \ -H 'Content-Type: application/json' \ -d '{"ref":"my-app"}'

No auth. You get a connection string back. It expires in 72 hours unless you claim it. Same machinery sits behind Replit, v0 and Netlify DB, where a database just appears and nobody ever said the word "Postgres" out loud.

An email inbox with AgentMail

Copy code

# 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"}'

Also no auth. You get back an organization_id, an inbox_id (my-agent@agentmail.to) and an api_key, and from there the agent can send, receive, thread and reply from its own address.

This one keeps a human closer to the loop than the other two. I ran that curl against my own address and the 6-digit code showed up in my inbox right away. Until the agent posts the code back to /v0/agent/verify, the new inbox can only send mail to that same human. So the agent gets a real address in one call, but it can only talk to the person who owns it until they say yes once.

An analytics database with MotherDuck

Which is the rest of this post.

INFO: Payments are heading the same way

MPP is an open standard for machine-to-machine payments over HTTP 402, co-developed by Anthropic, with SDKs from Stripe and Tempo. Mental model: your agent has a wallet, you top it up, and it buys and tears down whatever services it needs without asking you to fill in a card form. The SDKs are already shipping.

One POST and you have a warehouse to answer questions

Copy code

# Create a MotherDuck account for your agent curl -X POST https://new.motherduck.com

There's no body and no auth header. You get back:

  • motherduck_token to connect
  • claim_org_url for the human, later
  • region, the account's region
  • how_to_use_motherduck, a small guide for your agent on how to use MotherDuck

The endpoint creates an anonymous org on our Lite plan, owned by a service account until someone claims it. Same limits as any Lite org, and no credit card involved. From there the agent can:

  • ingest data
  • run queries on DuckDB in the cloud
  • store data in cloud storage and query it over the network
  • build pipelines with Flights (Python)
  • build interactive apps with Dives (React on top of live queries)

When you want to keep it, open claim_org_url, sign in, and the org is yours with everything the agent built still sitting in it.

One caveat worth knowing up front: a claimed org can't be merged into an org you already have. So if you're already a MotherDuck customer, treat this as a scratch org.

Fine, but what did it actually do?

That's the signup half solved. The visibility problem is still open, and that's what we built motherduck.com/try for.

Fair warning: /try is an experiment rather than a supported product surface. We built it because watching an agent work on MotherDuck explains the platform better than any feature page, and there was nowhere to do that.

It runs the same agent loop, except every service it touches shows up as something you can click. No signup. Pick ChatGPT or Claude as the model, then start from one of the example prompts, point it at any public S3/https parquet or CSV URL, or upload your own csv/parquet file.

You don't set anything up for this. No API key, no agent of your own to wire up, no MCP config. That's also why each session comes with a cap on messages: /try is somewhere to explore, not somewhere to do your Tuesday work. When you want the day-to-day version, point your own agent at the MotherDuck MCP server instead and you get the same tools inside whatever client you already use.

Here's the prompt I gave it:

One prompt, one Flight and a Dive

Load and inspect the public NOAA GHCN-Daily weather dataset at s3://noaa-ghcn-pds/parquet/by_year/, figure out what's in it, then show how temperatures across the EU have evolved over the years. Package the ingest as a MotherDuck Flight and run it once on-demand (show the run + logs), then build a Dive to visualize the long-term trend.

Four things worth watching in that run, and all four are clickable.

1. It figures out the schema itself. GHCN-Daily is not a friendly dataset. It's narrow, one row per station per element per day, with the measurement type hidden in a column instead of the schema.

The agent inspecting the GHCN-Daily dataset structure with glob and SELECT queries against the S3 bucket

2. It writes a Flight. Once it decides this needs a real ingest and not a one-off query, it packages the Python.

The Flight preview showing the generated flight.py source with the EU FIPS country code list

3. It runs the Flight and you get the logs. Both runs are listed, the failed one and the green one, with output you can read. You can't get that out of a chat transcript.

The Flight runs and logs panel showing run #1 failed and run #2 succeeded, with per-country warming from 2015 to 2024

4. It builds a Dive. React on live queries, so the chart is hitting the warehouse rather than a CSV it pasted into memory.

The Dive titled EU Temperature Trends, showing a +2.68 C per decade trend, Belgium's annual average with a fitted trend line, and a warming-by-country bar chart

And the full live demo end-to-end:

NOTE: It fails first, then fixes itself

The first Flight run in that video errors out on the glob pattern. The agent reads the failure, edits the Flight, and reruns it green, without me typing anything. That loop is the point. A model that only proposes code leaves you pasting tracebacks back into a chat window. Here the agent owns the whole cycle, so what you inspect at the end is a pipeline that genuinely ran.

Hand the run to someone else

Everything above is you watching your own agent. The bit I care about more is that you can share a session and let someone else replay it.

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

Why you should bother looking

The agent will be confidently wrong about a join or a filter at some point, and reading the generated SQL is the only way you catch it. On this run the decision worth checking was statistical rather than mechanical.

Put the logs and the Dive side by side. The logs report Belgium going from 8.35°C in 2015 to 11.92°C in 2024, so +3.57. The Dive puts Belgium's trend at +2.68 per decade. Those disagree because the agent declined to report the raw endpoint difference and fitted a trend instead. That's the right call, and its own KPI cards show why. 2015 is the coldest year in the window at 8.3°C and 2022 the warmest at 12.2°C, so anchoring on 2015 makes every country look like it is boiling.

The bar chart is honest in the same way. Hungary and Finland sit near zero, which is what a ten-year window looks like when the signal is smaller than the noise. A worse pipeline would have quietly smoothed those into the story.

Ten years is a short window for climate claims either way, and this post is really about the plumbing. The point is that I could check the arithmetic in about a minute, by opening the Flight and reading the logs next to the chart.

There's a more selfish reason too. Watching Flights and Dives get created is how you find out what the platform can do :)

Try it

motherduck.com/try, no email needed. If you like what your agent built, claim the org and keep going.

In the meantime, take care of your agents and... your ducks of course.

Subscribe to motherduck blog

PREVIOUS POSTS

OpenAI Just Made Analytics 10x Cheaper

2026/08/01 - Jacob Matson, Alex Monahan

OpenAI Just Made Analytics 10x Cheaper

Since OpenAI slashed the price of GPT 5.6 Luna by 80% this week, low latency AI-powered answers are finally feasible for less than half a penny per answer, AI and DB costs included. For data questions, GPT 5.6 Luna is intelligence too cheap to meter. Well documented context, rigorous evals, and a fast analytical engine are now the determining factors.