How I AIHow Block’s custom AI agent supercharges every team, from sales to data to engineering
EVERY SPOKEN WORD
45 min read · 9,385 words- 0:00 – 2:27
Introduction to Goose and its data analysis capabilities
- BABrad Axen
Gooses are AI agents. We kind of designed it to be really agnostic. You tell it what you need it to do by connecting it to different capabilities, and it can just solve any problem. What I'm gonna do is take that CSV that Jackie was working with, I'm just gonna pop it over, and I'm gonna say, "Can you read through this data? Use it to create items in my Square dashboard."
- CVClaire Vo
So we took a CSV that we didn't even have to look at, that probably had data that was not in this exact format, and you created a product catalog.
- JBJackie Brosamer
What a lot of my work and what my team is trying to do is not just make it faster for someone like me or on my team who has data expertise to go through this, but to allow our finance team, our sales team, anyone in the company, to be able to dig in and self-serve a lot of this data, rather than having to ask an expert and wait for that to come back.
- CVClaire Vo
You have been the first person that's told me [chuckles] it was the salespeople that were begging for it. We hear so much, you know, engineers are leading in, and they wanna vibe code, and they wanna do all that. But it's nice to hear that the folks close to customers and close to revenue are also seeing the value. [upbeat music] Welcome back to How I AI. I'm Claire Vo, product leader and AI obsessive, here on a mission to help you build better with these new tools. Today, we're speaking with Jackie and Brad at Block, who are gonna show us how their open-source AI agent, Goose, can be used to do everything from vibe data analysis to vibe coding in MCP. Let's get to it. This episode is brought to you by CodeRabbit, the AI code review platform, transforming how engineering teams ship faster with AI without sacrificing code quality. Quality code reviews are critical but time-consuming. CodeRabbit acts as your AI copilot, providing instant code review comments and potential impacts of every pull request, beyond just flagging issues. CodeRabbit provides one-click fix suggestions and lets you define custom code quality rules using AST GREP patterns, catching subtle issues that traditional static analysis tools might miss. CodeRabbit brings AI-powered code reviews directly into VS Code, Cursor, and Windsor. CodeRabbit has so far reviewed more than 10 million PRs, been installed on one million repositories, and has been used by 70,000 open-source projects. Get CodeRabbit free for an entire year at coderabbit.ai, and use the code HOWIAI.
- 2:27 – 4:48
How Block embraced AI across the organization
- CVClaire Vo
Thanks for being here!
- JBJackie Brosamer
Thanks for having us.
- BABrad Axen
Yeah, excited to chat.
- CVClaire Vo
I am so excited to have you two on How I AI, because I have been so impressed how Block has, as a full organization, and a large organization at that, really embraced AI, it seems, everywhere and for everything. And, you know, everybody's worried about AI-native startups, but you're one of the companies that I really think is going there very fast as a much larger organization. So how did you lean in as an org so fast and so broad?
- JBJackie Brosamer
I think it's a combination of both, like, bottoms-up and tops-down. We saw, you know, a lot of concentrated pockets once ChatGPT came out, that we're really finding a lot of value out of these tools. For example, salespeople, they're like, "I... Any tool, give it to me, like, I'll use it. Help me get those leads." And we also saw a lot of engineers, you know, starting to lean in as these tools became really good at coding, and kind of as that, um, started from the bottom, I think a lot of our leadership saw a lot of promise, and they've been, you know, trying to make some of those practices a little bit more consistent among groups. I think that it's really a great time to focus on organizational transformation, because to me, that's really what's gonna define who ends up, um, the winners in whatever this AI future is, is who not just leans into technology, but even more than that, leans into the organizational transformation, which can in a lot of ways be even harder. It's, like, really easy to get, uh, technology to go exponentially, and humans don't go exponentially so well.
- CVClaire Vo
You have been the first person that's told me it was the salespeople [chuckles] it was the salespeople that were, were begging for it. We hear so much, you know, engineers are leading in, and they wanna vibe code, and they wanna do all that, but it's nice to hear that the folks close to customers and close to revenue are also seeing the value.
- JBJackie Brosamer
Yeah, I think it's... You know, everyone finds, like, that different first use case that really gets them hooked. And one of the things I've been really impressed with with some of our, um, non-developers especially, like, we all kind of know how people use it for vibe coding, and I think that's, like, well-discussed, is non-developers are just so creative and so tolerant of, like, stringing together a bunch of different tools just in a way that you never would've imagined. And that's, I think, really gonna be the power, is getting these tools closer to the people that actually understand the problems and see what wacky things they come up with, with
- 4:48 – 7:45
What Goose is and why Block open-sourced it
- JBJackie Brosamer
this new technology.
- CVClaire Vo
Not only are you all leading the way in terms of how organizations... And I totally agree with you, I think the biggest transformation is cultural and operational. The tech piece is, like, a lagging piece of it you can figure out. But what I also love about what you're doing is not just how you're embracing it internally, but how you're trying to drive and help others adopt it externally. And so I'm wondering if you could tell us a little bit about the adorably named Goose, and what Goose is, and why you all built it.
- BABrad Axen
So Goose is our, like, AI agent, and there's a... A lot of people have a lot of different definitions for what an AI agent even is now, but I'll say specifically what we mean by that is, it's powered by an LLM, but it has a whole collection of tools that it's gonna go use to solve problems for you. And, uh, this is, like, something we're really excited about, uh, in part just because it, it lets us, like, build for ourselves and, like, come up with workflows that work for our company. But like you said, we open-sourced it, because we think there's a lot of extensibility for everybody, and we kind of designed it to be really agnostic. Like, you, you tell it what you need it to do by connecting it to different capabilities, and it can just kinda solve any problem, and I think we'll get to show some of that today. And, uh, that's all powered by MCP. So that's a big part of this, like, open-source, uh, puzzle, is how do we make this work-... no matter what you want it to do, and MCP really helped us get in, like, early into helping to establish the protocol, and have a way for us to connect it to anything. And people can develop their own MCPs and just make things work.
- CVClaire Vo
Got it. So you... And I just wanna show here, it's up on GitHub, it's open source. It's your agent, your agent framework, powered, uh, a lot, it seems, by MCPs, which I think we're gonna talk about later, that anybody can, can use and extend, extend upon. And what, what made you all think about open-sourcing this?
- JBJackie Brosamer
Yeah, open source is, I think, a really big emphasis just as a value for our company, and I think there's two ways we think of it. Number one, this is just, like, the right thing to do, you know, for the world in some way. But then there's also, we think that there's so much benefit in terms of having this open ecosystem, and really seeing these patterns emerge from not just, you know, the engineers that we have in our company, but from engineers all over the world. And I think we're really seeing that come to fruition with a lot of the growth that we've seen in MCP, you know, and all the MCP servers that are out, out there, and it's only been, you know what? Like, six, eight months.
- CVClaire Vo
Yeah.
- JBJackie Brosamer
Um, and then I think we also wanted to really lean into open source in order to take advantage of all these different models that are coming out. A lot of the tools that come bundled, you know, released by these different model providers, can only use, like, that kind of models, and we know that every month, a new model's coming out. One might be better at coding, one might be better at writing, and we think there's a huge amount of power in being able to bring together data across all these different MCPs, and then also pair that with really any model
- 7:45 – 12:18
Demo: Analyzing farm-stand sales data with Goose
- JBJackie Brosamer
that you want.
- CVClaire Vo
Okay, so speaking of data, I think you're gonna show us how to do Vibe data analysis, which is a first for How I AI. So it's a flow that you use internally, so this is definitely something... We're not making it up. You use this exact flow day-to-day, but we're gonna use some fake data so we can screen share and really get into how it all works. And so Jackie, what kind of business are we today, that we're gonna do some data analysis with?
- JBJackie Brosamer
Yeah, so I tried to make this as realistic as possible, but I don't work in tech. I actually have a small farm, um, that is not very profitable. Um, and so we're gonna be doing some analysis that I've actually done with my own internal data, that kind of shows us how we can, um, look at some business data and make some recommendations. Um, so what we're gonna do is go ahead and look at this to try to find this local, um, CSV of data that has July data for my farm stand, which, um, does a bunch of, uh, vegetables. And what we've asked is, um, we've asked Goose to use Pandas, which is a Python library, to tell me the items, how to have the best revenue, and, like, what the busiest days of the weeks are, and then I left a general kind of question at the end, um, just what are some trends? Because I think it's always interesting when you get a slightly different result, um, as you run this. And so you can see the first thing that we're doing here is it's using ripgrep to find, um, the CSV. Um, we found that ripgrep is actually really effective, even though it's really simple. There's a lot you can get done with it, versus something fancier, like a semantic search. Um, it identifies this July data at CSV, nav- then it writes a Python, um, command. It found it... Some error, um, where it didn't have this installed. Oh, no, this is maybe going into cursed virtual environment territory, but it looks like it's going to, uh, solve itself. Sometimes I'll tell it, like, "Check your Python environment," so that it makes sure it sources it, but it decided to go ahead and create a new virtual environment here. One of the things I really like about Goose is I'm terrible at maintaining developer environments, and so it will go through and try to just, like, debug that for me.
- CVClaire Vo
I mean, how many of us, maybe this is a very niche comment, have been victimized by trying to get the right version of Pandas installed? [chuckles] 'Cause I definitely have. Okay, and just taking a step back, we didn't see the input data, but is this just, like, general, day-by-day, like, sales-
- JBJackie Brosamer
Yeah
- CVClaire Vo
... of different products?
- JBJackie Brosamer
Exactly. This was just a list of, you know, item, quantity, date, price.
- CVClaire Vo
Okay. Got it.
- JBJackie Brosamer
Um, and so from that, it's able to go through and say, "Okay, you know, your top generating... Your top revenue-generating items are berries." We love berries, um, very high margins.
- CVClaire Vo
[laughs]
- JBJackie Brosamer
And it's got, um, you know, the best days are, like, uh, Thursdays, and so... And then I just had this, you know, bonus question of like, what are some key insights, guides, and trends? It'll kind of lead into some stuff later. So cherries have the highest average value. Um, it goes through, you know, what are your mid, high, low items and then, you know, goes through some weekly patterns. And so without even asking, of course, it comes out with some recommendations, which I really love.
- CVClaire Vo
Let's just pause on these recommendations.
- JBJackie Brosamer
Yeah.
- CVClaire Vo
So what I, I love about this is, you have this ugly file. You probably could have tossed in a spreadsheet or done some of this analysis yourself, and you're, you're doing sums, and you're doing pivot tables, and you're trying to explore this, and you probably have to do different tabs for all these different analyses. And this, you can really drop in, and it's maybe a, a relatively, if you scroll up, it's, you know, relatively simple analysis by day, by product, but under the hood, you have this pretty powerful data analysis package. And so I'm presuming you can go from this level of analysis to something much, much deeper.
- JBJackie Brosamer
Yeah, that's right. And I... When I'm doing something like this live with something like Goose, what I'll usually do is kind of, you know, have it take a high-level first pass, and then, you know, dive into specific sections and say, like, "Hey, can we go deeper here?" You know, use this particular type of method. You know, do a line regression that tries to figure out price elasticity or something like that.
- CVClaire Vo
Well, and I have to say, as a mom of young boys, I do feel like I spend, you know, $1,500 on strawberries every [laughs] month. So this is really hitting home. Okay, so we can go down, and then I'd love to see... I like the idea of when you're prompting a data analysis to say, "Give me the data analysis, but also give me some recommendations." And so it's really saying here, you know, high-margin items, which is great. Uh, look at why Friday drops, 'cause, you know, maybe they would expect that to be a higher day. Weekend sales, and then some, oh, price adjustments. That's really-...
- 12:18 – 14:15
Creating shareable HTML reports from data analysis
- CVClaire Vo
interesting. So what would you do next after this?
- JBJackie Brosamer
Yeah, so I don't think that this is, like, very good to share. And so a lot of times what we see is that people really like to share these kinds of analyses as local webpages, especially people who aren't technical or just a whole new world has opened up with them- to them as they figure out how to use AI to turn some of the stuff into HTML and share it with each other. We see a lot... We have a way for people to use Goose to share these internal static websites, and we see that really popular, especially among, you know, some of our business users that wanna kind of create their own dashboards for, you know, whatever.
- CVClaire Vo
While this is generating, I'm just reflecting on what I've seen so far. So it seems like Goose has sort of a virtual machine in which it can write code and wrestle with Python dependencies. Love that for, for Goose. It has the ability to spin up hosted HTML and websites. Is that right? Is that what it's kinda doing here?
- JBJackie Brosamer
So it's all running locally.
- CVClaire Vo
Okay.
- JBJackie Brosamer
I think that's one thing that's, like, really unique about Goose, and part of the reason, you know, we started that way is that, um, we s- a lot of our developer environment stuff happens locally, and so that was, like, a really natural fit. And then we also saw within the open source community that this has actually been really popular with the kind of the crowd that really wants to maintain, um, end-to-end control over their workflows. One of the things we've seen with Goose is that some of the most, um, promising use cases are, you know, you tell Goose to do something, you kind of go away and, um, you know, wait for that task to complete as it does things like, you know, write code error, er- errors.
- CVClaire Vo
Oh!
- JBJackie Brosamer
And so it-
- CVClaire Vo
Look at this
- JBJackie Brosamer
... it popped, it also- it's also cool 'cause it can... It went ahead and popped this up for me.
- CVClaire Vo
Yep.
- JBJackie Brosamer
This is not the prettiest website it's ever made, um, with this fake data, but you can see, you know, it's, it's able to make these bar charts with Plotly. Um, and I could go ahead and dig in and try to refine this if I wanted it to be, you know, a little bit more well-designed.
- CVClaire Vo
Got it. And, you know, if I was being cheap and easy about sharing it, I would just print as a PDF and-
- JBJackie Brosamer
Yeah
- CVClaire Vo
... shoot it over, and it would look-
- JBJackie Brosamer
Yeah
- CVClaire Vo
... look nice.
- 14:15 – 18:56
Model context protocols (MCPs) that Goose uses
- JBJackie Brosamer
Um-
- BABrad Axen
When we run this internally, we have a, an MCP that it connects to, where you can just publish it to the company.
- CVClaire Vo
Got it.
- BABrad Axen
Like, so kind of keep it internally private, but share it with anybody.
- CVClaire Vo
And what are the MCPs sort of out of the box that if I, um, cloned the Goose repo right away, would it, would it have ready to go? And then what are some kind of ones that you've either built or integrated, um, specific to maybe what you do at Block?
- JBJackie Brosamer
Yeah, so we have, like, a collection of different MCPs. Um, some of them we've taken from the open source community, some of them we've developed internally because, you know, for example, we have an internal data MCP that I use every day that helps, you know, sort through, where's the revenue for X product? I mean, it knows all that context, and we're also working on trying to have external MCPs that, you know, connect to our business products. Um, a lot of what people are using Goose for, and a lot where we saw the first value, is just MCPs that connect to all of our key internal systems. So Google Drive, probably the one I use the most. Um, Brad mentioned this one we have internally called Block Cell, that's really popular because at the click of a button, you know, you can publish a website and send a URL to anyone in the company. We also have a developer extension that does a lot of this, like, command line and tool stuff. We also have a computer controller one that just did... And that's how it just opened this Chrome window.
- CVClaire Vo
Got it. Cool.
- BABrad Axen
And that's, that's the stuff that bundles with Goose. So when you get it, it's like you're gonna have, like, five-
- CVClaire Vo
Got it
- BABrad Axen
... really simple, like, memory developer.
- CVClaire Vo
Yep.
- BABrad Axen
And, and then when we use it internally, we have, like, 40 or 50.
- CVClaire Vo
Yep. And, and Jackie, how often are you doing an analysis like this in your week using Goose?
- JBJackie Brosamer
Um, if I'm doing an analysis, I'm using Goose.
- CVClaire Vo
Yep.
- JBJackie Brosamer
Um, more... [chuckles] The question is more like, how many analyses, uh, do I do per week?
- CVClaire Vo
Yeah.
- JBJackie Brosamer
I would say that I probably actually use it more in my day-to-day life, uh-
- CVClaire Vo
Yeah
- JBJackie Brosamer
... for writing.
- CVClaire Vo
Mm-hmm.
- JBJackie Brosamer
But there's people in my team that, you know, are professional analysts or professional data scientists that are doing this, you know, every day. And I think increasingly what a lot of my work and what my team is trying to do is not just make it faster for someone like me or on my team-
- CVClaire Vo
Mm
- JBJackie Brosamer
... who has data expertise to go through this, but to allow our finance team, our sales team, you know, anyone in the company, to be able to dig in and, like, self-serve a lot of this data, rather than having to ask an expert and wait for that to come back. I think we've all been talking about, like, the age of self-serve data for a long time, and it's, like, kind of gotten better, but we all know that you usually still go ask a data scientist. And so I think it's really interesting to think about how can we, you know, kind of short-circuit that and allow everybody to focus less on kind of the rote parts of data analysis, and spend more time talking about, you know, the insights and the context and the creative parts that we all wanna spend our days on.
- CVClaire Vo
Okay, so we've talked about the salespeople love their AI. The farmers love their AI, but can we please get back to what people can wrap their head around, [chuckles] which is the software engineers? So you have this, you have this great, great data, um, and you wanna do something with it. And so you have this data, you know, maybe you wanna do something with it to improve your business. Brad, what's the next step in your mind here?
- BABrad Axen
Yeah, let me, let me share some, uh, on s- my screen this, for this, and we can show a little bit about, like, how a developer can build MCPs and use that to actually, like, connect to what someone is doing into, like, existing products or to, like, solve new problems. And this is really how I spend my day-to-day. Like, I feel like at, at this moment in time, I'm, I'm just developing MCPs left and right.
- CVClaire Vo
And I'm gonna just pause right there, because no matter how many times people hear it, they still need an MCP explained to them. So we're gonna... Brad, we're gonna take your explanation of what is an MCP.
- BABrad Axen
Let me do that by showing you the page for it in Goose here. So in, in this, we have a, a, just this huge collection of extensions in Goose, and these are all implemented with Model Context Protocol. So each of these is an MCP server, and what that means is that it has a collection of tools that-... it exposes to the agent, and it can do a couple of other things, like provide data resources and all that other stuff. And so it's, it's like a protocol that lets the agent talk to a third party and get th- things that it can do, and, uh, data it can read. And, and most importantly, it's kind of the arms and legs for the model. So this is how the model goes and interacts with the real world, and, like, makes changes in online systems.
- CVClaire Vo
Okay, so you're spending all your time building MCPs. It seems like everybody is spending all their time building MCPs, so-
- BABrad Axen
Right
- 18:56 – 23:35
Demo: Using Square MCP to create a product catalog
- CVClaire Vo
... why don't you walk us through how you're spending your, your days?
- BABrad Axen
Yeah. And so let me start by showing you an existing one before-
- CVClaire Vo
Mm-hmm
- BABrad Axen
... we start building. And so I've turned on, uh, a, a real Square MCP server. So this is, like, from... This is available, like, as an online MCP server that people can use to, like, run their business. So this is my Square dashboard, and it's totally empty right now. Um, this is a, a kind of an account I set up for the sake of the demo, and, uh, we're going to connect that through our agent and actually have it fill things in. So what, what I'm gonna do is take that CSV that Jackie was working with, and I'm just gonna pop it over, and I'm gonna say, um, "Can you read, uh, through this data and use it to create items in my Square dashboard?" And so this is something that you could do with all kinds of input formats. Like, for example, I could give it a- an image, and, like, a, maybe a picture of a menu or something like that. Um, and so since it's multimodal, it's just gonna go figure out that source, translate it into the API calls that it needs.
- CVClaire Vo
And I'm thinking as a product builder who has built many import-your-data products-
- BABrad Axen
Yeah
- CVClaire Vo
... where you're always trying to say, like, "It has to be a CSV in this format, in these columns-
- BABrad Axen
Right
- CVClaire Vo
... with this column name," and what I've just realized this opens up for you is, like, drop in your arbitrary, messy, whatever data. Don't have to reformat it. Let the MCP figure out the translation-
- BABrad Axen
Exactly
- CVClaire Vo
... and then get it into the system. Okay.
- BABrad Axen
Yeah. So it doesn't matter what you've got. It's gonna figure out... It could be a PDF, whatever.
- CVClaire Vo
Yeah.
- BABrad Axen
It's gonna do its best to, like, figure out how to make that work. You know, the first thing it does is it just reads it.
- CVClaire Vo
Yep.
- BABrad Axen
And, uh, it's then gonna go... This is actually a really interesting part. I think the Square team did a great job designing this MCP, because it has so many different things that you can do on Square, that it's, like, too much for the model to handle all at once. So what it actually does under the hood here is it, is it says, like, "Oh, uh, if you need to know about catalog, I give you a method to look up what you can do in catalog." And then under the hood, the LLM is seeing, like, all of these operations that it can now access. So all that stuff about, like, creating items, it figured out. Um, okay, and I actually see the, uh... It's like s- [chuckles] this is a funny... I normally would just read the CSV, [chuckles] um, so I'm like, I'm, like, laughing a little bit at, like, how much work it's going through for this, but, uh, it is what it is.
- CVClaire Vo
I know. I have, I have that same experience using, like, a Cursor Max mode, where I'm like, "I just don't know if you need to work, think- to think that hard- [chuckles]
- BABrad Axen
Exactly. Yeah
- CVClaire Vo
... to do this," but, you know, it's not my brain. It's the AI's brain.
- BABrad Axen
Yeah, yeah. So we'll, we'll see. Let- I'll let it cook for a minute here, [chuckles] um, and see how it figures this out. But effectively, what's happening is it's just deciding to use, uh, shell commands to grab the prices from that CSV, and then it's gonna turn that into an API request and actually send it to, uh, the Square dashboard, and create, like, a product category, and then fill in the items. So we should just be one request away from getting that solved.
- CVClaire Vo
Got it, and, you know, instead of sitting here and waiting, Jackie, I'm presuming Farmer Jackie would have to go in here, and one by one, sort of enter, enter this data in and make sure it's right, and all that kind of stuff.
- JBJackie Brosamer
Uh, one of the, like, really underappreciated, uh, things about LLMs is, like, how much they function as, like, data duct tape. You know, it's like it doesn't quite fit. You can do something to just kinda make it all mush together.
- CVClaire Vo
Yep.
- JBJackie Brosamer
Um, and that's where a lot of the day-to-day data work is, is trying to match all those things.
- CVClaire Vo
[upbeat music] How I AI is now on Lenny's List, with my personal selection of the best AI engineering courses on Maven. You can spend months thinking and playing with AI before really integrating it into your workflow or shipping an actual AI feature. If you wanna start building, then these hands-on Maven courses are for you. Learn directly from Aishwarya Naresh Raganti, MIT instructor and AI scientist at AWS, or Sander Schooten, who has authored research with OpenAI, Hugging Face, and Stanford. To pivot into an AI role or successfully lead your company's next AI initiative, visit maven.com/lenny to enroll now. Use code LennysList for $100 off. That's M-A-V-E-N.com/lenny to get ahead in the AI era and start building.
- 23:35 – 26:30
Creating payment links from analyzed data
- CVClaire Vo
Okay, look at that! So we took a, a CSV that we didn't even have to look at, that probably had data that was not in this exact format, and you created a product catalog out of it.
- BABrad Axen
And this is something... Like, I could follow up with this and say, like, "Okay, grab images, or even generate images, and, like, upload them all."
- CVClaire Vo
Yeah, that's what I was gonna ask. [chuckles]
- BABrad Axen
Yeah.
- CVClaire Vo
I, I want a, I want a AI-generated apple image.
- BABrad Axen
Exactly, yeah. And the, um... I'll skip it for the, the sake of time, but, like, there's so much you can do to just, like, navigate through all of this, and this is something where, like, we're watching it live for the sake of the demo, but what really the best version of this is, like, hand it the CSV and walk away [chuckles] and come back, and then you're gonna just see that this is done. And so that kind of, like, background task thing is the, I think, the best mode for Goose in a lot of ways. But yeah, it, like, goes and figures this out, and this is, like, a real account. So what's cool about this is that this isn't just, like, a little website showing that I have prices for apples. It's something I can take payments with. So I can now say, um, "Okay, let's make a payment link for three pumpkins."... and we'll let that run for a little bit, too.
- CVClaire Vo
This is not, this is not the topic I thought I was- [chuckles]
- BABrad Axen
Yeah
- CVClaire Vo
... gonna get from you all today. You know, I had a lot of things in mind, but using AI to generate farm stand payment links for gourds was just not on the [chuckles] top of my list this, uh, this afternoon, but I'm excited to see it. Okay, so I think, you know, one of the other things that I think, and I know this is running locally, and we won't get into, like, sort of the local mobile debate right now, but I just think that the ability to do this stuff via text on the go is so powerful. Imagine somebody wants to buy the three pumpkins off the back of your truck, and you wanna be able to do this really easily. This sort of, like, ability to just type in a, a, a s- short command to get a really custom software solution, um, backed by, you know, either a platform or not, I think is pretty cool for people.
- BABrad Axen
I, I think there's, like, so many little details, too, that, again, like, while you're watching it, it's a little slow-
- CVClaire Vo
Mm-hmm
- BABrad Axen
... but-
- CVClaire Vo
Yeah
- BABrad Axen
... but it just figures this out for you without any intervention. Like, oh, it's- it has to decide which location I'm selling these from-
- CVClaire Vo
Mm-hmm
- BABrad Axen
... for the payment link, and it's just- it just, like, saw that ne- it needed it, and, and, like, went and looked up-
- CVClaire Vo
Yeah
- BABrad Axen
... what locations I've got here. And, uh, like just, it just unblocks itself-
- CVClaire Vo
Yeah
- BABrad Axen
... which is really nice. So you can just wait for this to go. And so, okay, so I actually have a real payment link, and this is just gonna load up, and it uses my items, has a price, um-
- CVClaire Vo
Look at that!
- BABrad Axen
Yeah, and so we could just throw in a real credit card right now, and this would work, and I- and we would collect on that. And, and so this is like... Okay, so this is a bit of a tour of an existing MCP, like, how you connect these agents to real products, and but then I think what's... Like, part of my job is really, like, okay, what's, what's the next step, and how do we make the agent do the next step? And,
- 26:30 – 31:18
Demo: Building a custom email MCP
- BABrad Axen
and so for me, I think a thing we could switch to from here is, like, maybe we go give it another MCP so that it can send these payment links in an email. And so I have a test email account here that's totally empty, and I think we can work with that, and then just try to show you how you can literally ex- like, extend the existing conversation. So I'm gonna leave this open, and we'll come back to it, and I'm gonna make a new window that we're gonna use to make the, like, vibe coding half of this. So we'll just go vibe code and MCP together. I'm also gonna open up a terminal window so that we can follow along. And I did do one thing in advance, [keyboard clicking] which is, um, I went and grabbed an API key, uh, here in an env file, and, and I set that up just in advance, so we didn't have to show the API [chuckles] key on the screen. Um, and so we're gonna use that to, um, set up an MCP server with Mailgun.
- CVClaire Vo
And I wanna just pause here because we've heard this a lot on this podcast, which is people are always saying, "You know, you can, you can do the output. I'm sure you could take this link and send the email," but anytime you're about to create an output, instead, think about, "How can I create a tool or a prompt or an input that could do this for me?" So instead of saying, "Great, I'm gonna email this link," you say, "Great, I'm gonna build an MCP to send emails."
- BABrad Axen
Exactly, yeah.
- CVClaire Vo
Got it, okay.
- BABrad Axen
Like, how do you take that whole end-to-end workflow and solve every part? Yeah. Okay, so let's, let's talk it into, um, vibe coding and MCP bars. So the way I like to do this usually is I'll start with the scaffolding and making sure that everything kind of connects and works. So I won't even say MCP at first. I'm gonna just say, like, let's try to send an email. Um, so I'll tell it, like, I have [keyboard clicking] a scaffolded Python package here using UV. I'll tell it about that .env file I mentioned, and I'll tell it what's in there 'cause I don't want it to actually read this. It's like, you know, I don't want the, the model to know about my API key. Um, [keyboard clicking] and so then I'll say, "Can you make the Python, uh, Python script in this directory, uh, that sends a test email?" And this is, like, the vast majority of the work. Like, it going from a blank slate to sending a test email, that's the hard part. The, the MCP half is really easy. So yeah, I always start that way, like, let's just prove that everything works.
- CVClaire Vo
That you can do the thing, and then we can figure out how to invoke the tool.
- BABrad Axen
Yeah. And, uh, this is actually another feature of Goose [chuckles] that I'm kind of glad it accidentally triggered, is that it, it tried to read the,uh, .env file, um, because it was like, "Oh, what am I working with?" Um, and we denied that actually, because it's, like, a security concern. So there's a bunch of stuff that we try to catch, um, and so it can't see it, but it's, it's gonna have to just trust me that I, what I said is in there, and then use it. And so, okay, and let me follow along over here. [keyboard clicking] So I'm gonna just, uh... We have a new file now, send test email, that should be using this, um, and it just wrote that, and if I wanted to, like, follow along in detail, I could do- I could, I could read it in an editor or something like that. But for the most part, I'm just gonna trust it [chuckles] and hope it works. And so let's say, "Okay, can you..." Um, and I'm gonna give it that demos email.
- CVClaire Vo
Got it. So now it's written the script, and you're just gonna double-check this thing works and that-
- BABrad Axen
Yeah
- CVClaire Vo
... I'm gonna get an email out of the script.
- BABrad Axen
And so it figured out what I meant by the .env.
- CVClaire Vo
Yeah, yeah, yeah.
- BABrad Axen
So it's like, "Okay, I found a thing," and it's got this hard-coded recipient-
- CVClaire Vo
Yeah
- BABrad Axen
... that it's gonna go edit. And you can see, like, uh, if I, like, just re... Yeah, there. It, like, just fixed that for it now that I told it who it's gonna send it to, and it's figuring out all this virtual env stuff.
- CVClaire Vo
Okay.
- BABrad Axen
Just like we got.
- CVClaire Vo
So just AI, just like us, figuring out its virtual environment.
- BABrad Axen
Yes.
- CVClaire Vo
That is the theme of, of today's [chuckles] -
- BABrad Axen
Yeah, every time
- CVClaire Vo
... this show. [chuckles]
- BABrad Axen
Okay, and then let me go over here and see if we got it, and I'm sure it's gonna end up in spam or something. [chuckles] Um, yep.
- CVClaire Vo
Oh, there, there it is.
- BABrad Axen
And so we got a test email sent with Python. Um, and it goes to spam because obviously this is all demo stuff. That's not surprising.
- CVClaire Vo
And whenever I... You know, I get engineers asking me a lot, they're like, "Um-... Mailgun, it's well-documented. I can write the thing. But I think about the number of characters you wrote in Goose, [chuckles] and the- just the number-
- BABrad Axen
Right
- CVClaire Vo
... the, like, the typing that had to happen-
- BABrad Axen
Yeah
- CVClaire Vo
... in the file, and I just think it has just saved you 15 minutes of time-
- 31:18 – 36:09
Testing the new email MCP with Goose
- BABrad Axen
okay, so, so now that this work- is working, let's, let's turn it into an MCP. And then this is an example of, like, a little bit of model knowledge going a long way. So this model isn't trained recently enough to know about the MCP SDKs, so that's, that's a thing where I'm gonna actually go get it that context so that it can use it. And so I'll just go find, like, the, um, [keyboard clicking] yeah, mcp-python-sdk, and we'll just grab it from the README. And so at this point, I could actually tell Goose the URL, and, like, it could download this README, and, uh, it would work. But I- I'd rather just, like, copy and paste, honestly, because it's easier.
- CVClaire Vo
I'm, I'm the same as you. I'm just like, "Let's just drag [chuckles] the whole page- "
- BABrad Axen
Yeah
- CVClaire Vo
... "and paste it in."
- BABrad Axen
Yeah, exa- and it's like, okay, great. Like, it's already got these links. All I need is just this one example, and that should be enough. And so I'll say, um, you know, okay, [keyboard clicking] be nice to your LLMs, of course.
- CVClaire Vo
I agree. Be nice to your LLMs.
- BABrad Axen
Yeah. Uh, [chuckles] so I'm gonna say, now we're gonna make, um, an MCP server out of this. Uh, here's reference code. And then I'll say, uh, can you use that example to make an MCP with a send email tool? And we'll see how far it gets with no other context, actually. It- we might need to tweak stuff, but hopefully that's, like, a good start for it.
- CVClaire Vo
And while it's, it's thinking, are you doing... Is- does Goose auto-select models, or do you have a default? Do you have a favorite?
- BABrad Axen
We, we do- we currently don't auto-select models, because the- just people bring so many different models to Goose. And so for us, um, we kind of switch context by context, like Jackie was mentioning. So, like, for writing code and using these tools, currently I'm using Claude Sonnet, which is great. Um, but when I... You know, if I wanted to, like, go write, um, a, a design doc, I might actually switch to, like, one of the reasoner models from OpenAI. Um, or I could even, like, try out, like, a local-only model and run a QN. Okay, so let's see what it's doing. I'll check in again. And I'm, I'm just gonna, like, take a look. Okay, so it's n- got a new file, and it's combining, like, what we were doing before, and it's following that example pretty well, it looks like. And that's actually good code. I'm gonna, I'm gonna interrupt it, honestly, because I, I, I know what it's going... It's going down, like, a slightly wrong path, 'cause it doesn't know how I'm gonna integrate it. So I'm just gonna pause that, and I'll make-
- CVClaire Vo
I, I like the, I like the, the judgment-
- BABrad Axen
Yeah [chuckles]
- CVClaire Vo
... good code. [chuckles]
- BABrad Axen
[chuckles] It's, like, definitely the right idea. I, I don't- I'm not gonna, like, read line by line, 'cause I kind of trust it at this point. But what I am gonna do is I'll make my one-line contribution to this project right now, [chuckles] which is, I know I want it to be running, um, not as a, a remote URL. I want it to just be a, a standard IO MCP if you, if you work in it. That's the difference here. So I'm just gonna make it, uh, standard IO, and then, um, I'm gonna ask it, uh, like, a weird question to help me set this up in Goose. So I'm gonna say, "To help me do that, can you get the path in this virtualenv?" So really, I'm just trying to make sure that I have a portable command that I can run in Goose, and so I'm gonna ask it to figure out that virtualenv. So we'll send that, and that should just take, like, one or two tool calls from it.
- CVClaire Vo
And is this your just general flow for making MCPs all the time?
- BABrad Axen
Yeah.
- CVClaire Vo
Build me the, build me the function, then here's the code to turn it into an MCP. I'm gonna make my one-line contribution. I'm gonna ask it a- this very specific question that I know works in my system, and then you're gonna get it, get it going.
- BABrad Axen
Yes, exactly.
- CVClaire Vo
Yeah.
- BABrad Axen
And so once you have that, like a core functionality working, then you give it this example and turn it into the MCP. Exactly that. Yeah. And so, um, okay, so it got me this, like, this is the path of the virtualenv Python, which is what I needed. And then I'll ask it, like, also, um, "What's the abstract of the Python file?" [keyboard clicking] And that's gonna be the two ingredients that I need to go make this work. And it's just, you know, running shell commands to do this, so I've already got it there. So let's do this, and I'm gonna go into the, like, existing settings, and I'm just gonna immediately add a new custom extension that we just built. So I'm gonna call this Email. We're gonna do that path to the Python file. Oops, and I didn't paste the other one, so let me just go to the terminal and grab this. Um, and there, and we're gonna do... We're just gonna run that server we just created, and that should be everything. Oops, I got an error. Let me see what that is. I'm just gonna paste the output.
- 36:09 – 38:44
Debugging and fixing MCP code errors
- BABrad Axen
Um, oh, so there's actually a code error.
- CVClaire Vo
Oh, well, there you go.
- BABrad Axen
And I'm going-
- CVClaire Vo
Which, it wasn't good code. [chuckles]
- BABrad Axen
Yeah. [chuckles] And so, um, I'm gonna tell it this, um, I'm gonna tell it this error and see if it can just fix it.
- CVClaire Vo
So I like that you actually say, "I got an error. Can you help me?" 'Cause I just go straight to just paste the error in.
- BABrad Axen
Paste the error. Yeah, it's probably smarter. I, I, like, spend a little too much time, like, having a conversation, honestly, with the [chuckles] LLMs. And, uh, and so, like, hopefully it can figure this out without me thinking too hard about what's in the file. We can, like, watch it work, of course, um-... and honestly, I think the thing that it did here is this resource, so it's fixing that. But, um, yeah. Okay, okay, so it figured it out, at, at about the same time I did. Yep.
- CVClaire Vo
Okay.
- BABrad Axen
And so-
- CVClaire Vo
I- this is gonna be the new podcast. It's human developer, AI developer: who figures it out? Who spots it first? [chuckles]
- BABrad Axen
I, uh, the, [chuckles] um, uh, the debugging flow is, like, something that I thought was gonna be what kept me employed with the AI writing all these code, but I'm like, "Oh, it's actually pretty good. It's pretty fast." Um, yeah. So we're gonna try that again now that we've edited that file. I'm gonna interrupt it, 'cause again, I think it's doing some extra stuff we don't need. And I'm just gonna, um, toggle that... Where did it end up in the list? I'm gonna toggle that on again. Oops! Okay, new error. Sorry about that. Normally, this works in one shot, actually.
- CVClaire Vo
Do you find, as, as an engineer, that you have shifted your debugging strategy to this, which is just, "I'd rather loop with the, the agent and just get it to figure it out than sit here and u- use my eyeballs and my fingers to solve this thing?" [chuckles]
- BABrad Axen
Yeah.
- CVClaire Vo
I'm just curious how that's happened internally to yourself. [chuckles]
- BABrad Axen
I think I basic- I almost always let the LLM try once. Like, if it, if it knows what to do to fix it, I'm like, "Great, that's faster than me figuring out..." And then, the thing that, um, I think I am better at than it is, is like, just being tenacious. So if it's like, if it's not figuring it out, it's like, "Okay, I will take over." And, uh, so this version is like... I'll, I'll take a look at, like, whatever idea, um, it's coming up with, and if it, like, seems like it's in the right direction, I'll let it finish. [keyboard clicking]
- 38:44 – 41:30
Connecting workflows: sending payment links via email
- CVClaire Vo
[gasps] We did it!
- BABrad Axen
Hooray. [chuckles] Um, great. So now that we've got the, like, envvars loading-
- CVClaire Vo
Uh-huh
- BABrad Axen
... and we actually- so what we just did is we, like, turned that thing we just built on in the existing chat.
- CVClaire Vo
Okay.
- BABrad Axen
So it's, it's a ex- it actually should now see it. So I'm gonna say, like, [keyboard clicking] "Great, we just enabled that. Can you see the new tools? Um, try sending a test email," and let's see if that works. So now we've at least, like, got it running, and yeah, it sees the tools, right? So... And it's, and it's trying this, like, Get email status, which doesn't- we don't need that. It... But it's like, great, it sees that everything is ready to go, and then it's, like, sending the-
- CVClaire Vo
Sending the test email
- BABrad Axen
... HTTP email test.
- CVClaire Vo
Yeah.
- BABrad Axen
And it, it's success, and so it's working. And so we kind of-
- CVClaire Vo
Email
- BABrad Axen
... built it, plugged it into Goose, and then immediately tested it out, and let me go check my inevitable spam folder. Yep, there it is.
- CVClaire Vo
You did it!
- BABrad Axen
[chuckles] Great. So despite all the spam checks, uh, we've got that working. And then, and then now we can kind of finish that off by bringing it back to where we started, right? So we know that works. I'm gonna go over to this existing chat, and this- these are two separate conversations, right? So, like, this, this LLM knew all about everything we just did. I'm gonna close that out. This one has no idea that that just happened, [chuckles] so I'm just gonna go in and toggle that on and off real quick. And we're gonna go back here, and I'm gonna say, uh, "I just enabled [keyboard clicking] an email tool. Uh, can you send that payment link to my demo email address?" So it doesn't have any of that, like... It doesn't have to- its memory doesn't have to worry about it.
- CVClaire Vo
The context. It doesn't know the functions or any of that stuff.
- BABrad Axen
Exactly.
- CVClaire Vo
So this is the, the real test.
- BABrad Axen
Yes. So it has no idea other than that this thing just got created, and it's doing the same thing that the other one did, which is like, "Okay, it's-
- CVClaire Vo
Gonna check for the server quickly
- BABrad Axen
... it's like checking and knows where it's coming from. And yeah, hopefully we'll get it to send something. At this point, it's, like, writing more content, right? 'Cause it's like-
- CVClaire Vo
Yep
- BABrad Axen
... I'm sure it's gonna try to be cute about the, the, like, body.
- CVClaire Vo
Are we gonna get a pu- are we gonna get a pumpkin emoji in the-
- BABrad Axen
Right
- CVClaire Vo
... in the reply?
- BABrad Axen
Yeah, that's what, that's what I'm hoping for. [chuckles] Okay. [clears throat] And we should have something in spam. Yep, and so we've got-
- CVClaire Vo
Oh!
- BABrad Axen
... Produce store payment. We've got our payment link, um, order details, all of that stuff, and, you know, the same link should bring us back.
- CVClaire Vo
So there are two levels of faces I make on this podcast. This, [clears throat] this is one of them, [chuckles] where I go, "Ah!" And then this is the other one, [chuckles] where something works. So you've gotten the, the raised hands podcast reaction.
- 41:30 – 46:31
Lightning round and final thoughts
- CVClaire Vo
So just to recap everything Goose did for us today, I'm, like, still, still processing. Jackie, we got your CSV. We took some, like, dirty, uh, produce data, got some insights on how to make it better. Brad, you took that and populated a store with your produce items, then created a way for people to buy those items through a nice little friendly link. Then, you vibe coded an MCP live. Thrilling. As somebody who's avoided building an MCP for no less than six weeks, now I feel like I have no, no excuse [chuckles] other than to just go do it. And then you used that MCP to send somebody a pumpkin purchase email.
- BABrad Axen
Yeah, that's right. [chuckles]
- CVClaire Vo
[chuckles] This is so great. Okay, this has been, uh, s- incredibly fun. I have to ask you both, as part of our lightning-round questions: Jackie, what's your favorite MCP tool in your stack right now?
- JBJackie Brosamer
I hate to say it, but it's probably, uh, Google Drive. That is, as a manager, where I live, and I'm just so happy to be able to not have to copy and paste and click. Um, it saves me a ton of time.
- CVClaire Vo
Okay. Brad, what's your favorite?
- BABrad Axen
Definitely Shell.
- CVClaire Vo
Shell.
- BABrad Axen
I just... You know, I've lost, I've lost all my memory of the arguments to various Shell commands.
- CVClaire Vo
[chuckles]
- BABrad Axen
It's just 100% filling them in for me at this point.
- CVClaire Vo
... Okay, and then if you could make a pitch to people inside an organization that are hesitant about getting started with AI, or even people that are outside of technology that just say, "I don't know, how could this apply to me? Why would I use it? Seems really complicated," what would you, what would you say to them?
- BABrad Axen
Find the thing that you don't like doing, and automate that. Like, don't, don't- if you love programming, don't try to automate your programming. That's, like, fun for you. You maybe figure out when, when you wanna make that trade-off. But it's like, "Oh, I hate writing the unit tests. That's the thing I'm gonna have the AI do."
- CVClaire Vo
Okay. Get rid of toil.
- BABrad Axen
Yeah.
- CVClaire Vo
Spoken like a true, true engineer. Jackie, what about you?
- JBJackie Brosamer
I think really treating it as a learning experience and realizing that this is the worst the models are ever gonna be. And so even if it's not something that transforms your daily life right now, even by keeping up with the tools and seeing where it fails, seeing where it fails is, like, just as useful as seeing where it succeeds, and still really treating it as an experiment and a, a way to learn versus, you know, a magic bullet that's gonna magically solve everything.
- CVClaire Vo
Okay, and then Brad, we saw how polite you are. We have to ask both of you our favorite question, which is, when AI is not doing what you want, and you're starting... Maybe you get exasperated, I don't know, what's your tactic? You seem very polite, so e- every- I saw every line started with, "Great!"
- BABrad Axen
Yeah. [chuckles]
- CVClaire Vo
"But you really screwed that up." [chuckles] So Brad, what's your, what's your strategy here?
- BABrad Axen
I... So I thought this was kind, but I realize now it's even more brutal, is, is that, like, the moment it's not good, I just, I just throw out the session. I throw out the whole convo, and I start over. And it's like, I... 'Cause I wa- like, it's so much work to convince it to do the thing you want.
- CVClaire Vo
Yeah.
- BABrad Axen
It's so easier to start- so much easier to start over, and then I'm like, "Oh, I guess that, like, that thread with that model, it's just done forever now." So it's kinda sad, but-
- CVClaire Vo
Can you imagine if we did this at work, where somebody started to say something-
- BABrad Axen
Right
- CVClaire Vo
... that was totally wrong, and you just, like, shut the door [chuckles] in their face-
- BABrad Axen
Yeah
- CVClaire Vo
... and said, "Come back and just start, start totally, totally over"? Okay, uh, Jackie, what about you?
- JBJackie Brosamer
When it's not functioning right, definitely start a new, uh, session. But what I like to do is, uh, have it... I'll give it, like, really key words that I want- if I want the style of something to change. So you know, if something comes out, like, too MBA-like, a lot of times I'll say, "Write it like you're a hacker." Um, another thing I like to do is have it, like, summarize everything that it did, the good parts, and then, like, take out the bad parts, and start a new session based on those instructions.
- CVClaire Vo
Great. I, uh, have learned so much myself. I'm gonna go download Goose and build that MCP that I've been avoiding. Where can we find more information about this? Where can we find you two, and how can we be helpful?
- BABrad Axen
Yeah. Definitely check out block.github.io/goose. That's, like, the homepage, all the install instructions, and it should lead you also to our, like, GitHub repo, where we love contributions. Um, and if you want to chat with us about it, we run a Discord for Block Open Source, so get in there, and, like, all of us are in there, and we, we, like, debug live and all that kind of stuff, so a lot of activity, for sure.
Episode duration: 46:31
Install uListen for AI-powered chat & search across the full episode — Get Full Transcript
Transcript of episode TZPWzsk-cWc
Get more out of YouTube videos.
High quality summaries for YouTube videos. Accurate transcripts to search & find moments. Powered by ChatGPT & Claude AI.
Add to Chrome