Schema as the Instruction Layer for AI Agents
For about twenty years, schema markup did one thing. It answered a question.
What is this page about?
You marked up a product so Google could show the price. You marked up an article so it could show the author and the date. You marked up your business so the hours showed up in the little box on the right. That was the whole game. Schema was a description layer. You told the machine what was already sitting on your page, and the machine displayed it a little better.
That era is ending. Not because describing things stopped mattering. It still matters. But a second question is showing up right behind the first one, and it changes everything.
What can a machine actually do here?
The agent doesn't browse your site. It uses it.
Think about how a homeowner books a service call today. They land on a contractor's site. They scan for a button that says "Schedule" or "Book Now." They pick a service. They squint at a calendar. They pick a slot. They fill out a form. They hit confirm. Every single step is a human looking at a screen that was built for human eyes.
Now picture an AI agent doing the same job for that homeowner.
The agent doesn't want your hero image. It doesn't care about your nav menu or your carousel of five-star reviews. It wants three things, and only three things:
- What services do you offer?
- When are you available?
- How do I lock one in?
If that agent has to crawl your page and guess which button is the real submit button, the whole thing is held together with tape. It breaks the moment you redesign your site. It breaks if you move a form field. It breaks if a plugin updates.
So the web is starting to do something smarter. Instead of making agents guess, sites are starting to just tell them. Here is what you can do. Here is exactly how to do it.
That's the leap. Your website stops being a place to look at and becomes a set of things you can do. Your sitemap of pages picks up a shadow. A sitemap of actions.
The funny part: this vocabulary has been sitting there for years
Here's what I love about this. The tools for it already exist. They've existed for a long time. Almost nobody used them.
Schema.org, the same vocabulary you've been using to get rich snippets, baked in something called Actions years ago. ReserveAction. BuyAction. ScheduleAction. OrderAction. These were built to describe not what a thing is, but what you can do to it.
And they basically sat in a drawer. Unused. Because there was no reason to use them. A search engine showing a blue link had no need to know your booking endpoint. Why would it? It just needed to show the link and let the human do the rest.
Now the human isn't doing the rest. The agent is. And suddenly that dusty old vocabulary is the most important thing on your site.
Here's what it actually looks like. Say you're an HVAC contractor and you offer a furnace tune-up. Today your schema probably looks something like this:
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Furnace Tune-Up",
"provider": {
"@type": "HVACBusiness",
"name": "Green Mountain Heating & Air"
},
"areaServed": "Burlington, VT"
}
That's fine. That's a description. It tells a machine this page is about a furnace tune-up offered by a company in Burlington. A search engine can read that and show it. Good.
Now here's the same thing, but built for an agent that needs to actually do something:
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Furnace Tune-Up",
"provider": {
"@type": "HVACBusiness",
"name": "Green Mountain Heating & Air"
},
"areaServed": "Burlington, VT",
"offers": {
"@type": "Offer",
"price": "149.00",
"priceCurrency": "USD"
},
"potentialAction": {
"@type": "ScheduleAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://greenmountainhvac.com/book?service=furnace-tuneup",
"actionPlatform": "https://schema.org/DigitalPlatform"
},
"result": {
"@type": "Reservation"
}
}
}
Read that second one carefully. It's not saying "this page is about a furnace tune-up." It's saying "this thing is bookable, it costs $149, here is exactly where the booking happens, and here is what you get back when you do it."
That's not a label anymore. That's a lever. The agent can pull it.
And notice what just happened to your pricing
Look at that block again. There's a number in it. $149.
For twenty years that price tag, if you even put one in your markup, was decoration. A nice-to-have. Maybe it showed up under your search result and made the listing look a little more complete. It was a string of text a human glanced at and then ignored or didn't.
That's over too. In the agentic web, the price isn't decoration. It's an input. The agent reads it, compares it, and decides on it. Your Offer and your price and your priceCurrency aren't there to look nice in a snippet anymore. They're the numbers a machine uses to make a buying decision on a real person's behalf.
Sit with what that means. When a homeowner tells their agent "find me a furnace tune-up under $200 this week," the agent isn't reading your headline. It's reading your Offer. If your price is wrong, stale, or missing, you don't show up in that comparison. Not because you ranked badly. Because you never gave the machine a number to work with. You weren't even in the room.
This is the part a lot of people are going to get burned on. Plenty of contractors keep their real pricing vague on purpose. "Call for a quote." That worked fine when a human was on the other end, because a human would call. An agent won't call. An agent that hits a wall where the price should be just moves on to the contractor who put a real number there.
I'm not saying publish every price for every job. Some work genuinely needs a site visit before anyone can quote it honestly, and pretending otherwise is its own kind of BS. But for the stuff that has a real, knowable price, a tune-up, a service call fee, a standard install, that number needs to be in your structured data, accurate, and current. Treat it like the working part of the machine it's about to become. Because a wrong price an agent acts on isn't a typo anymore. It's a transaction.
A whole new stack is getting built on top of this right now
If it were just the old schema vocabulary waking up, that'd be interesting enough. But in 2026 there's a whole layer of new standards getting built to make these actions executable, not just declarable.
I'm not going to pretend I have a crystal ball on which one wins. Nobody does yet. That uncertainty is part of the story. But here's the short version of what's in play:
WebMCP, proposed by Google and Microsoft and now being worked on at the W3C, lets a website register actual tools an agent can call. "Check availability." "Add to cart." "Start a booking." The agent calls the tool directly instead of reverse-engineering your buttons.
NLWeb, from Microsoft, turns your site into something an agent can just ask questions of through a standard endpoint. The thing I find telling: it's built on top of existing schema and feeds. By the same guy who shaped Schema.org and RSS in the first place. He's not throwing out the old work. He's building on it.
Commerce protocols from Google and Shopify and OpenAI are turning checkout itself from a page you look at into a protocol a machine can run, with the payment piece handled by its own emerging standards.
Different approaches. No clear winner yet. But every single one of them assumes the same thing underneath. Clean, accurate, structured data.
And that's the whole point I keep coming back to.
This is the fundamentals argument all over again
I've said this for years and I'll say it again here because it's never been more true. The flashy stuff on top changes every couple of years. The fundamentals don't.
All these new protocols, the ones getting all the attention right now, are sitting on top of structured data. If your site is modeled well, if your entities are clean and accurate and actually reflect your business, you're most of the way ready. You barely have to do anything.
If you treated schema as a rich-snippet trick, something you bolted on to game your way into a better-looking search result, you've got nothing for an agent to stand on. The house of cards doesn't fall down dramatically. It's worse than that. It just quietly does nothing while your competitor's site gets used.
This is the same thing I say about every shortcut in this industry. Fake reviews. Private blog networks. Inflated metrics. Anything built to fool an algorithm instead of serve a customer. It works right up until it doesn't, and when it stops working it costs you more than it ever paid. The agentic web is just the newest version of the same lesson. The boring, real work is what holds up. Everything else is borrowed time.
The hard part isn't the markup. It's understanding your own business.
Here's where this gets real for contractors and for anybody running an actual business instead of a marketing demo.
The markup is the easy part. Copying that JSON block up there is the easy part. Anybody can do that.
The hard part is mapping what your customer actually does. Walk through it. A homeowner's furnace dies in January. What are the real steps? They need to find you. They need to know you handle emergencies. They need to book. Maybe they need to reschedule. They need a quote. They need to know when the tech is coming.
Every one of those steps is a real-world action. And every one of them has to be made legible to a machine that has no eyes and no common sense. It can't infer. It can't squint at your page and figure it out like a person would. You have to tell it, cleanly and explicitly, exactly what it can do and how.
That's not keyword work. That's not even really SEO in the old sense. That's understanding how your business actually runs, step by step, and being able to describe it to a machine. Which, if I'm honest, is the whole job and always has been. The markup just makes you prove you actually understand the process.
What this means for you, plainly
For most of the time I've been doing this, the goal was visibility. Be found. Be ranked. Be shown. Get cited.
That still matters. But there's a second thing now, and it's a different axis entirely. Call it actionability. Can an agent actually use you?
Because here's the uncomfortable truth. A page can rank perfectly, look beautiful, and load fast, and still be a complete dead end to an agent. Because it never said what you can do with it. In the old web, a great-looking inert page was still useful, a human could figure it out. In the agentic web, an inert page is just a wall.
The contractors and businesses that win the next decade won't be the ones with the most pages an agent can read. They'll be the ones with the most actions an agent can complete.
Book the appointment. Get the quote. Reschedule the visit. Buy the part. Each one of those, exposed cleanly, as a thing a machine can actually do.
So here's my advice, and it's the same advice I'd give about anything.
Don't chase the protocol wars. Don't wait for a winner to be declared. Get your fundamentals right. Model your business honestly in your structured data. Map the real actions a customer takes and make every one of them clean and explicit. Do that, and whichever standard wins, you're ready.
Keep it simple. Make it work. And build it on something real.
The vocabulary's been waiting in the drawer for years. The agents finally showed up to use it. The only question is whether your site has anything for them to do.