v1.3.0 — Agentic Web Integration

☯ HyperContext Standard

Protocol for AI-compatible web pages. Now with browser-native tool registration via WebMCP integration. Static portability meets runtime execution.

What's New in v1.3.0

The DNA/RNA Architecture. HC pages now serve as both portable context documents (DNA) that any AI can read, AND executable tool servers (RNA) that browsers can register as WebMCP tools. One page. Two execution paths. Zero backend changes.

v1.3.0 introduces the Agentic Compliance Tier — an optional layer that transforms HC pages from documents AI reads into tools AI calls. This is achieved through a new hc-tools block and a lightweight WebMCP bridge script that registers tools with the browser's navigator.modelContext API.

Every v1.2.2 page is automatically v1.3.0 protocol-compliant. The agentic layer is purely additive.

Four Compliance Tiers

🔴
Protocol
MUST
🟡
Content
SHOULD
🟢
Agentic NEW
MAY
🔵
Discovery
MAY

Page Architecture

An HC v1.3.0 page consists of up to five blocks within a single HTML file:

hc-metadata application/json
Identity · Config
hc-instructions text/plain
Bootstrap · Context
hc-tools application/json
Tool Definitions
bridge.js Runtime Script
WebMCP Registration

The hc-tools Block NEW

The hc-tools block is a JSON structure that defines tools the page exposes. It follows the same JSON Schema conventions as MCP tool definitions, ensuring compatibility across the entire MCP ecosystem.

Schema

