---
title: "Shareable AI-Built Data Visualizations | MotherDuck | MotherDuck"
description: "See how AI agents build and share interactive data visualizations from MotherDuck in seconds — no dashboard setup, just a live URL."
canonical: "https://motherduck.com/videos/ai-agent-shareable-visualizations/"
---

[BACK TO VIDEOS](/videos/)

[Webinar](/videos/?category=Webinar#videos-and-webinars-library)[AI ML and LLMs](/videos/?category=AI%20ML%20and%20LLMs#videos-and-webinars-library)[MotherDuck Features](/videos/?category=MotherDuck%20Features#videos-and-webinars-library)

# Shareable visualizations built by your favorite agent

2026/02/25Featuring: [Jacob Matson](/authors/jacob-matson/)
, [Garrett O'Brien](/authors/garrett-obrien/)

## TL;DR

This webinar explores how MotherDuck is closing the loop between ad hoc questions and repeatable, shareable answers — using AI agents, natural language, and the new [Dives feature](/product/dives/) to generate live data apps on the fly.

## The Problem with One-Off Queries

Most data workflows look the same: someone asks a question, you write a query, share a screenshot or CSV, and then get the same question again next week. It's a loop that eats time without building anything reusable.

## Where AI Agents Come In

MotherDuck's [MCP server](/product/mcp-server/) lets AI agents connect directly to your data warehouse, run SQL queries from natural language prompts, and generate interactive visualizations — without you ever opening a BI tool. The agent handles the query. You get a shareable URL.

## What Are Dives?

Dives are React-based data apps built on top of live MotherDuck queries. An AI agent can generate one in seconds, and anyone with the link can view the results in real time — no login required, no dashboard setup.

## Who This Is For

If you work with data and find yourself fielding repeat questions or manually sharing query results, this session shows a different approach. Whether you're an analyst, data engineer, or just DuckDB-curious, the workflow is worth seeing.

## Getting Started

You can try Dives today through [MotherDuck's web interface](https://app.motherduck.com/) or via the MCP server integration. Check out the [getting started guide](/docs/getting-started/) to connect your first AI agent.

TABLE OF CONTENTS

- TL;DR
- The Problem with One-Off Queries
- Where AI Agents Come In
- What Are Dives?
- Who This Is For
- Getting Started

Start using MotherDuck now!

[Try 7 Days Free](https://auth.motherduck.com/authorize?app_source=web&response_type=code&client_id=bza3KWQpxRAFlTlRFXUo29AOg9xD7zcp&redirect_uri=https%3A%2F%2Fapp.motherduck.com%2F&state=STATE&auth_flow=signup&screen_hint=signup&ext-ph_distinct_id=eadb491c-6377-4504-a31a-1515c5a5ab00)

## Transcript

Copy

0:00All right, what is up, everybody? We are super, super pumped to have you here as we talk about going from ad hoc questions to real-time answers, all the new awesome stuff we have baking here on the Mother Duck side. I have Garrett here with me. Howdy. Say hello, yeah. We are intending for this to be

0:24a really awesome interactive session, so use the chat. We will be moderating and observing, and we'll hop in there while Garrett guides us through the brave new world of Dives. Garrett, take it away. Sweet, I'm gonna share my screen in just a second, but before I do, Dives is a new feature that we just launched into public preview last week,

0:47and really, we think about it as a compliment to the way that you get answers from data today. So everyone has their dashboards and BI tools, and those aren't going anywhere, but Dives gives you the ability to [create pretty much anything you can think of in a composable asset](https://motherduck.com/blog/duckdb-ecosystem-newsletter-january-2024/) that you can view and share with your team,

1:08and it spawns some cool, creative ways to work with data. And so what I'm gonna do is we're gonna start by just taking a look at a few sample Dives and what's possible, and then we're gonna go all the way through the workflow of creating a Dive with [Claude Desktop and then iterating on it locally using Claude Code](https://motherduck.com/blog/motherduck-ai-sql-fixit-inline-editing-features/). And then if we have time,

1:30we're gonna even take a look at a CICD workflow that we've been using here at MotherDoc to manage version control and automated deployments for our Dives. So why don't we just take a look at what's possible just to start with, and then we'll start building some of these things. We're gonna do all this live, so excuse any hiccups, but yeah, as Jacob said, jump in the chat with questions.

1:55We'll kind of answer things as we go throughout. We've got plenty of time to look at all these workflows together. I'm excited to see what you all think of. So I'm gonna share my screen and we're gonna pop on over to a few Dives that I have prepared, do the cooking show trick a little bit. So just like at the very simplest level,

2:16Dives are just React and SQL. And that asset lives inside MotherDoc, and so you can create basically anything that you can think of that lives inside a React and SQL component. This is just a super simple example that I made in about 30 seconds, taking a look at some of our classic NYC taxi data.

2:40It's an interactive data app style of asset in this Tufti visualization style. And so this is super like basic and simple. I just wanna take a look quickly at the code, right? Again, it's just React and SQL. We have all of our component and styling here, and then our actual live SQL queries

3:02that are updated regularly on MotherDoc. You can also share Dives, which is something that we've really dove into. You're gonna hear a lot of those, sorry, here at MotherDoc using the share button. But this is all fine and good. I think a much cooler one is something that Jacob created recently, actually,

3:23which of course will give me a gremlin on the demo. Cool. So this is like, I'm not even gonna do it justice, Jacob, but like a density chart for exploring game quality with a Datadog style of filtering.

3:46Big NBA head over here at MotherDoc. And you can do things like filter on team, LA Lakers. And please, if I'm not doing your dive justice, Jacob. No, this is great. I mean, one thing that I added that's just fun is that because everything is one prompt away, there's auto-complete on all the keys. So if you type the letter like P and then hit tab,

4:09it'll just complete that to player, for example. Oh, wow, that's nice, yeah. So we, again, this is just stuff you gotta add, right? Like, there you go, there's LeBron. Yeah, very, very cool. And so you can, yeah, you can toggle over there and see what the sequel is running behind the scenes is. Yeah, we like to have a little bit of fun with it.

4:35One thing that's really great is once you've observed something that works in a product you like, you can prompt that and inject it straight into whatever you're working on, which is awesome. Yeah, the big difference that I've seen in my experience with using dives versus some of our kind of classic BI scaffolding is just how creative you can be, right?

4:56Like this example that you built is a really fun, interactive way to look at this data. I wanna try to find, just before we dive into creating one, I wanna try to find your other example with your point guard stats, which I believe is in here. Here we go, okay, so for our, and of course there's some rough edges here,

5:20but for our Microsoft SQL Server Management Studio enjoyers, we've also got NBA datasets in this very familiar interface. So if you really wanna go retro, you totally can. All of this is just some errors and a SQL query. Yeah, that's my fault, I don't have the database set up right in it, I just wanted to share the styling because it's a little-

5:44If you wanna show us something fun, you can right click on a table, just for fun. Let's see. Oh yeah, we gotta get those menu items in there. Yeah, yeah. Anyways. I did make yesterday an example using Microsoft Access and it even had Clippy, so there's a nice touch for the Microsoft enjoyers. I did see that one, it looked amazing.

6:08Yeah, all right, I'll see if I can get that fixed while we work on this. Awesome. Cool, so point being that you could create just about anything you can imagine using a dive from kind of elegant Tufti style visuals, you can even make just the most plain executive level dashboard ever, all the way to this point cards dataset, which of course now he's working on.

6:33So I think what I'm gonna do is switch on over to Claude on the desktop client, and we're gonna actually make one together all from within Claude. So let me go ahead and do that. Cool.

6:56Just checking, you can see my Claude window, right Jacob? Not yet, now we can. Yeah, sweet. We do see your whole screen by the way, so there is a web browser behind it. Yep, that's just fine, I'll just expand that thing. Great. I'm actually gonna not use incognito, but what I am gonna do is start a new chat with Claude.

7:19Dives start, everything that comes with dives kind of starts from the MotherDuck MCP server as the primitive. And so at the most basic level, like the ability for an agent to create a dive on your behalf is a new tool in the MCP server. I've already got it hooked up here

7:40and connected to my DevRel account. And so what I'm gonna do is just start by kind of exploring the datasets that are in my org. I'm just gonna ask Claude, what data is available in my org? One thing I just wanna note on dives and the MotherDuck MCP as a whole is that we recommend using the Opus series of models.

8:05I'm here, I'm using 4. 6. We did a lot of our testing and development with 4. 5. It's possible that, you know, Sonnet and other models will catch up in capability, but we've just found that Opus is the best at exploring data and using the tool sets that we've given it via the MCP server and for creating dives. So when you're thinking about tool chains here, you know, think Claude,

8:30there are other clients of course that work as well like ChatGPT, but Claude tends to be the best at exploring these datasets. Okay, so I've got a pretty simple org setup in MotherDuck in this account. And I'm just gonna see, you know, all my databases here, right? So I've got an empty, you know, an empty MyDB, some sample data that comes with every MotherDuck account. You know, you've probably seen this before. NYC Taxi, Hacker News, and so on.

8:55I just uploaded a new dataset that, you know, is relevant to me. I'm a big skier and we look at snowpack data in various Washington mountain regions pretty frequently. So that's actually what we're gonna be using for the demo. And I can also, Claude also tells me, you know, I have some shared databases that I haven't yet attached. So I'm just gonna ask, you know,

9:18what's in the Snotel data? Do some analysis. So I'm being intentionally vague here just because I want to show a little bit of how Opus explores using the tools in the MCP. And once we have a better understanding of the schemas and the structure of the data, we're actually gonna create a dive and show that workflow.

9:42Nice. One thing I'll call out while you're talking about this, Garrett, is, you know, this does work in cursor as well. Basically anywhere you can drop an MCP, you can do this. And, you know, as Garrett noted, we find that Opus is the most curious. So it does a lot of the analysis for you. So that being said,

10:05we are doing a little bit of work with Sonnet 4. 6. Initial work with that has been promising, but we'll see where it goes. Yeah. And before I actually look at the data, I just want to show exactly what the agent is doing here. So, you know, I gave it a very, very vague question. It's a really simple data set. And so there's not that much exploration to actually do, but it's using a couple of tool calls.

10:26It's using this list columns tool to explore the tables. Now we're doing that again across multiple database tables. And then Claude starts to query to actually understand what is included in the database. So we can see a number of queries that are being run here from, you know, super simple, just discovery type queries to trying to get some summary statistics.

10:51And there's about, you know, five or six of them that are actually run, before Opus starts to give me a better understanding of the data. So we've got two tables, super simple. This is really interesting because I didn't prompt for this at all. And Opus just kind of gives me a heads up like, hey, here's how the current season, the current snow season is going up in Washington.

11:15We've got comparisons of SWE, which is snow water equivalent, not to get too environmental science nerdy out there. And a percentage of median. As you can tell, it's been a pretty tough year in 2026 for us here. I didn't need Claude to tell me that, but it certainly did. And it even gives me like, this is what I'd call, you know,

11:37real nerd stuff about why it matters. And so we'll skip that. But the, okay, so I've got those like under basic understanding using the MCP and Claude prompts me to build a dive actually. That's the last question I get from the agent. Want me to build a dive, visualizing any of this, maybe a station map or the year over year trend. It seems like a great idea.

12:01I'm just going to say, yes, build a viz for trends. Of course, Cloud is going to give me some difficulty because that is what it sometimes does. So I'm just going to start again. Okay.

12:26And these are just Claude Desktop hangups, of course. So I've asked for a visualization and Claude goes back to the MCP server to learn how to build that visualization. So if I can get it to actually, it'd be perfect if Claude has an incident. There is a Claude Desktop issue open right now,

12:51but I don't think it's necessarily this one. Anyways. Let's just see if refreshing can help. I think it will. I think it will. Yeah. Okay. As I was saying, and of course this is what happened, Claude needs to understand how to actually build a visualization. If you don't give it any context, it could just do anything. And it's going to give you like, without a guide, it just gives you kind of this standard,

13:16modern web Reacty looking artifact. We've actually built what's called a dive, what we're calling a dive guide into the mother. mcp. And so Claude gets all of the context from that dive guide about how to actually build the visual artifact, right? So you can see just the markdown file that we've included as the dive guide, and it tells Claude how to behave with the user

13:40and also how to build that visualization. And so this is all of the context. You know, this is similar to how you would maybe think of a skill or some other abstraction for agent instructions, but this is basically all the context that the agent needs to create a useful artifact for the user. We've also given it some example queries and syntax to kind of guide it

14:05with DuckDB SQL so that the queries are actually valid. And then once it retrieves that dive guide, you can see some other tool use coming into play. So it's got the dive guide and it's gonna start building out the queries that we need to get a sense for the trends in our snowpack. So we've got a simple query started here and then a follow-up query

14:29that Claude is submitting and getting results. And now it's just kind of like parsing through those results and assembling the artifact. The build of the artifact can take a little while and that's why we're gonna show the Claude Code local development workflow here as a follow-up. But you can kind of see the React artifact streaming in.

14:52And of course, we're getting some Claude trouble. And if we continue, then we'll just skip straight to local. But you can see the React artifact streaming in and we should just be, you know, a minute or two away from a useful visualization in the Claude client. So let's see if it actually continues and if it doesn't, then we'll skip straight

15:16to the local development workflow. Claude Code seems to be a little bit better at handling all of this context. But I think this is purely an issue on the Claude side of house right now. Yeah, it's kind of a weird situation It's typical, I think, sometimes. That's all right. One thing you'll notice here is like,

15:40you know, it is building kind of all this React by hand. Part of what we're gonna be thinking about, you know, with this product is what does it look like to have better canned components available for users? Hey, look at this. Let's see what we got. Okay, very cool. So it looks like it just got hung up in some of the token output there.

16:03But we did actually create this artifact, right? So similar to kind of the, oh, this is very funny. Similar to some of the examples that we showed. It's interactive, right? You know, we've got some useful statistics about percentage of media and like, it just gives me the executive overview up front. You know, this is the worst snowpack mid-February over the last six years. That makes me really sad,

16:27but that is the reality. And we've got a handy chart to compare previous years. As you saw, I didn't really like give it any direction on what matters here. This is all just kind of Claude forming an intuition about the data by getting in the dive guide, looking at the queries to build out this React artifact. This is just static data, right? Like we've got, you know,

16:50all of our React components and the data is just encoded as a variable because it retrieved that query, sorry, processed that query, retrieved the data and then it rendered the artifact. And so we've got, you know, kind of this headline that we built into the dive guide to just highlight that this is a preview and you'd want to save this dive in MotherDuck to view it with live data. Otherwise you kind of have to go through this process every time of refreshing

17:14and it's not very shareable. And so that's exactly what we're gonna do. Next. This looks good to me and I'm gonna go ahead and ask Claude to save to MotherDuck. Cool. So now we get another tool call, which is, you know, save the dive via the MotherDuck MCP server. So what's gonna happen is Claude

17:38is going to take the guidance from the MCP and replace all of the static data with valid SQL queries against our MotherDuck database. This one also takes a little while to process just because it rewrites that entire React artifact that entire React component with the actual SQL backing it.

18:02So we should get the same exact experience in MotherDuck. And then if we don't like how that rendered or we wanna make some changes, that's where we'll break out the local development workflow. Okay. So let's see if we managed to get a valid dive. I'm just gonna click on this link, which should take us into the MotherDuck UI.

18:27A little bit of loading. And now we have basically the same exact visual experience, the same app content, but built into MotherDuck directly on top of a few queries. So again, we've got this interactivity that's useful, just some nice mouse over and tool tip affordances, the ability to filter and see quickly

18:50how other water years compare. But most importantly, we've edited or the agent has edited that same React code to replace it with SQL. And so now this is a live dive in my organization. I can share it simply just by using this share button or up here on the right. Every time I come back to this dive, the queries run again,

19:14or we can reload if data was streaming in from a weather service, for example. And so this is actually much more useful to me than just that static, like cloud type of artifact. Gary, here's a question. Yeah, go for it. I'm gonna pause you for a second. So you could basically set up like a snow report that basically updated every morning on something like this, right?

19:37So you'd be like, here's what mountains look the best for this weekend or something. Yeah, exactly. Like I didn't, this dataset actually comes from a USGS API that refreshes every hour. I didn't stream it in here to our database, but I can set up a simple pipeline that just streams it in and this would stay live because it's using the same SQL.

20:01Cool. Um, anything else that we want to hit before we just flip over to kind of this local, local dev workflow? I really love the local version of this. I think, yeah, I think it's ready to hit, hit into local. You know, only thing I would say is that like sometimes, um, the dives or Claude in general forgets it's using React.

20:24So like one of my favorite, like little prompts is be like, remember you have React. You can make all this stuff interactive. You can add tabs, like treat it like a single page app. So you can build really deep experiences, but you have to point it there. It may not do that automatically. Yeah. This is, again, this is like a really simple dashboard, right? It's totally a one-on-one compared to your NBA game quality explorer data dog.

20:47Um, yeah, but you know, like as, as we always say, it's, you know, anything you can think about, it's kind of just a prompt away. Um, you know, there's non-deterministic systems working with these agents, right? So it takes a little back and forth, but we could build things like this that would, would have taken hours in another type of tool or framework.

21:05Yeah. Um, before you hop over, let me, I'm going to pull up a question just from an interactive standpoint here. Uh, question from Victor, um, can Claude read dives using the MCP, right? For example, use this dive to tell me this.

21:20Yeah, absolutely. Let's just even take a look at that. Right. Um, Claude has this, uh, this get dives tool or tool that we shared through the MCP. So I could say like, you know, what dives do I have available?

21:37And we should get a pretty, of course, desktop gremlins, but yeah, short answer is yes. Right? Like Claude can read the code and the results in the same way that it's interacted with here, um, through this get dives tool.

21:51The thing that we're not showing here that kind of backs all of this is a really clever SQL API. Um, and so [you can manage dives, create them, update them, delete them](https://motherduck.com/blog/duckdb-ecosystem-newsletter-january-2025/) with, uh, within SQL through the MotherDock API. Cool. Yeah, I think we're good. We're keep rolling. Nice.

22:12Okay. Um, let's edit this thing because it's, you know, it's useful, but it's probably not as rich as I would like. Um, so I've got this [Claude Code session](https://motherduck.com/blog/duckdb-ecosystem-newsletter-march-2025/). Um, I am hooked into a repo that we're going to explain here in a second, because it has some really clever GitHub actions for deploying to production and doing version control.

22:42But the first thing that I'm going to do is just pull down this dive. So I kind of skipped this whole local dev workflow, right? I just built it in the Claude Desktop app. You could do the same thing in web or in cursor. Um, but as we saw with Claude Desktop and some of these other agent interfaces, like they're not always the most friendly to work with. They have, uh, bugs or little gremlins in them.

23:05Um, and just overall, it's kind of a slower iteration pace. And so I prefer to do this locally using Claude Code. Um, but first I just want to point out that I have the MCP server hooked up to Claude Code here as well. So I'm just going to say, you know, what dives are in my MotherDock account? Ah, of course.

23:34This may actually be a 500 error for coming from Claude. Let's see what's going on.

23:40Okay, so we're loading the tool. Yep. Okay. Looks like we are succeeding. There are two. There are two elevated error rates issues on Claude status right now. So perfect. We'll muddle. We'll muddle through. Yeah. Yeah. Too much open clawing. I think. Yeah. Yeah. Right. Um, so this is my dive.

24:04And I just want to point out that you could see I've got several here. Like, these are all shared dives that are owned by other people in my org that I can view. But under my ownership, Claude is correct. We've just got this one dive. Um, and I'm just going to say, pull it down locally for development.

24:27And you can you notice that I'm doing, you know, dangerously skip permissions and Claude. This is just for the demo. You should not do that, preferably, especially when working in a shared organization.

24:38Um, but what's happening behind the scene? If Claude, if the Claude service stays up, is that the agent is going to access that list of dives and take that react code and pull it down to a local setup.

24:55You do not need local, a local MCP. This is just using the remote MCP. The remote. Yeah. So can you can you just when you get a second, can you just slash MCP? So I think they've reworked this recently in Claude.

25:15So if you see this, this list that Garrett has here, this is now shared between your Claude Desktop and Claude Code. We'll see that that's new. They used to be different sets of MCPs. They're now they're now shared for better or worse. So, um, once you set it up in Claude, you can now share it.

25:37Yeah, that's a great question. So I'm gonna try to muddle through some of these 500s and see if we can get a local version for development. Oof, that's tough. All right.

26:06This is what we call the manual Ralph Wiggum, I think. Yeah, that's right. I think I just keep keep asking and we can see this. That's the exact heuristic for working through working through anthropic outages is just manual.

26:24Okay, cool. So we're writing to this metadata file about the dives themselves. In a moment, I'm just going to show like the actual scaffolding for the repo that makes this possible. But essentially, you can think of it as like a package skill that Claude gets from, you know, from a readme, essentially, that helps it stand up a local Vite development server.

26:49And so once it pulls down all of the react code from the side of itself, we should get a local development server that we can iterate on a lot more quickly. Okay, we're getting through a little bit got more 500s. Just tell it to keep cooking. Yeah, keep cooking. Exactly.

27:14Come on. Yes. Oh, no. Oh, man. This is great. Yeah, this is a perfect example of like, working with working with Claude Code sometimes.

27:34Okay, a couple things. Yes, I do want to spin up a local preview. A couple things that are happening here in my repo. Come on.

28:03There we go. I've already got my tokens set up. And so my environment variables are being used by the agent. Here we go. It's just copying the dive code into the preview. You can't see my fingers crossed for Claude here.

28:28Okay, so we've got a server process. That is very promising. Okay, great.

28:35So in this repo, you know, I've told Claude that like every time we pull down a dive for local development to stand up this invite server locally, create the files and register them with CI so that we can deploy from the local server and then run our preview.

28:55Right. So let me go ahead and open the preview. And if everything worked, we should get the same. There you go. Same exact dive, right? Same styling, same data. It's still querying mother duck live using my token that I've registered in my environment. But it's on this, you know, this local development server. Cool.

29:19Ideas for changes, right? Like maybe the styling isn't so great. Like make this styling exciting. So Claude's just going to cook. And I also think that there could be some additional useful data in here. And I'm just going to give Claude like the vaguest of directions.

29:47Oh, this is interesting. So I'm not actually going to let Claude use Chrome for a moment. That's what it wanted to do. And it's just a little slow for this demo. But I'll just I'll just give it a little more specificity. Make the styling tufty style.

30:09This is a classic like data meme in here at mother duck where we just make the styling tufty. Don't use Chrome. Just do it. Come on, Claude.

30:24Yeah, it's interesting that it's instinct is to go look at it when it has the code. Right. So I think, you know, depending on what you're doing here, like I do find that as you get more mature with your dive and the interactions get harder for Claude to kind of visualize, it does absolutely help to use Chrome to look at it. But for the most part, you you can just like you have the code, like don't open Chrome to do this.

30:48Yeah. And this is the thing about like how fast Claude Code is improving is that it gets new tooling and new like confidence about how to use that tooling just about every day.

30:59And so you get experiences like this where, you know, if you're auto updating your client, it can suddenly just start to think about Chrome as like the P zero for doing web dev, which means that you get some workflows like this that weren't necessarily what it was doing yesterday. So you can either pin your Claude Code version or just kind of like ride the wave of some of these capabilities, which is what we're doing.

31:21So let's see. We're going to get. OK, so it seems like we're good to go with the API for now. We're getting some new styling and Claude is cooking. Sometimes it takes a little while to think through some of these things, just depending on the actual prompt itself. Look at that. Yeah, look at that. We've got a change.

31:43So Tufti style, right? Like very minimalist, very, very elegant, kind of like that New York style. I'm also going to ask, as it's working on that, like what else would you like to see? So Tufti style, right? Like very minimalist, very, very elegant, kind of like that New York taxi demo I showed earlier. I actually don't like how it's constrained the max width here. I'm not sure why it's done that.

32:09Don't constrain the max width. I'm also going to ask, as it's working on that, like what else, what other data can we add? Oh, come on. So we got through before the 500. We're now like full viewport. What other data can we add to this?

32:43So now we're actually going back to the MCP. This is the same workflow that I showed in Claude Desktop, right? Where it's listing columns, listing tables, doing some exploratory queries. It's running in a few areas that might be API related. Yeah, there's another 500. But we should be able to muddle through some of these MCP tool calls to query that data set and think about what else to add.

33:06I'm not being super creative here. I'm just letting the agent kind of dictate where we go. Obviously, if I had a specific analysis in mind, I would guide it with some more direction. OK, cool. So here we've got a few ideas that the agent shared about visualization, station level maps. OK, temperature overlays. That's interesting.

33:29Make a pivot table for temperature overlays. I'm actually not entirely sure if this is a valid thing to do here with this data. I've pretty minimally explored it, but let's see where the agent goes. Yeah, this is the fun part, right?

33:51Yeah, this is the fun part because, you know, everything's one prompt away and so you could do it super fast. And like, that's what I love so much about this local workflow is that it's fast enough to do iterative analysis. And if you don't like it, I just tell Cloud to roll it back. That's right. While we wait for this, I think, to go, one thing I'll just call out is as long as you're doing this exploration,

34:14I like to just tell it to, like, explore the different facets of the data. And that seems to give it a nice jumping off prompt. Cloud is in Opus in particular is very curious, so it does a pretty good job. But if you're using like chat GPT or another model that maybe needs a little bit more prompting, faceting is a great way to kind of trigger it to do more work. Yeah.

34:37There's so much just happening and trying to understand, like, the texture of the models and how they interact. That just comes from working with them over time. Okay, this is actually really useful, right? Like, we have. . . It's not a pivot table, though. No, it's not, but it is useful. The density table, maybe I'd call this. Yeah, yeah, absolutely.

34:59But you can kind of start to see, like, you know, what years have been warm, warm snowpack years. Like, you know, 26 has been so terrible. You know, maybe you can also also almost get the sense that there's been recent warming, potentially, as people say.

35:18And, you know, this is like just another useful bit of the React code that I want to keep. I want to keep around. Cool. So the Vite server that we've got going just hot reloads, and so this is super fast, right? And the next thing that I'm going to do, actually, is just show the deployment workflow.

35:42Anything else that we want to change about this from the audience or from you, Jacob? I think, you know, one thing that I kind of like to do is. . . Do you have snowpack accumulations by water year going back further than 2023 or 2022? Like, you have going back to 89, right? Yeah, we've got going back to 89. I would just be like, add everything to that first chart.

36:05Like, you know, progressively make the lines lighter the further away, the older it is. Cool. Add all available water years to snowpack.

36:23Let's just start with the available water years and see what type of, like, visualization density we get out of having, you know, what was it? Almost four years worth of data. Yeah, yeah. Let's see if that's manageable, and then maybe we can filter down by decade, right?

36:43I think, like, one thing that it did here, potentially, is because it was locally previewing this first, it was like, well, I can't get all, you know, 40 years of data. And so just, like, you know, took a sample. And then, you know, because it's just SQL to modify this to add more, it should be fairly trivial. Just add more lines to it. Yeah, it's also, like, a very reasonable thing. Oh, yeah.

37:07I mean, this is actually a great. . . Like, the visual works really well on a five-year trailing, but, like, you know, when I'm thinking about these trends over time, you know, and I have a ton of years, I love to just do it this way. It looks like, actually, it's refactoring the way this chart works, too. So you might lose your little mouseover on the right. That's totally fine. I mean, once we get 40 years, it'll be pretty unusable.

37:31I'm curious what Claude wants to do instead, right? Yeah, we'll see. We'll see how smart it is. Yeah. Okay, so we're refactoring the queries. So we should be almost complete. Yeah, perfect. Updating the labels and the rendering. Good. Yeah.

37:51I guess, like, one thing that I'll call out, like, especially if you're doing this as, like, your job, like, you know, you can run many Claudes at once doing many separate instances, right? This whole thing is sandboxable. So if you want to do a bunch at once, you totally can.

38:14That's a great way to spend a lot of tokens, but also, you know, solve a lot of problems at once just because there is a lot of downtime, you know, as we move between these things. The workflow that I've been doing is, you know, really heavily relying on subagents as well.

38:28And so just kind of making Claude or asking Claude to give a plan for kind of scaffolding the entire analysis or making a series of changes that I want and then having it execute with subagents. There's a whole lot of, like, new features in Claude Code to, like, work trees, for example, to enable kind of that single plan and, like, many agents executing workflow.

38:53And so definitely play around with that and just try to explore. OK, so we've got, like, you know, this is a super useful thing as well. I would maybe change the opacity on some of these previous water years to make it more obvious. But the agent knows that I care mostly about most recent water years, which makes a ton of sense.

39:14And it just added all of these previous years as kind of background context. We could keep iterating on this and just say, hey, add filtering, add, you know, group by decade, things like that. But this is close enough that I think we should go and push it up. I agree. Sweet.

39:32OK, so before we do that, I just want to show you the actual workflow that we're going to use to get this into a repo for version control and push it up into mothered up. Internally, we've been calling this the blessed dives workflow where, like, and this is just a super simple fig jam diagram kind of detailing the work.

39:56We've got this deployed dive that we already built. good results. We pulled it down to our local directory. I'm editing with Claude Code.

40:05Cloud uses this get dive guide tool to actually create the react. It's going to be compatible with deployment to Mother Duck. You know, we don't support every single JavaScript library, obviously, from a security perspective, and once we're happy, we're going to push up a PR on a new branch and the GitHub action that we have in the repo is going to deploy that dive as a preview.

40:29Attached to the branch so that we can preview it once we're happy. Maybe we iterate on it a little bit more in the preview state. We're gonna merge it to main, which then updates that original production dive ID. And then lastly, we've got one more GitHub action that once we delete the development branch will clean up the previous. Everything stays nice and tidy.

40:53All right, so back to my local preview. I'm just going to tell Claude, you know, put this on a new feature branch and put up a PR. I still got permissions bypass, so it's just going to keep cooking for me and put a PR on my repo.

41:18You can see we've got our new branch going. Adding the commits. And. Yep, there's the PR. Garrett, do you mind popping into GitHub and just showing the GitHub action also? Yeah, absolutely.

41:41I'm going to show that's PR and go. Yeah, OK, so we've already got the GitHub action kind of starting to deploy. That was from earlier, right? OK, so you. From an hour earlier, so we should get a new one here in a moment. I'm going to start on the PR. Yeah, perfect. There it is. Cool. So now I've got my PR and you know, Claude just gave me the link anyways. Did it do?

42:04So this is all Claude generated, right? Like we've all seen our Claude Code PRs by now. The most useful thing, though, for us is this GitHub action, right? So that branching or that that workflow that I just explored in Figma. What we should get here is. Yeah, there we go. A preview of that dive we've just created.

42:28And so the way that it works today is the repo is set up or the action is set up just to name it based on the feature branch, right? So here's my future branch that cloud created specifies that it's a preview. And if everything is valid, which I'm going to actually create a new open that in a new tab. And if all of our react is valid, we should get a live version.

42:52That same live version. Inside mother duck. There it is. Sweet. Very cool. Sometimes called like wants to include her random react snippets that aren't valid. And so you might get an error because it doesn't doesn't pass. Pass muster with what's allowed in mother duck and the dives feature.

43:15In that case, I just copy the error and go back to cloud and tell to fix it. And, you know, it pretty much always does. So this is that same dive, right, that we viewed on local preview. Now it is on this preview branch that is deployed as preview. OK, so we could keep this. And it actually is that GitHub action will rerun.

43:39So all of the changes that we make will get previewed again using the same preview dive. But once we're happy with that, let's go ahead and merge it. So I'm just going to do this in GitHub in the GitHub UI. I'm going to merge. My PR.

44:04And when it merges, we should actually that action will promote the code from our preview dive into the production version. So this was just, you know, a little bit of a preview dive.

44:23So this was just, you know, this dive we're looking at here is kind of just that preview branch. And the GitHub action will make a an API called a mother duck using that SQL API that just says update dive. And we should get that same.

44:46Let's see here. I may have to actually close the. Delete the branch. Cool, so I'm just going to delete the branch, which I'm doing manually. You could add this to the action, but it should clean up the old preview. As soon as these run and I'm just going to track.

45:10Where that's happening here. Cool, so this is our merge. Action run successfully. And we should have a second separate action for. Yep, for deleting the preview.

45:35So now the preview is gone sweet. Hmm. I bet it didn't put the link to the new one on your. It's not on your sidebar yet, right? Because it's owned by the.

46:00The blessed dives account. Yeah, there you go. No, that's not it. Go to. I think you need to sort these on like updated, maybe. Yeah. Cool. There you go. Yeah. One thing that I just. Did it, which is why it's a separate dive here is I've got our.

46:24A service, a mother duck service account, right? That's actually the owner of the dives that we create in that repo, and that's so everyone can contribute to it because I created that dive with my own token as the owner. It shows up separately. But just creating them with the service account token enables this kind of like version control get based workflow for dives. So it's the same thing, right?

46:47And had I had I done it right with the service account to begin with, it would just update. But we've got this exact dive now live in in mother duck. I'm just going to delete this old one because I don't need it anymore. And so we could take that same workflow, right? Like Jacob, you know, you could grab this exact dive. From the account locally and like make your own version, right?

47:10And put up a PR and that would just deploy on my GitHub action. Cool. Any other questions or stuff from the chat that we should make sure to cover?

47:28I don't think I see anything in the chat at the moment, but obviously feel free to drop a commentary into into chats. We can see everything on LinkedIn, YouTube and StreamYard here. So drop it in. We'll see it. One thing that I'll call out, Garrett, is I think we may have learned something today, which is I think it's V like feet, not fight.

47:52Oh, is it really? I don't know. That's what it says in the chat here. I just asked. Yeah, that's great. I'm not a front end guy. Like, I know. What is this? Yeah. Anyways, that's OK. I feel better about, you know, when I when I hear people say park at files. Yeah, sure. Yeah. All right. We do got a couple of questions coming in. So I'm going to throw a couple up here for you, Garrett. Yeah, cool.

48:16Stop sharing this for now. And I can pop it in. This is probably a question for me. Yeah. First question. Is there a list of UI components or libraries that a dive can use? Yes. Right now, it's recharts and D3. I expect that list to to increase over time. The next step here is probably us adding another component library that has some very specific affordances. But, you know, TB TBD on that. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah.

48:40Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. So I think I'm not really using D3, for example, in that NBA dive that had the heat map.

49:04I think that might just be like pure pure jazz. So you have a lot of flexibility. Obviously, the tradeoff is like you know, how many tokens you're consuming. Next question here from Sahil. Does the MCP use table comments? Yes, it does. The MCP does use table comments in the list tables and list columns functions.

49:28It returns the table or the the like description of the object or like that. Sorry, the name of the object, the type. Right. So like bar car versus string types versus whatever. And it also returns the comment along with that. Great, great question. So, yes, comments are 100 percent in there and they do indeed improve the ability for AI to use your data.

49:49From a LinkedIn user. I see you, Troy, over there on the other side. But it shows shows like this and in the stream yard. Any dives featuring geography and mapping yet? Great question. Not yet. You can do it by giving an SVG of the map that you want to to the MCP.

50:11I think that, you know, the complexity of getting the spatial mapping correct is going to require probably another set of libraries that we have. So, yeah, really, really good question. I think I think that is something we will consider, but I think, you know, just a matter of prior prioritization versus other stuff.

50:34Yeah. Great question here. Do these dives work with live data or does it bake data like the observable framework? You want to take this one? It's live. Simply, you know, like the the the dive code that we looked at earlier is just react and live SQL queries on mother duck. Right. So I could there's a there's a button to force reload in the session.

50:56But every time you come back to a dive, it'll run that and run that query and execute. So it's very much like. Yeah, I mean, I think like one of the advantages we have with mother duck is we have a really fast analytical database, you know, under the curtains. Right. So there's not the same need to cache it because the database and the viz are right next to each other. Right.

51:14There's no network latency there. All of those things just happen, you know, in the same in the same same same entity or I guess node. OK, great question here. Is the dive a single TSX JSX file or intended to be a single file versus bundling?

51:32Great question. At the moment. It is a single a single JSX file. You know, I think. On the edges, you know, I think it depends on how hard you're trying to push some of this stuff.

51:47You can get pretty far with a single file, but obviously you're trying to build a full on data app like, you know, I guess like not even data, just full application. I think that might be. Where you'd run into some of those edges. Definitely intended to be a single file for now, but, you know, we'll see where where people where it goes.

52:11I think that, you know, so far what we've seen is you can express very complex visualizations. And, you know, frankly, a thousand lines of react is a ton of code and you can get it. You can get it. You can jam a ton of stuff in there. Yeah. All right.

52:26Let's take next one here from being a can clod look at my query text and post simplifications rewrite based on stats available in the underlying data. Great question. Yes, but also it would. The way that it does that is not like a specific tool. You could just tell it to do it.

52:48Hey, look at this code, you know, you know, based on what you know about Duck TV and Mother Duck, you know, look at this query and rewrite it would be what you would do there. I would not be like, hey, like run the query optimizer on this. That's not available yet. Yeah, but great question. Can dives right? Mother Duck.

53:09Go ahead, Garrett. Oh, you know. OK. So today they cannot very soon. I think that will be different. We are working on how to land a right end point into into the MCP in a way that that is cohesive and makes sense. We have we are testing it in staging at the moment.

53:33And when that launches, I don't think I'm spoiling anything here, but that's a very obvious, obvious thing to be adding. Right. You could definitely potentially add some potential, some potential pieces there. One thing that's interesting is that we initially launched it kind of this way without that feature because we were working on landing a few like snapshot rollback features in SQL.

53:57So those have landed. You can now drop a database in Mother Duck, for example. We wanted to make sure that if we are going to give people the power to, you know, delete their database from a dive, for example, that you also have the ability to drop it and, you know, change some of that stuff yourself.

54:20Right. Because that is that is definitely way more powerful, but also, you know, the risk increases there. So we need to make sure that there is a good a good way to do this. So, yeah, definitely adding that was just going to be awesome. All right. And this is more of a comment than a question.

54:42I'm going to pull it up anyway as a follow up to the single TSX JSX file would be cool to get a high level markdown export snapshot of a dive. You can do that already. I guess like this is an interesting an interesting question. Right. Because I think it gets a little bit at the I think there was a question earlier from Victor about this, too, which is like, can you give it a dive and say, like, tell me about like what's in it?

55:04I think there's two parts of that. Right. Like, obviously, it has visibility to the, you know, the the react components and everything. The second part is because it's just SQL queries. You know, the actual answer to that is it doesn't quite exactly use the dive to answer the question, but it uses those SQL queries as a starting point.

55:21Yeah. Right. So it's not 100 percent, you know, like, oh, like, ask a question to a dive as like an on the rails workflow. Right. Although absolutely, I think that could that could be built either by users or potentially by us. That would not be hard to do, like constrain and ask to a specific set of tables or queries.

55:44I don't know, Garrett, if you want to add anything there. No, I just think that the work like the the Claude Code workflow is showing, you know, even on local when we are it's still constructing the queries. Right. Like it's not static data like you have it like you have in the Claude Desktop. It's still constructing the queries and using the API key to pull in the queries, query results.

56:02And so you can just tell cloud, like, use this query to explore and, you know, give me more context on snow water year in 1989.

56:11Absolutely. And just to show, like, kind of the breadth that you can take this, I'm going to show one special nugget for those of you who stayed all the way to the end.

56:31Yeah, I'm not going to zoom in too far because this is our prod account. Well, they're really great. I know all the really crazy ones are in. But I just want to show I want to show. Let's see. This is one that I'm working on. Let me see if I can throw this up here. Share my screen. Wait, I have one more question that nobody asked, but I think is very obvious.

56:54OK, go ahead. Can you share? Can you embed? Can you embed dives in in a customer facing application? Good question. Do you want to answer it? I don't answer my own question. Potentially soon. Yeah, I think it's fair. I think it's fair to say, like, it's something that we a lot of folks are asking about.

57:16And it's it feels it feels within reach. So watch. Watch this space. All right. I'm going to share my screen quickly for those of you who has a little nugget as a treat. Those of you who stayed to the very end. I appreciate all of you. This is something I'm working on. This is takes the DBT manifest and puts the lineage into a dive. For those of you who are building things, you know, building, building analytics and reporting on top of your database.

57:40You understand why this is important. All the interactions you want are here. I'm not going to show it. Just flash it quickly. This is our internal one. But, you know, all the things you would want. You know, you can zoom in, zoom out, filter. I can actually I'll show this. This is pretty cool. I did a column filter. So you can do like HS or ID. So here you can see all of the models that use this HubSpot or ID, for example.

58:04Just all of these things are very much in reach for what you're trying to do here. If you can think about how to prompt it. So, you know, I'm just just calling this out because it's not just like, hey, I can do charts and I can do, you know,

58:22I can do line charts and bar charts. And it's like, actually, you can literally anything that you can visualize, like on a 2D plane, maybe even a 3D plane. I have not tried 3J. I don't think it's supported, but you can get into Mother Duck.

58:36And so the possibilities are limitless. And we're super, super excited to, you know, share this with you all. Gary, you want to take us home and close it? Yeah, I mean, last thing I'd say, just, you know, if you would love to hear feedback from folks, please join join the Slack community and share your thoughts, what you're building.

58:58It's it's really cool just to see, like, the breadth of what you can what you can create with dives. And so just, yeah, thanks, everyone, for joining and can't wait to see what you build. All right. Thanks, everybody. We're going to wrap up. Gerald, you want to end us?

## FAQS

### What are MotherDuck Dives?

Dives are interactive data apps that sit on top of live MotherDuck queries. Rather than exporting a chart or emailing a spreadsheet, you share a URL. Whoever opens it sees current results. They're built with React, but you don't write any frontend code yourself.

### How does an AI agent create a shareable visualization?

The agent connects to MotherDuck through the MCP server, runs a query against your data, and generates a Dive — a self-contained app — from the results. You type a prompt in plain English, and a few seconds later you have something you can send to people. There's no dashboard to configure and no chart builder to wrestle with.

### Do I need to know SQL to use Dives?

No. The AI agent writes the queries. Someone on your team does need a connected MotherDuck account, since Dives run on live queries, but once a Dive exists, anyone with the link can view it. No SQL, no MotherDuck login on their end.

### Can I share a Dive with someone outside my organization?

Yes. Each Dive has its own URL. Send it to a client, a teammate, whoever — they don't need a MotherDuck account and they don't need to log in. They just see the data.

## Related Videos

[52:41](/videos/guides-context-layer-ai-agents/)[2026-08-13](/videos/guides-context-layer-ai-agents/)

### [Introducing Guides: Warehouse-Native Context for AI Agents](/videos/guides-context-layer-ai-agents/)

Guides store business context inside your warehouse so AI agents write correct SQL. See how warehouse-native context works in MotherDuck.

Stream

AI, ML and LLMs

MotherDuck Features

[52:23](/videos/text-to-sql-agent-evals/)[2026-08-12](/videos/text-to-sql-agent-evals/)

### [Trust the agents you build on your data](/videos/text-to-sql-agent-evals/)

Learn how to evaluate AI agents that query your data: run text-to-SQL evals with Braintrust and MotherDuck, read traces, and fix failures with context.

Webinar

AI, ML and LLMs

SQL

Ecosystem

[41:41](/videos/robust-data-pipelines-ai/)[2026-07-22](/videos/robust-data-pipelines-ai/)

### [Writing robust data pipelines with AI](/videos/robust-data-pipelines-ai/)

AI writes data pipelines in seconds, but green isn't correct. Build robust data pipelines with AI: eyes on data, foundations, tests, and contracts.

Webinar

Data Pipelines

AI, ML and LLMs

MotherDuck Features

[View all](/videos/)