=== AGENT LAYER · two-tier/2.0.0 · structured equivalent of this page · markdown twin: https://agentic-web.site/index.html.md ===
```yaml
spec: two-tier/2.0.0
id: agentic-web-site-home
type: WebSite
date_modified: "2026-06-11"
facts:
name: The Agentic Web
email: "joe@joemahoney.io"
portfolio: "https://mahoneycontextprotocol.com"
thesis: The web is splitting into a human layer and an agentic layer; the winning category builds both
problem:
pretty_but_empty: [Gorgeous in a browser, Score zero on agent-readiness, Client-side rendered shells, Agents see nothing]
functional_but_ugly: [Machine-readable content, Look like scaffolded templates, No design differentiation, Humans bounce immediately]
pillars:
- name: Both layers, not either-or
point: A site that's only pretty scores zero on discovery; a site that's only functional loses every human visitor
- name: SSR as the foundation
point: When an agent fetches the page, the content is in the HTML response, not hidden behind client-side JS
- name: The agent discovery layer
point: llms.txt, .well-known/*, robots signals, RFC-8288 Link headers, OpenAPI, sitemap.xml — the navigation system agents use
- name: Two layers with a switch
point: Every site is testable at both layers, human (browser) and machine (curl + agent probe)
evidence:
when: February 2026
origin: Joe Mahoney (non-developer) added early WebMCP to a landing site; the agent layer worked on the first call
stats:
- {metric: Business meetings, value: "122", context: Generated in 20 days}
- {metric: Fortune 500 companies, value: "11", context: Engaged}
- {metric: Ad spend, value: "$0", context: Organic agent discovery}
caveat: One real outcome from one site, reported as-is; not a guarantee of results for any other site
intake: Email conversation at joe@joemahoney.io; no backend submit on this static site
sections: [thesis, evidence, resources, machine]
tools:
- name: get_thesis
description: Returns the structured two-layer thesis, the problem framing, and the four pillars.
input_schema:
type: object
properties: {}
output_schema:
type: object
properties:
site: {type: string}
thesis: {type: string}
problem:
type: object
properties:
pretty_but_empty:
type: array
items: {type: string}
functional_but_ugly:
type: array
items: {type: string}
pillars:
type: array
items:
type: object
properties:
name: {type: string}
point: {type: string}
contact: {type: object}
- name: get_evidence
description: >-
Returns the February 2026 founding evidence behind the thesis,
122 business meetings in 20 days, 11 Fortune 500 companies
engaged, zero ad spend, together with its caveat that one real
outcome from one site is not a guarantee of results elsewhere.
input_schema:
type: object
properties: {}
output_schema:
type: object
properties:
site: {type: string}
when: {type: string}
origin: {type: string}
stats:
type: array
items:
type: object
properties:
metric: {type: string}
value: {type: string}
context: {type: string}
caveat: {type: string}
contact: {type: object}
- name: check_agent_surface
description: >-
Given an agent-surface name, returns whether this site publishes
that surface and at what path. Static lookup of this site's own
discovery layer, the thesis demonstrated on itself.
input_schema:
type: object
properties:
surface:
type: string
description: Surface to look up, for example llms.txt, a2a, mcp, openapi, skills, security.txt, did
required: [surface]
output_schema:
type: object
properties:
surface: {type: string}
published: {type: boolean}
path:
type: [string, "null"]
note: {type: string}
message: {type: string}
contact: {type: object}
- name: request_contact
description: >-
Builds a contact request about the agentic web, agent-native
builds, or the portfolio. Static site with no backend: the tool
returns a prefilled mailto: link to joe@joemahoney.io with the
visitor's details, and reports submitted: false (honest handoff,
no fake confirmation).
input_schema:
type: object
properties:
name:
type: string
description: Visitor or company name
topic:
type: string
description: What the conversation is about, for example agent-native build, the thesis, the portfolio
notes:
type: string
description: Context, links, timelines, or other detail
required: [topic]
output_schema:
type: object
properties:
handoff: {type: string}
submitted: {const: false}
message: {type: string}
action_mailto: {type: string}
prefilled_text: {type: string}
email: {type: string}
links:
llms_txt: /llms.txt
agent_card: /.well-known/agent.json
a2a_card: /.well-known/agent-card.json
mcp_card: /.well-known/mcp.json
jsonld: /jsonld/website.json
openapi: /openapi.json
webmcp: /webmcp-init.js
operate_txt: /operate.txt
conformance:
conneg: static-fallback
capabilities: [markdown-twin, llms-txt, webmcp-tools, a2a-card, mcp-card, jsonld]
extensions: {}
```
Skip to content
01
The Two-Layer Web
Human + machine, both built right
The web is splitting into two surfaces: the human layer (what people see in browsers) and the agentic layer (what AI agents read and navigate).
Most sites optimize for one or the other. The winning category builds BOTH: standout human design on top of a fully functional agentic layer.
02
The Problem
Pretty but Empty
The YouTuber $10k sites
- Gorgeous in a browser
- Score zero on agent-readiness
- Client-side rendered shells
- Agents see nothing
Functional but Ugly
The slop layer
- Machine-readable content
- Look like scaffolded templates
- No design differentiation
- Humans bounce immediately
03
The Thesis
Both layers, not either-or
A site that's only pretty scores zero on discovery. A site that's only functional loses every human visitor. The answer is BOTH: standout design on a complete agentic substrate.
SSR as the foundation
Server-side rendering isn't just performance — it's the architectural requirement for agent-readiness. When an agent fetches your page, the content must be in the HTML response, not hidden behind client-side JS.
The agent discovery layer
llms.txt, .well-known/*, robots.txt agent signals, RFC-8288 Link headers, OpenAPI specs, sitemap.xml. This isn't optional metadata — it's the navigation system agents use to understand what your site offers.
Two layers with a switch
Every site should be testable at BOTH layers: human (browser) and machine (curl + agent probe). If it only works in one mode, it's incomplete. This page has the switch in its header.
04
The Evidence
122
Business Meetings
Generated in 20 days
11
Fortune 500
Companies engaged
$0
Ad Spend
Organic agent discovery
February 2026: Joe Mahoney (non-developer) added early WebMCP to a landing site. The agent layer worked on the first call. Zero ad spend. That outcome became the founding proof.
The agents found the site, understood the offer, and routed qualified leads automatically. The two-layer architecture worked because BOTH layers were built correctly.
One real outcome from one site, reported as-is — not a guarantee of results for any other site.
05
Resources
Part of the MahoneyContextProtocol portfolio — the canonical context system that makes every agent surface point to the same ground truth.
Want to talk about an agent-native build, the thesis, or the portfolio? The conversation starts by email — nothing on this static site is auto-submitted.
Agent view · machine-readable
The Agentic Web
Two-layer thesis site · human + agentic layers · email intake
Content flags
- Claims
- Thesis + one February 2026 outcome, reported as-is
- Caveat
- Evidence is not a guarantee of results for other sites
- Commerce
- Nothing for sale on this site; no prices published
Thesis pillars
- Both layers, not either-orOnly pretty scores zero on discovery · only functional loses every human visitor
- SSR as the foundationContent must be in the HTML response, not hidden behind client-side JS
- The agent discovery layerllms.txt · .well-known/* · robots signals · Link headers · OpenAPI · sitemap
- Two layers with a switchTestable at both layers: browser and curl + agent probe
Evidence (February 2026)
- 122 business meetingsGenerated in 20 days
- 11 Fortune 500 companiesEngaged
- $0 ad spendOrganic agent discovery · one real outcome, not a guarantee
Invokable agent tools (WebMCP · navigator.modelContext)
get_thesis() — structured thesis, problem framing, and the four pillars
get_evidence() — February 2026 stats with caveat
check_agent_surface({ surface }) — whether this site publishes a given agent surface and at what path (static lookup)
request_contact({ name?, topic, notes? }) — returns a prefilled mailto: handoff to joe@joemahoney.io (static site, no backend submit — honest handoff)