There are three generations of web optimization and most sites are stuck on the first one.

The first generation is traditional SEO. Optimize titles, meta descriptions, keywords, backlinks so Google indexes and ranks you. It works. It's been working for 25 years. But it solves a single problem: humans finding you in a list of 10 blue results.

The second generation is GEO, Generative Engine Optimization. Optimize semantic structure, JSON-LD, llms.txt, Content Signals so AI models cite you when generating responses. It solves a newer problem: machines recognizing you as a trusted source.

The third generation is what I call Agentic SEO. Not optimizing to be read or cited but to be used. An AI agent arrives at your site, discovers your tools, and uses them directly without human intervention. Your site stops being a document and becomes a service that machines consume.

From document to service: what it means in practice

My blog has an llms.txt generator. Today, a human has to open the URL, type their domain in the field, and click generate. An AI agent should be able to do exactly the same: discover the tool exists, understand what it does, navigate to it, fill the field, and get the result. Without a human guiding it step by step.

That requires three layers most sites don't have.

Layer 1: Discovery — Agent Skills

The agent needs to know the tool exists. That's what the /.well-known/agent-skills/index.json file I already implemented serves. It's a list of available tools on the site with name, URL, and description.

Layer 2: Permissions — agent-permissions.json

The agent needs to know what it can do. My permissions file allows read_content and follow_link globally, but enables click_element and set_input_value only on /tools/**.

Layer 3: Semantic DOM structure

This is the layer nobody is documenting. The agent arrives at the tool page. It sees a form. How does it know which field to fill and which button to press?

The answer is in HTML attributes that already exist but nobody uses thinking about agents. Explicit label with for pointing to the correct input. Descriptive placeholder. Semantic name attribute. aria-label for additional context. Submit button with clear text.

<label for="url-input">Website URL</label>
<input 
  type="url" 
  id="url-input" 
  name="website_url" 
  placeholder="https://example.com"
  aria-label="Enter the URL of the website to generate llms.txt for"
  required
/>
<button type="submit" aria-label="Generate llms.txt file">
  Generate llms.txt
</button>

The complete stack evolution

If I look at what I've built over the last four months as a stack, it has five layers:

Identity: llms.txt says who I am. Accessibility: Markdown for Agents serves clean content. Discovery: Agent Skills lists tools. Permissions: agent-permissions.json declares rules. Usability: semantic HTML enables interaction.

Each layer builds on the previous one. A blog with vanilla PHP, shared hosting, and zero frameworks has all five layers implemented. If this is possible without enterprise infrastructure, the question isn't whether it's worth it but why doesn't everyone have it.