For long-form interviews, news, and commentary about the WordPress ecosystem. This is the companion show to The WP Minute, your favorite 5-minutes of WordPress news every week.
Eric Karkovack (00:00)
Hi everyone, and welcome to the WP Minute. I'm Eric Karkovack. Today I'm joined by Zack Katz. Zack is the co-owner and project lead at Gravity Kit.
He's here to tell us about how his company is improving plugin update security and introduce us to the new Block MCP server. Zack, welcome to the WP Minute.
Zack Katz (00:21)
Hi Eric, thanks
for having me on.
Eric Karkovack (00:23)
Yeah, I I I'm excited to have you on because we have a couple of cool subjects to talk about. the first is ⁓ about the supply chain attacks we've been seeing with WordPress plugins. So we just had Austin Ginder on the show, and we'll put that in the show notes so that that folks can get to that episode. But he's uncovered a lot of different supply chain attacks almost by accident, using Claude ⁓ to kind of go through these sites.
And we were talking about the need for plugin authors and WordPress in general to, you know, really improve security, right? So you you guys have taken this with a proactive approach by ⁓ cryptographically signing your your plugin files before you push them. Tell us about how that that got started and ⁓ you know what what that what problem that solves.
Zack Katz (01:21)
Right. So cryptographic signing, what that means is that when we we distribute a plugin, when you buy and install a GravityKit plugin after it's installed, you get updates from us. And you assume that those updates are secure and what they're supposed to be, but you you didn't have a way of knowing that before. Like let's say you order something from Amazon.
And you assume that what you ordered is what you bought, but sometimes Amazon products get swapped out for something that's already been opened or like a you know a bag of rocks or something like that. So we wanted to make sure that ⁓ when you install a Gravity Kit plugin and you receive updates, that those updates are the updates we have released. And it sounds like a pretty straightforward thing. Well, like ⁓ I don't know, just check to make sure it's secure. Well, what does that mean? ⁓ because the zip file that is on our website.
Eric Karkovack (01:55)
Sure.
Zack Katz (02:14)
is the zip file you would have gotten before, regardless of whatever ⁓ malicious code might have been inserted by some some hacker, right? We were worried that if our website got hacked, that our customers would be installed installing ⁓ malicious code, that they could ⁓ swap out the zip files that we've prepared with their own zip files that included bad code, and that we would be distributing malware.
And that kept me up at night. I was I was thinking like, well, that is a real issue for us as a brand. It's an issue for our customers. We don't want to be the source of a ⁓ of an of a of somebody's site being hacked. That is the last thing we wanted. So how do you ⁓ how do you approach this as a plug-in s ⁓ developer? There are very few ways that you can ⁓ secure your product out of the box with
Eric Karkovack (02:56)
Yeah.
Zack Katz (03:11)
Easy digital downloads with like a bunch of different solutions. it just isn't a thing that people do. So we talked, my head developer Vlad and I, we talked about how we should do this. And there are some ways that this is handled in the commun in the open source community. There are different approaches, there are tons of different cryptographic methods. But the key is that our website is not the source of truth. That source of truth is elsewhere that says this is what.
Customers should be installing. This this hash, this code, should match the code that is happening, that is being distributed from the gravitykit.com website. And if it doesn't match, it's not the same bundle. So we want to make sure that that is off site. But that hash needs to be generated ⁓ at when the build is is when our when our plugin is built, that hash is generated and updated ⁓ off site.
And then when the plugin is installed on an update side, that is then checked so that so that when the download happens on our customers' websites, it's checked against that off site code to make sure that that off site code matches the code that is expected. So it's a lot of work to go to go in this deep and figure out like how if we get hacked, can our customers' websites be compromised? And the answer right now, thankfully, is no.
Eric Karkovack (04:37)
It's awesome.
Zack Katz (04:38)
Yeah.
Eric Karkovack (04:40)
Yeah, so I mean, were you surprised that other plug-in authors maybe aren't doing this? 'Cause I know ⁓ and we'll link to your to your bl your bul site's blog post on this. It seemed like you were maybe the first among the commercial WordPress plug in authors to start this method. That seems like a little bit of a surprise at this point.
Zack Katz (05:00)
Yeah,
I expected more people to have done it. ⁓ as did Vlad, and we were surprised that it just hadn't been done. ⁓ and so we were proud to be the first and we anybody listening, if you're interested in in how we did this, we have a article on our blog, i'm sure it's in the show notes, ⁓ that goes into the details of of why and how we implemented this. We have a technical article that goes into more nerdy details in case you
want to know those. And if you still have questions, please reach out to us. we're happy to to help anybody else get this implemented on their sites. ⁓ it is it does require multiple parts, ⁓ multiple stages. And so there are ⁓ it's not just on your website, it's not just in your plugin. it is a little bit complex to get set up, but AI does make that a lot easier now.
Eric Karkovack (05:53)
I was gonna say, using Claude or whatever your your ⁓ model of choice certainly probably could handle some of that for you. ⁓ but how difficult was this for you to implement? Like what what kind of lessons did you learn?
Zack Katz (06:07)
Yeah. ⁓ it took Vlad I I hand Vlad, my lead developer and I had a conversation about like ⁓ the different approaches that we could take. Vlad did some deep research about it ⁓ and spent the next two weeks building it out. He he he built it out, released it, fully tested it. ⁓ we silently updated our plugin to include this, ⁓ to and rolled it out slowly over time, ⁓ to make sure that we didn't, you know.
break our distribution process. Not a single person ⁓ had an issue in their uplo in their update process because of this. So we were really happy that it didn't actually break anything, ⁓ which was kind of surprising if you're if you if you're in the plug-in distribution business. It's amazing that it didn't nothing nothing broke. ⁓ but yeah we ⁓ it took just two weeks for this to go from
Eric Karkovack (06:51)
Yeah, that's that's actually that is amazing.
Zack Katz (07:02)
From a serious like we're going to focus on this to distribution ⁓ live. And then we we announced it publicly ⁓ I think a couple months after that, or maybe just a month, but ⁓ yeah, it's it had already been running for for many weeks before we ⁓ wrote the announcement.
Eric Karkovack (07:19)
Congratulations on not breaking anything.
for one and then I do hope other plug in authors ⁓ you know follow suit and I don't know what the technical ⁓ specs are for something like ⁓ the dot org repository to do something like this, but hopefully we can get to that point sometime in the future and and you know so that every plug-in is exactly what you know the author intended, which you know isn't a guarantee right now in in life. So that's it's good to see that you guys are doing that. I so I wanted to s to switch gears
little bit. so you have this new MCP server called the Block MCP tool, right? ⁓ Tell us what this thing does and why you built it.
Zack Katz (08:04)
Yeah, so we built it because ⁓ we kept on hearing about all these WordPress MCPs and we tried them out and th they just ruined our HTML markup. You every time we'd create a blog post using the block MC like using another MCP for WordPress, we'd go into the editor and it would say, like, this this block has been corrupted, or whatever the message is that says like, well, this didn't work, and try recovering or or convert it to HTML. And it really
Eric Karkovack (08:29)
Yeah.
Zack Katz (08:32)
Every time I'd use another MCP for WordPress, I would be so frustrated and I wouldn't use it. I'd stop using it. I'd I'd go into the admin and I'd update the blog post manually. I'd update the page manually. And I got fed up with that. And I I tried finding out why it wasn't working. So of course I used AI to to figure it out. And it turns out, ⁓ well, these MCPs just say edit the HTML knowing what you know, AI. Like just
Make make HTML that is valid for the blocks, for the block editor. And that is a very complicated thing. And that requires a lot of knowledge about block structures, a lot of knowledge about the different types of blocks, the attributes that are possible, ⁓ the schema. There's there's a schema for the block editor ⁓ that exists that block like the AIs know about, but they don't reference when they're writing this HTML from scratch. Furthermore,
When you're trying to just like let's say move a block down a few positions and say, like, you know, this this this section, I want to move it down to the bottom or move it to the middle of the article. What it does is it takes the entire HTML, it like tries to copy, you know, cut and paste it down, ⁓ and HC like that's not exactly how AIs work or have worked in the past where they don't just like copy and paste, they recreate and that is full of
you know, potentials for errors. There were so many things that I found were frustrating when editing a post and creating a post that I said, okay, I've had enough. I've tried a bunch of these MCPs. They don't work. We need something that is valid, always valid. And that was not possible out of the box with WordPress and the REST API. We need to extend the REST API and make it better and make it more aware of blocks.
And that's something that WordPress and Automatic they like automatic knows about this. They have a VIP package that converts blocks into JSON structure. This should be in WordPress Core. Like the the converting blocks into JSON should be in WordPress Core. They have a plugin already, Automatic does. I assume it's going to eventually make its way into WordPress Core, but until then and even up after then, the block MCP is our answer to well, I just want to edit this one.
Eric Karkovack (10:38)
Okay.
Zack Katz (10:58)
block. I just want to change this one word. I would just want to move a couple blocks up and down. I want to insert a block in the middle of this article, which granular editing is a nightmare if you don't use the block MCP. With the block MCP, it's a breeze.
Eric Karkovack (11:15)
It it's funny because you think about okay, all these MCP products are coming out and
To think that they don't necessarily ⁓ understand or recognize block structure, that's a pretty big deal. I mean it for you could I'm I imagine this is much more ⁓ suitable for the classic editor where everything is just one blob of HTML and you can account for the the niche use cases a little easier. Blocks, I mean, not only do the do we have core blocks, we have custom blocks that anyone can build and and i so to keeping all of that
in mind when you're when you're editing. ⁓ what what kind of challenges did you face w with building this? Had you ever built an MCP before? Is this something that or is this something new to you?
Zack Katz (12:03)
I built a lot of MCPs already, but this was one of the more fun ones because it is so structured in what like and and variable in in in the different blocks that are available. So it needed to be functional for any blocks, not just the core blocks. It needed to work with all plugins. It needed to just it it needed to automatically recognize ⁓ which blocks to use. Because when you're writing a blog article, I don't know about you, but I have like
We have some legacy plugins that are enabled on our website that are there for the articles we wrote in 2014 that we just happen to have those around and we just we haven't migrated off of those blocks yet. I mean, I guess not 2014, but like let's say 2020. ⁓ and we don't use those blocks anymore. We don't want to use those blocks anymore. The block MCP plugin allows you to declare which blocks should not be used. So you can add a
I guess I'll call it a block list. A deprecated list of blocks for the ones that you should no longer use. ⁓ but the block MCP automatically identifies it, does a scan of your website, does like a a ⁓ a scan of the past, you know, few hundred posts, a few hundred pages, and identifies the block blocks and patterns that are actively used so that it can smartly say, okay, well, this is
Eric Karkovack (13:04)
Nice.
Zack Katz (13:27)
You don't use the image block, you use this other custom media block that your site already has. So let's use that instead. And you can score and grade the blocks and it automatically does this. But you can you can modify the scoring and say, we really would prefer if you use this custom heading block instead of the built-in heading heading block. So that that kind of ⁓ depth of of ⁓ of the spec of what we're talking about, of of
The structure of the plugin allows for so much ease when you're writing a blog post because you don't have to say, No, not that, this it automatically kind of uses the best option out there, ⁓ when it comes to patterns, for example. It recognizes all the all the block patterns and it uses the right one generally.
Eric Karkovack (14:16)
That's that no see that's a handy use for AI. It already knows how you typically build something out and replicates it for you so you don't have to yell at it to do what it's supposed to do. ⁓ I'm gonna ask you to share your screen so you can ⁓ show us what this what this thing can do.
Zack Katz (14:19)
Mm-hmm.
All right. ⁓ okay, I'm going to share my screen and what you will be seeing is
The article that we have about the block editor.
Block MCP. So this is ⁓ what is a WordPress MCP server and which ones are worth using? Well, ⁓ actually this is not an article about this our specific block MCP.
Eric Karkovack (15:08)
But we will put that in the show notes so that people can can check it out. 'Cause it's got lots of cool information in it about what you did.
Zack Katz (15:10)
But we will. Okay. yes. And here's
the article about the block MCP. I will use I will edit the block MCP page using the block MCP. ⁓ so one of the things that is frustrating when you're editing a website ⁓ using an MCP is converting it from a URL to the post ID. That is a common question like that AIs have. Well, I want to edit this URL. And then it's like, well, what is the post ID for that?
That is that is one of the things that the block MCP does ⁓ is converts the URL into ⁓ into the post ID. So you don't have to worry about giving it the post ID. That's like step number one that was frustrating and I didn't know that that was an issue. ⁓ Exactly. You have to go in there and you have to like view source, or if you're logged in, you click click in and then copy and paste. You don't have to do any of that. Okay, so I want to edit.
Eric Karkovack (15:49)
Okay.
Yeah, who remembers the post ID of what they're trying to edit?
Zack Katz (16:09)
And I posted I pasted in the link. ⁓ and let's say, Eric, let's say I wanted to change this heading. A WordPress MCP that knows your site. ⁓ you can reference the text that you want to change, and the block MCP is optimized for this. AI can take forever to scan through and find some like specific code or look for a selector. ⁓ the block MCP is optimized for this kind of editing.
⁓ let's say like to be more punchy, ⁓ make it better. Gotta love good prompting for AI. So ⁓ what it's going to do is it's going to identify that we are talking about ⁓ using the block MCP to edit the website because the MCP has registered that that's what like that that it's available to edit the website.
It's loading the tools that it needs, including the block MCP.
Now ⁓ it's using my memory system, which is Auto Mem by Jack Arturo and WordPress. If anybody is frustrated that your AI doesn't remember things about what you work on and why you work on them and how you work, check out the Auto Mem. That's a great project.
Eric Karkovack (17:33)
Okay, have heard of that one before and it seems like s people are really loving that that functionality.
Zack Katz (17:39)
Yeah, it's really
cool.
Eric Karkovack (17:42)
So I say we're we're counting all the tokens.
Zack Katz (17:42)
Alright.
Yep. So it says I've got the page, the headline you want to punch up is the H2 at the start of the know your site section. Now you'll see in the ⁓ in the response it uses a identifier, a reference ID. One of the things that is frustrating when you're using other MCP products is that it has to rescan your page after every edit to know what is the proper ⁓ code to update.
We have stable reference IDs. That means that you don't have to rescan the page. It understands after it makes the edit that the things are the same as they used to be.
Eric Karkovack (18:15)
I see.
So the next time you want to edit this, it won't have to rescan everything. Even if you just made an edit to what you're editing now, it should remember that and won't have to rescan everything.
Zack Katz (18:28)
Right.
Let's let's show
how that works. So it ⁓ it says which punch of your headline should should replace a WordPress MCP that knows your site. ⁓ let's say connect once it already knows your site. So I've chosen the headline that I prefer, hit enter, and now what it should be doing is using this ⁓ is using a specific selector and editing a specific block. You can see that it the tool it uses is update one block.
That is a specific tool that's finding the specific heading that uses a specific reference ID and it makes the change. Now, after every change, it saves a revision, which means that you can roll back to before the edit. So it now says verified. The heading is live and on the page. Now you'll note the verified step. One of the things we do is after each edit, we make sure that the edit was valid.
And we're not just talking about valid HTML, we're talking about valid block structure. Because other MCPs can completely destroy your block structure. So we run it through WordPress itself and make sure that WordPress renders the same way that we expect it to render. And if it doesn't do that, then we throw an error and tell the AI, hey, something didn't work, and this is what didn't work. So other MCPs don't do this. Other MCPs will make an edit and you'll assume everything went perfectly. And that is not the way we wanted our
Eric Karkovack (19:36)
Gotcha.
Zack Katz (19:55)
MCPs to work. So I'm gonna go back to the browser and refresh the page. WordPress MCPs that knows your site should now say connect once it already knows your site. And it does. So that is one that is a very simple thing. ⁓ but even that is very complicated for other MCPs to get right. You can move things around if you want to. You you can edit alt text. All of this stuff works out of the box, and you don't have to worry about.
Eric Karkovack (20:06)
Nice.
Zack Katz (20:25)
like the actual ⁓ MCP functioning. That is the we wanted to take that off the table. We just wanted to be able to edit our site using the MCP.
Eric Karkovack (20:37)
So I I imagine like i i when you're talking about something like alt tags, does it actually like I guess it matters the whichever model you connect it to, right? like Claude might be able to look at this and say, describe the image for you. Or you can actually just manually say, Okay, I want to change the alt tag to this.
Zack Katz (20:53)
Hmm.
That's a good
question. So you can upload files using the block MCP. That's one of the things we wanted to make sure is like, okay, so you're using clawed code on your on your computer and you want you have local files. You don't need to go into the media manager and like up media library and upload those and then reference it to you. You can have claud code automatically update the update those with this MCP. ⁓ I don't know about the like about reading the
images, let's see, let's see what that looks like. ⁓ three components one round trip is the reference ⁓ like heading so I can say like okay improve the alt text for the image after three components one round trip. Let's see what it let's see what it does.
Eric Karkovack (21:52)
Because I know the the official AI plugin that's come out is supposed to be able to do alt text, but again, i i I guess it depends on the model you're using and what kind of context you're you're trying to use it for.
Zack Katz (22:04)
Right. And one of the things
we we found while building this was that different models had different success rates with different MCPs. If right now I'm using Opus, I don't need to be like Claude, anthropic Opus. ⁓ I don't need to be using Opus for this though. I could be using Sonnet, I could be using Haiku. One of the things that happens with other MCPs is that if you use a smaller model, it doesn't work as well. We wanted BlockMCP to work
regardless of the model that you're using, because not everybody runs the top model. So this works really well, ⁓ regardless of the quality of the model you're running.
Eric Karkovack (22:44)
Okay.
Zack Katz (22:46)
So the image after three components, one round trip is the architecture diagram. Here's the current alt text and it shows the alt text. And it says what weakens it for accessibility is it leans on visual position, it it buries the point. Let's rewrite it to convey the structure and the flow instead of the layout and drop the duplicated label. So it reads the image, it it reads the existing alt text and it rewrites it. And that's that all works.
Eric Karkovack (23:12)
Nice. So that that that would be handy, I could say I mean I could definitely see that at scale too, because as so many people are kind of retrofitting their sites for better accessibility, ⁓ AI could make much quicker work of that. Of course you'd probably want a human to to check to make sure everything looks good, but that that definitely could could save some time.
Zack Katz (23:13)
Yeah.
One of the things that we were using Yeah,
one of the things we were doing internally was having it ⁓ improve our internal linking, just reading through our blog posts and making sure that the links were updating properly. ⁓ like that that they were ⁓ that there was good interlinking, that the interlinking existed at all. ⁓ so like let's say you wanted to make ⁓ to link to other item other posts on your site that you wanted to improve the the linking on this page. You could just say
⁓ improve internal linking on the page. Find and update other like links to other posts. And I believe that the block MCP has a way to list other pages. ⁓ because here's here are some of the tools that it has, ⁓ including patterns, inserting blocks, ⁓
replacing a block range. So one of the things that that works really well is to say, I want to change this, this, this, and this, making a list of the things you want to change and having it change them all in either one or very few round trips to the to your website, which makes it feel so much more ⁓ so much faster than if you just use a traditional MCP.
Eric Karkovack (24:54)
I imagine it's also cheaper too if you're counting tokens and
Zack Katz (24:57)
Much
cheaper. Yeah, the the number of tokens is way lower than ⁓ than pri than other MCPs.
Eric Karkovack (25:04)
I can imagine yeah, just the the fact that you can target a specific block without having to and do it over and over again without having to go through all of the HTML every single time. Imagine that's that's going to save you quite a bit on your bill, so people should be happy with that one.
Zack Katz (25:15)
Right.
And Eric,
this is all made possible because there is a component, there's a plugin part of this MCP. It's not just using WordPress out of the box. So there is a plugin that needs to be installed. And the show notes have that. It's available on gravitykit.com. And ⁓ our block MCP plugin is part of this so that the AI can communicate more efficiently and do a bunch of cool stuff that WordPress doesn't do out of the box.
Eric Karkovack (25:45)
So does that fit in with the connectors screen that came with WordPress 7.0, or is that it basically its own separate entity then?
Zack Katz (25:53)
It's its own separate
entity. You don't need to have AI configured on your website for this to work. You just need to be able to have an MCP on your ⁓ whatever you're using for your AI, including Claude, including COD Claud Code, ChatGPT. As long as they support MCPs, ⁓ you install the plugin on your website, you tell your AI to connect to your website. and we're gonna be making this really easy for you. ⁓
Eric Karkovack (25:57)
Okay.
Okay.
Zack Katz (26:20)
We're in a in the next release of the plugin, we're gonna have a a button to create a ⁓ user account with a app password, and you can just have the AI ⁓ you can give that to the AI and the AI can figure out the rest for you. Because MCPs are still kind of confusing. ⁓ even if you're a developer, they can be hard to configure.
Eric Karkovack (26:43)
Yeah, I mean this is really just the early days of all this stuff, right? I mean, we're all kind of experimenting with how we're going to use AI in WordPress or or in general. So it's cool that we have something here that, you know, be kind of a f a fun way to dip your toe into this without ⁓ breaking the bank. And yeah, I think it's ⁓ it it's really cool. I I I love the idea of being able to target just one block if I need to.
Zack Katz (26:46)
Yeah.
Yeah, and
let's see Eric, let's do a ⁓ let's have it create a new page. create a new page ⁓ for the WP minute. use existing patterns. ⁓ so this will read through the patterns that are on the website, including the our CTA patterns, our click through action ⁓ call to action patterns. it'll
maybe do a s newsletter sign up form. I'm not sure what patterns it will because I didn't tell it much to about what to do. But just knowing that when the page is created, it will have the right blocks like the block right block structure, the right HTML structure. ⁓ it makes editing and creating on your website so much easier. And ⁓ I hope everybody tries it 'cause I'm it's made Casey is our our market lead. He just he says it's friggin' awesome.
⁓ is are is a direct quote. And I I agree. It's it makes me happy every time I use it.
Eric Karkovack (28:09)
Ha ha.
Well that's great. I I I look forward to playing with this myself. I think it's gonna be ⁓ kind of a a game changer to to be able to go in and and see what what you know, what you might be able to create with this. And I I imagine it also works it wouldn't in bulk, right? If I had to say like take all of my posts from twenty twenty four and add this disclaimer on them or something like that, you might be able to to go in and do that.
Zack Katz (28:39)
Yeah, and
one of the things we recommend doing ⁓ for for a situation like that is to say create a to lo a to-do list. Claude uses that phrase internally. So like ⁓ create a to do list of all the blog posts that reference this thing that you want to change. And then sh you can see the progress as it goes through and updates them. So instead of ⁓ find and replace, and there are some great find and replace plugins out there.
having AI do it instead and smartly update each post to reference the the new thing you want it to to use instead of that old thing. It can smartly update it instead of a direct finder replace and the block MCP makes it so it's non destructive.
Eric Karkovack (29:23)
Nice, yeah, so that that's also in the revisions and everything, right too, so you can roll back. Awesome.
Zack Katz (29:27)
You have a revision saved. Yep, exactly. Yeah. So I had it go
through and do alt text updating, which other plugins I I can do as well, but like ⁓ I you know, I I love the block MCP. ⁓ update update alt text, go through and find all these ⁓ articles on my site that weren't very optimized, like ⁓ what docs that we have on our website that is our docs are now powered by WordPress because we wanted to be able to do stuff like this.
What are some short docs? What are docs that aren't fleshed out enough? I just set a goal on ⁓ on Cloud Code and said like find all the all the docs that aren't good enough, that are too short, that it have you know images and not enough text surrounding them, and make sure that every single image we have that describes something has enough supporting text ⁓ around it to to properly support why that image exists. So it just does it. It
Y you can review it afterwards. If you don't like it, you can roll it back. ⁓ everything is is nice and stable.
Eric Karkovack (30:29)
whole new way to work.
Zack Katz (30:31)
It's a whole new way to work. And honestly, every time I have to w log into WordPress, I get kind of sad. I don't want to edit things in in WordPress anymore. I just want to do I want to use the MCP. I want to have a conversation with my AI about the content that I'm creating. ⁓ and not have to and open it up in my markdown editor locally and make sure that everything is correct. I don't want to go into WordPress and futz around with the block editor. I just want it to work.
Eric Karkovack (30:59)
Well, I I appreciate you taking the time to show us how this all works and also of course talking about the s security aspect of of what you guys do. And there's lot of exciting things happen over at Gravity Kit. where can people ⁓ connect with you and and your company?
Zack Katz (31:15)
Yeah, check
us out at gravity kit KIT dot com and ⁓ you know hit me up. I'm Zack Z A C K at gravity kit dot com. you can email me anytime and I'm happy to get in touch with you.
Eric Karkovack (31:28)
Awesome. Well, thank you for being a part of the show today, Zack. We appreciate all the the cool stuff that you showed us. ⁓ and for everyone watching and listening, thank you for tuning into the WP Minute. Visit us over at the WP Minute.com slash subscribe, grab our newsletter, become a member, and join our Slack. It's free. You can come in and chat with us and ⁓ tell us all the cool things you did with Block MCP. Thanks every ⁓ go ahead.
Zack Katz (31:54)
Actually, Eric, all right, sorry to
interrupt your outro. I'm on the WP Minute Slack. That is where to get in touch with me, because it's an awesome Slack. If you're not part of the the Slack, join it. It's so much fun. There are great people there. That's absolutely where to get in touch with me.
Eric Karkovack (32:03)
Yes.
Zack yeah, Zack is there all the time. We're always making
crazy jokes and ⁓ and Zack's always filling us in on what he's doing with Gravity Kits. A good point on that. so thank you all again for ⁓ being a part of the show and we will see you again next time.