Build and Use Agentic Recipes with Bazantic | Tom Hay at ETHOnline 2026
ETHGlobal·Fri, Sep 11, 2026, 12:00 AM
Transcript
Hello everyone. I'm Tom Gay . I am the Director of Product at Bzantic. I'm so excited to talk to you today about creating recipes in Bzantic and what that means. Thank you for participating in the ETH Global online hackathon .
This is really cool. I myself have participated in it in past years in various roles and have always benefited greatly. So, for those who build projects on our tracks, we have three prize categories, and they all require the creation of a recipe. So in today's workshop, we'll show you how to create a recipe so you can win those prizes and be competitive at the hackathon. So, what is a recipe?
First, we consider a recipe to be a reusable result consisting of calls to Model Context Protocol (MCP) tools. You have an MCP server, which is a Model Context Protocol server. You take these tool calls and string them together and string them together . This is the recipe. If tools are called from multiple servers, that is also a recipe.
This extends the concept of an MCP extends the concept of an MCP server and allows you to make these tool calls repeatable, where the result is not necessarily identical, as you may be requesting different information, but the process is repeatable and composable. Instead of calling the tool a tool call tool call , we use the term "ingredients" because it complements the metaphor. Moreover, in computer science, the name "tool" causes a lot of conflict. Therefore, we chose a different name so as not to constantly repeat " developer tool", " tool call" or "MCP tool call" or "MCP tool". So, the ingredients make up the recipe.
We are going to create a recipe. To get started, if you want to work with me, go to bzantic.com, where you can create an account or log in to an existing one. I want to point out that everything I will do here will be as practical as possible in real time. I hope the demo gods will be kind to us.
But I can say that you can use our existing skills to do many of these steps in a way that should be ready to plug into your AI agent, which you may already have. So, when you click " when you click " login", you will be asked to enter your email, and you will not receive a magic link, but a code to that email, or you can use GitHub or Google. I'm already logged in . I have a version of one of my accounts where I'm already logged in and you can see some of the gateways already created . They are already working and you can review and study them.
These are gateways from some of our partners at Basantic, as well as some APIs that exist from the hackathon sponsor. So I created some of them ahead of time. A brief overview of the site. In your control panel, you can find gateways. "Recipes" tab.
Today we will spend most of our time with the first and second points. But I'll also talk about how API keys work, about the testing ground, briefly about spending grants and balances, and then about your account that's created with that. Today we will do four things. The first thing we'll do is create a gateway. This is part of every hackathon prize here.
You must create an account and create a gateway. Then we simply test whether this gateway works. So, I'll walk you through this process. Then we will create a recipe and publish it. So let's start with the process of creating a gateway.
If you are logging in for the first time, you will see a large "new gateway" button on this page. She will prompt you to create a gateway. When you create a gateway, three things are actually done. So, the gateway you see after creation is a URL path, but behind the scenes it is actually an X42 payment gateway and MPP ( machine payment protocol). So you can accept payments for API requests in a customizable way at this time using Base USDC or Tempo USDC.
You can accept payments on these two networks. If you are interested in making this work for other networks, please contact me or the Bazantic team. We are always interested in hearing your feedback on this. The next thing it does is it requires the Open RPC specification, which you'll see when I click on " when I click on " new gateway." To do this, you will need to enter an Open API or Open RPC specification, and we will actually generate an MCP server from it generate an MCP server from it .
So, your initial MCP server that will be created today will have tool calls tool calls that match all the methods from this specification, and this will allow you to make calls that will become part of the recipe. These are, in fact, the ingredients, right? And the last thing it does—I won't go into much detail about this , but if you're interested—we do compliance checks for addresses that are trying to make payments via X42 or MP. So if compliance is very important to you, please contact us, as we have such mechanisms and can discuss this in more detail. So, I have this account.
I click " account. I click " create gateway". So what I'm going to do is I'm going to do is : I need to enter a base enter a base URL. Documentation is optional, but this information will be parsed by our gateway creation wizard, as will the specification URL. I want to highlight one of our partners with whom we have worked a lot , which is Liquify.
They are an API provider. They provide access to many RPC APIs, Ethereum, and many others. In this case, we're going to set up their Ethereum service, right? This is our goal for creating this gateway. I'll just paste their base URL: gateway.
lify.com. I also have their documentation. You can see it here, they have some documentation. It was created using GitBook.
If I can copy it, I have a copy here too. I'll copy it and paste it here. This is optional. You don't have to do this have to do this . For example, if you have created your own API and want to go through the process of creating a gateway for it, you don't need documentation.
This just helps us understand how the API works and adds some explanations. When we create a gateway for you. The last part you'll need: If you don't have an Open API or Open RPC specification, we'd be happy to help you create one and work on it together. You can simply write to the support channel on the ETH Global Discord server. Just tag me.
I'm there under the nickname TWW Hey. 5 and you can see me, Tom. Hey, I answer all questions. But we can help you create that specification so you can add it here to create the gateway. Some services, you know , if you integrate an external API, which is part of one of our tasks, a lot of the documentation will be built around the Open API or Open RPC specification.
So what you can do is go to the documentation site and search for /openapi.json or openapi.yaml, or openrpc.json, openrpc.yaml.
You can also create your own and paste them your own and paste them . For example, if you want very specific tool calls to be executed. So in this case, I'll show a very simple version of Ethereum Open RPC, and then a much more complex one to show how it works. Please be kind to the demo gods, because I'll have to switch back and forth . Here is a very simple example.
I just created it and it publishes very simple information, a subset. You see Ethereum executing JSON RPC. This is a subset of methods. There is a much larger version, but we will create a very small one. Then I'll come back before posting and make a big one.
Let's see how it works. He will analyze it. We will simply analyze the documentation. We will analyze this information. We will find that this is a positional JSON API.
You can go here and we need to send you the API key. For those APIs that do not require authentication, you can simply select "no authentication", no credentials are set. But if you need an API key, we support it via header, bearer via header, bearer token, query parameter, or URL path. We can also use basic authentication. And then we allow you to optionally enter query path information to test if it works.
So in this case, based on the documentation from liquify documentation from liquify , I already know this in advance, but we can send this key as a header or as a URL path. The URL path is a little more complicated to work with, but I'll just show you how it works. For this particular RPC particular RPC provider, the URL path for passing the API key looks like this. This will be "api=" and then the secret API key. This is where we're going to insert the secret key.
I won't make it visible to everyone it visible to everyone , but this is what we can do to get it across. So, we added this functionality in case you ever need to do this in a situation where you are giving such a presentation. Now, if we were to test this, I already know that some APIs will just accept the request, if you send the API key, even without a payload, they will accept it and provide a valid response. But not everyone does that. In this case, it's rejected because, you know, even if the key is correct, we might need more information more information .
We really need the request body in this case because it's a JSON RPC. It will go here in the request payload. I'm going to use the same one as here. And if it works, well, it works. We have a connection.
We can go back and confirm this. If you get an error you get an error , you can simply say "confirm connection" as if to force it to skip. This is not recommended, but we allow it even if you get errors. And when you send that request, you can view the response details to see that information. So if you have any debugging issues, we have tools for that, whether you're using skills or CLI, and it's part of your workflow.
Of course, your AI agent, regardless of which one you use, will help you through this process and tell you what to do. I won't go through this flow because it's very similar to the setup wizard. But if you're doing it manually, this is the way you would do it. So, if we confirm the connection, we will get all the methods that I entered. I only added a subset of methods to make it simpler.
I'll create this and we'll work with this gateway. But I have an option where you can add absolutely all the methods to create a tool, which would create over 100 tool API calls for this recipe. We only need these for the recipe I am making. But you can see them here. A few key points to note.
You should be able to test all of this. So, whether it's a Restful API or a JSON RPC API, you go in and you 're able to click the test button and get the information. It will send a real request and return data so you can verify that these tool calls are working. Of course, if you are using a Restful API, you can enter all the necessary data for a GET request. This happens when you provide an Open API or Open RPC specification in JSON or YAML format.
All of this will be created for you automatically. However, if you want to create your own new method, you can do so. A new tool to use, a new component on your MCP server. So I'm just drawing attention to it. Another thing you will notice is that by default we set the price to 1 cent in USDC.
This is just a way to set a default value, but you can reset it. If you want to have a zero value for everything, you can do that. You can just select all these points, apply to all 12, and they will become zero. I'm going to set it to the same value as before. In this case, it's a millicent, so it would be 1 cent.
I will apply this to all resources specifically for this test. But I'm actually asking you, when you go through the process of creating this for the first time, just zero out the price. That way, when you run all your tests, it won't be a problem. And if you later want to make the service accessible externally, you can change this later. It just makes the job easier.
We will still complete the X42 and MPP tasks. But you don't have to constantly go back and make changes back and make changes . At this point, you can save the draft if you don't want to continue. But I'm going to confirm the resources and create this. So, there we have it .
We can make any changes. And then we activate the gateway. This will start our gateway. This will create our MCP This will create our MCP server. And we will be able to see this execution process.
The resource provisioning process will begin. I'll just show you some things. You can actually publish it. So, if you've created your own API and want to make it public to see if people are interested in it, feel free to publish it on the marketplace. Just know that after that, people will be able to send their requests to him.
They can send you payments. So once you create this API gateway here, we will credit you with some funds. You will see your balance, and if you go to the balance section to check, you will see how it works. If you want to know what your balances are. Where is my account?
You can see this by clicking on " clicking on " balances" and then viewing the account details. You can see that we have credited some USDC to the Base network. This gives you that opportunity. You can also top up your account. As I said, you can reset this balance.
Alternatively, if you want to bypass this process entirely, it's within the functionality, you can create a JWT. So, JWT can be passed as a header and this will allow you to skip the entire payment process. This is very useful when you are building or testing something. You have these JWT testing something. You have these JWT credentials to do this.
So this JSON Web Token will allow you to do that. You can click "new JWT", create it for a certain time, revoke it, or do whatever you want with it . But it is really very useful. Once we have created the gateway, we can test whether it works. Here we have the liquify gateway.
I hope it reflects all the information we have . Let's try. Let's check the price of this first. It's 1 cent per request for this ETH block number. I hope everything works out.
Sent. Calculation completed Calculation completed . I'm sending the funds to myself , so you don't see the increase, but we provide advanced debugging that allows you to see the payment log, payment payload, and all the other information so you can see exactly what happened here. One question is whether we provide programmatic access to observed logs, for example in hotel arrest format, so that agents can perform white box testing during this hackathon. So, we'll have visual access to this soon, and we'd be interested to hear about your use case use case , as we can collaborate with you on this.
So don't hesitate to contact us. As I said in the channel, you can also send an email to supportbasantic.com. My entire team receives these emails, so it helps us understand your request and determine if we can implement it, because if you need programmatic access to the observed logs... observed logs...
That's something we can work on with you . So we're very interested in your use case use case and would like to learn more about it . Okay, we have about 10 minutes left, so let's get down to business and go over the recipe. So we'll just skip to the recipe section. When you click on " click on " recipes," you'll see recipes," you'll see —as you can see, I already have a few drafts already have a few drafts .
I have a published recipe published recipe that is actually intended for our hackathon. There are actually two options that I tested. I'll briefly talk about them to inspire you for the hackathon: one of our areas is our areas is API integration of the hackathon sponsor. This particular recipe has already been published. If you go to bzantic.
com/recipes, you'll see it. bzantic.com/re recipes seems like it should be. Yes, he is there. You can also see other recipes we have published.
So you'll see it here, but you'll notice that there's a feature to check your account balance . We came up with it ourselves, but we thought users would be interested in trying it out. The idea is to validate the World ID proof to ensure that the agent is acting on behalf of a unique, real person. It checks that agent’s USDC balance on the ARC network to ensure there are sufficient funds. If both checks are successful, she will receive the Hedera account balance and tokens for the specified account ID.
This is just an example of how we connect different things together. I think I wrote it so that it should throw an error because one of the account IDs is incorrect. But when you test it, it will perform the following check. It's going to try to go through all of them and see all of them and see if they're working, and then it, um, it does , it should, it should throw an error. Um, yes, because it verifies that the proof, well, it, it didn't exist.
So, it didn't exist. So, it didn't , it didn't, it didn't confirm that. This, this confirm that. This, this , this didn't work. So this, this, this was good.
But let me show you what you can do to create a recipe. So if we want to create a recipe, we click “new recipe” and we’ll basically get this reminder of what the ingredient of the recipe is, and running and publishing that will basically try to build it for you on its own. So, if I wanted to do, um, please, you know um, please, you know , please use my Liquify gateway to check the latest Ethereum block. um, get the number and then get the logs for that block. Um, what it's going to, what we're going to do is, you know, use our own agents here to actually do this search of the Ethereum block logs.
This is a very simple example. It's a very simple sequence of calls that, you know, if you've worked with any type of blockchain, you know: get the ETH block number , get the ETH logs, so it's basically going to go to this, um, and try, it's, it's going to get that information back, um. We can specify the Liquify gateway that was created. Here's the one I just created. And then we have our tool challenges here.
And we say: ETH block number say: ETH block number . And then we'll say, um, get the ETH logs. And it will use these, um, these gateways. If you 're using multiple gateways at the same time, you go in and add a gateway, and you, so for one of our tracks, you need to have multiple gateways. You are going to choose this gateway.
you're going to add it, and any of the published ones that you can see, um, and go in there, and start using that gateway. You can add input data. Um, that could be the Um, that could be the gateway URL. We don't need the gateway URL. Um, we could specify which network to search for.
That's not bad either. We could also say, for example, get logs. Um, it will prepare it for you. You don't have to use use any of these publishing controls. And then we have additional information about which model you would like to use.
So, we're going to do the following now, and you'll see that there are other things here that are blocked by number or registered. These are just suggestions. You can simply click " simply click " reject". We had other had other RPC provider partners, for example, Validation Cloud. So we decided not to add this information.
Let's remove it from there. Let's create a draft. This should remove the live preview . When we created the draft, we got rid of that. Yes.
Perfectly. We are going to choose this gateway. We added it. Let's create a draft again. We have this information.
So, now we have it. Of course, you can test it. Since time is running out, you can just post the result. This will result in publication. And if you want to make it public, you can open access to everyone.
As I said, if you've built your own API, that's a great idea. And once you do, the recipe page should refresh and display it. So you can view the recipe, which will list the author, which is tied to your address. So for our directions, whether you're working on a continuation direction or not, this is a great opportunity to integrate one of your APIs. And for the continuation direction, we really want to show how your productivity has improved by using these tool challenges, these " ingredients" to create recipes for better results.
So you will compare them with each other. And we want you to make a screen recording. If you participate in the other two directions, you integrate APIs and build solutions, using either APIs using either APIs we have published from sponsors or partners, or integrating your own, creating recipes with ingredients from multiple gateways. So multiple gateways. So , with that in mind...
I'll just share some information based on the questions. If you need to contact someone from the Bzantic team, the best way to do so is to write to support@bzantic.com. We will receive your letter there. I dropped the address into the chat for everyone to see.
Also, if you need to contact me on Discord at Bzantic, you can find me there. My nickname is Tom Hay5. So I'll just throw that in there too . And I will be in touch, quite actively, all day. I respond pretty quickly, except when I'm sleeping.
So, we have two minutes left, I'll show you again where the Bzantic skill is. And if you have any suggestions, if you see something that could be improved, we would definitely be happy to hear your feedback. We are collecting feedback. We're at a point now where we want to make sure you have a great hackathon experience. If you are having trouble creating recipes, if errors appear or something goes wrong, we would be happy to chat with you, get in touch and find out how we can help.
So can help. So , as I said, just reach out. This gives you an idea of how our platform works and what you can do with it. So go ahead and create recipes. We will continue to add new ones so you can browse through them and find what interests you.
We also created one. Here's one of them, it's just a sensor. We've been working with Purple Air a bit, and you can enter a sensor index and get air quality information based on that index. This gives you an idea that of course there are many use cases here in the cryptosphere, but you can use this for any API you interact with, whether it's a mapping API or a real estate API. We will continue to post examples like this, but thank you for joining this session.
It was a quick 30 minutes, but hopefully it gave you an understanding of how to use Bzantic how to use Bzantic . Please contact us if you have any questions or problems. And I'm really looking forward to all the hackers looking forward to all the hackers , I really want to see all your projects and choose the winners.
Automatic transcript — names and jargon may be misspelled.