<script type="application/json" id="hc-tools"> { "hc_tools_version": "1.0.0", "tool_prefix": "myapp", "tools": [ { "name": "myapp_add_to_cart", "description": "Add a product to the shopping cart by product ID and quantity. Returns updated cart total.", "inputSchema": { "type": "object", "properties": { "productId": { "type": "string", "description": "The product ID" }, "quantity": { "type": "number", "description": "Number of items to add" } }, "required": ["productId"] }, "annotations": { "idempotentHint": false, "destructiveHint": false, "readOnlyHint": false }, // DOM binding (optional — for declarative form-to-tool) "domBinding": { "selector": "#add-to-cart-form", "trigger": "submit" } } ] } </script>

Tool Definition Fields

Field Required Description
nameUnique tool identifier. Use snake_case with domain prefix.
descriptionClear description for AI understanding. Use "Agentic SEO" — clear verbs, specific outcomes.
inputSchemaJSON Schema draft-07 defining parameters.
annotationsRecommendedHints for AI: idempotentHint, destructiveHint, readOnlyHint.
domBindingOptionalCSS selector + trigger event for declarative form-to-tool mapping.
requiresConfirmationOptionalBoolean. If true, runner MUST get user confirmation before executing.

The WebMCP Bridge Pattern

The bridge script reads the hc-tools block and registers each tool with the browser's navigator.modelContext API. This is the RNA transcription — converting static definitions into executable browser tools.

<script type="module"> // HC-WebMCP Bridge — reads hc-tools, registers with navigator.modelContext (async function hcBridge() { // 1. Parse tool definitions from hc-tools block const toolsEl = document.getElementById('hc-tools'); if (!toolsEl) return; const manifest = JSON.parse(toolsEl.textContent); // 2. Detect WebMCP runtime (native or polyfill) if (!navigator.modelContext?.registerTool) { console.log('[HC Bridge] No WebMCP runtime — tools available as static schema only'); return; } // 3. Register each tool const registrations = []; for (const tool of manifest.tools) { const reg = navigator.modelContext.registerTool({ name: tool.name, description: tool.description, inputSchema: tool.inputSchema, annotations: tool.annotations, async execute(args) { // Route to page-defined handler or DOM binding if (window.__hcToolHandlers?.[tool.name]) { return window.__hcToolHandlers[tool.name](args); } // Fallback: DOM binding execution if (tool.domBinding) { return executeDomBinding(tool.domBinding, args); } return { content: [{ type: 'text', text: `Tool ${tool.name} has no handler` }] }; } }); registrations.push(reg); } // 4. Lifecycle cleanup window.addEventListener('beforeunload', () => { registrations.forEach(r => r.unregister()); }); console.log(`[HC Bridge] Registered ${registrations.length} tools with WebMCP`); })(); </script>

Execution Paths

The same HC page serves three distinct consumer types without modification:

Consumer Reads Execution Auth
LLM Direct (URL paste) hc-metadata + hc-instructions + hc-human-docs Bootstrap reasoning context None needed
HC Runner (CLI/extension) All blocks including hc-tools schemas Structured tool catalog + execution Runner-managed
Browser Agent (WebMCP) hc-tools → bridge → navigator.modelContext Direct tool calls, no DOM scraping Inherits browser session

Declarative Form-to-Tool Annotations

For pages with existing HTML forms, the domBinding field in hc-tools maps form submissions directly to tool invocations. The bridge script can also detect annotated forms:

<!-- Standard HTML form with HC tool annotations --> <form id="checkout-form" data-hc-tool="myapp_checkout" data-hc-description="Complete the checkout process with shipping and payment details"> <input name="address" data-hc-param-description="Full shipping address including city, state, zip" type="text" /> <select name="shipping_method" data-hc-param-description="Shipping speed: standard (5-7 days), express (2-3 days), overnight"> <option value="standard">Standard</option> <option value="express">Express</option> </select> <button type="submit">Place Order</button> </form>
Agentic SEO. The data-hc-param-description attributes serve dual purpose: they help AI agents understand parameter semantics, and they improve the page's discoverability for agentic search systems. Write descriptions like meta-descriptions — clear verbs, specific outcomes, expected formats.

Security Model

Trust Boundaries

All v1.2.2 security rules carry forward. The agentic layer adds:

RuleEnforcement
Tool execute() MUST NOT access cross-origin resourcesBridge script + browser CORS
Destructive tools MUST require user confirmationannotations.destructiveHint + HITL
Tool registrations scoped to page lifecyclebeforeunload cleanup
Input validation before executionJSON Schema validation in bridge
No credential leakage in tool responsesContent block sanitization

Human-in-the-Loop (HITL)

When requiresConfirmation: true or annotations.destructiveHint: true, the runner/browser MUST pause execution and present the pending action to the user before proceeding. This aligns with the W3C WebMCP proposal's yield-to-user mechanism.

Migration from v1.2.2

Zero breaking changes. Every valid v1.2.2 page is a valid v1.3.0 page. The upgrade path is purely additive: add hc-tools block, add bridge script, bump version number.
StepActionBreaking?
hc_versionChange "1.2.2" → "1.3.0" in hc-metadataNo
hc-toolsAdd new script block with tool definitionsNo (new block)
bridge.jsAdd module script for WebMCP registrationNo (new script)
agentic_capableAdd to execution config in hc-metadataNo (new field)
compliance_levelsAdd "agentic": "optional" to metadataNo (new field)

Agentic Compliance Checklist

For pages targeting the Agentic tier (Tier 3), validate against these 8 items:

Claude Code Feedback Loop

For development validation, connect Claude Code to the chrome-devtools-mcp server. This enables a closed-loop workflow:

1. Edit hc-tools definitions in your HTML file.
2. Bridge script auto-registers tools on page load.
3. Claude Code discovers tools via list_webmcp_tools.
4. Claude Code invokes tools via call_webmcp_tool.
5. Validate responses against HC compliance.
6. Iterate until all tools pass validation.

// Claude Code / claude_desktop_config.json { "mcpServers": { "chrome-devtools": { "command": "npx", "args": ["@mcp-b/chrome-devtools-mcp@latest"] } } }

Resources

ResourceURL
HC v1.3.0 Spec (this page)https://hc-standard.org/spec/v1.3.0/
HC v1.2.2 Spec (previous)https://hc-standard.org/spec/v1.2.2/
WebMCP W3C Explainerhttps://github.com/webmachinelearning/webmcp
MCP-B Polyfillhttps://www.npmjs.com/package/@mcp-b/global
Chrome DevTools MCPhttps://github.com/WebMCP-org/chrome-devtools-quickstart
HC GitHubhttps://github.com/hc-standard/hc-standard