<!-- cf-webmcp:begin -->
## WebMCP on this site

cf-webmcp exposes structured tools to AI agents via WebMCP. WebMCP at the edge. A Cloudflare Worker that equips any website with WebMCP from a single TOML config.

### Available tools

- `search_pages`: Search the cf-webmcp site by keyword. Returns matching pages with their URLs.
- `list_posts`: List recent posts from the cf-webmcp feed.
- `get_page`: Fetch the readable content of a page on this site by its URL path.
- `contact` (form): Submit a contact form to reach the cf-webmcp team.

Full tool schema: [https://webmcp.basgr.com/.well-known/webmcp](https://webmcp.basgr.com/.well-known/webmcp)

### How agents connect

- **Browser-native agents** (Chrome with WebMCP flag enabled, Cloudflare Browser Run lab sessions): tools auto-register via `navigator.modelContext` when the page loads. No setup.
- **Desktop MCP clients** (Claude Desktop, Cursor, Claude Code, Windsurf): pair at [https://webmcp.basgr.com/mcp](https://webmcp.basgr.com/mcp). The pairing page hosts the localhost-bridge widget.

### Operational notes

- Tool calls go to `POST /_webmcp/exec/<tool_name>` with a JSON body.
- Responses use a stable envelope: `{ ok: true, data }` or `{ ok: false, error: { code, message, retriable } }`.
- Rate-limited responses include a `Retry-After` header; honour it.
- Operational health: [https://webmcp.basgr.com/_webmcp/health](https://webmcp.basgr.com/_webmcp/health).

### What to avoid

- Do not call `/_webmcp/exec/*` from cross-origin JS unless the publisher has configured `[cors].allowed_origins`.
- Do not retry on `rate_limited` errors faster than `Retry-After` indicates.
- The fallback widget only initialises on the pairing page above.
<!-- cf-webmcp:end -->
