---
spec: two-tier/2.0.0
schemaVersion: "https://mahoneycontextprotocol.com/specs/two-tier/v2"
date_modified: "2026-06-11"
facts:
  name: Mahoney Context Protocol
  email: "joe@joemahoney.io"
  tagline: Make any site agent-native — and prove it.
  thesis: The two-tier web — presentation layer + agent-surface layer — where the layer you read tells you the site can be operated, and the layer an agent uses backs that up with a live handshake.
---

# Mahoney Context Protocol

Make any site agent-native — and prove it.

Mahoney Context Protocol builds the layer of a website that AI agents read, then verifies it with a probe that runs the handshake — not a badge that checks a box.

## Two layers, one site {#layers}

| Layer | Purpose |
|---|---|
| **Presentation layer** | What a person sees: the design, the words, the page. It advertises that the site can be operated. |
| **Agent-surface layer** | What an agent uses: a working MCP server card, an A2A card, WebMCP tools, Agent Skills, OAuth discovery, schemas, an OpenAPI catalog — that actually answer when an agent knocks. |

The two reinforce each other: the layer you read tells you the site can be operated, and the layer an agent uses backs that up with a live handshake.

## The orchestrator {#orchestrator}

One manifest as the source of truth. Twenty generators for the machine layer. A probe gate between every step, so the chain can't move forward until the last thing it built actually handshakes. It takes a bare domain to agent-native, then re-scans to prove it — with a connection, not a checkmark.

## Why presence isn't enough {#presence}

Presence is cheap. A site can declare its whole agent surface in `Link` headers and have every path behind them return `404`. Presence is a costume. The handshake is the test.

Read more: [Your AI-readiness badge is lying](https://mahoneycontextprotocol.com/blog/agent-native-web.html)

## Contact {#contact}

- Email: joe@joemahoney.io (`mailto:joe@joemahoney.io`)
- Independent work · © 2026 Mahoney Context Protocol
- [Blog](https://mahoneycontextprotocol.com/blog/agent-native-web.html)

## Agent tools {#tools}

Invokable via WebMCP (`navigator.modelContext`, registered by `/webmcp-init.js`) and listed as A2A skills in `/.well-known/agent.json`:

- `get_context()` — structured context about Mahoney Context Protocol: name, email, tagline, thesis (two-tier web), and blog URL
- `search_blog({ query })` — search blog posts by keyword (static search on available posts)

## Agent surfaces {#surfaces}

- llms.txt: /llms.txt
- A2A card: /.well-known/agent-card.json
- Agent card: /.well-known/agent.json
- AI preferences: /.well-known/ai-preferences.json
- JSON-LD: script tag in HTML head
- WebMCP: /webmcp-init.js
- HTML page: https://mahoneycontextprotocol.com/ (human layer with presentation + agent layer)
- Markdown twin: https://mahoneycontextprotocol.com/index.html.md (this file)

Conformance: two-tier/2.0.0, conneg: static-fallback (static host; this twin plus llms.txt is the declared reader-surface delivery).
