Neue Skills, Referenzen & OpenWiki-Doku integriert

Umfangreiche Erweiterung der Skill-Bibliothek: Neue Skills für Humanisierung (Englisch/PT-BR), Design-Validierung, AI-SEO und Coolify-Deployment inkl. Regelwerke, Presets, Pattern-Referenzen, Testfälle und Automatisierungsskripte. Zusätzliche Skills für Revenue-Centric Design, Pier Cloud, OKF, Lebenslauf- und LinkedIn-Optimierung sowie zahlreiche Referenzdateien, Checklisten und YAML/JSON/Markdown-Templates. Einführung einer vollständigen OpenWiki-Dokumentation mit Architektur-, Domain- und Workflow-Beschreibungen, zentralem Index und automatisierten Updates. Modularer Aufbau, restriktive Lizenzen und umfassende Qualitäts- und Evaluationsmechanismen für alle neuen Inhalte.
This commit is contained in:
Tim Krampitz
2026-07-26 14:00:58 +02:00
parent 070727d5cd
commit 01046b01e4
202 changed files with 31290 additions and 0 deletions

View File

@@ -0,0 +1,338 @@
# 🤖 Agent Ready — Cloudflare Scanner Skill
Scan any website for AI agent readiness and get actionable fix prompts — powered by [isitagentready.com](https://isitagentready.com).
This skill wraps the Cloudflare "Is It Agent Ready?" scanner into a reusable agent skill with full API documentation, 20 implementation sub-skills, and copy-paste prompts for every failing check.
---
## What It Does
Give it a domain. It scans 18 checks across 5 categories and tells you:
- **What level** your site is at (05)
- **What's passing** and what's failing
- **How to fix** every failure — with a prompt you can paste into any coding agent
- **What to prioritize** to reach the next level
```
You: "Scan example.com for agent readiness"
Agent: Scans via API → generates Markdown report → includes fix prompts for every failure
```
---
## Quick Start
### 1. Scan a single domain
```bash
curl -s -X POST 'https://isitagentready.com/api/scan' \
-H 'Content-Type: application/json' \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36' \
-H 'Referer: https://isitagentready.com/' \
-H 'Origin: https://isitagentready.com' \
-d '{"url":"https://example.com/"}'
```
### 2. Get a markdown report (for LLMs)
```bash
curl -s -X POST 'https://isitagentready.com/api/scan' \
-H 'Content-Type: application/json' \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36' \
-H 'Referer: https://isitagentready.com/' \
-H 'Origin: https://isitagentready.com' \
-d '{"url":"https://example.com/","format":"agent"}'
```
### 3. Use the MCP server
Connect your agent to the MCP endpoint:
```
https://isitagentready.com/mcp
```
Call the `scan_site` tool with `{"url": "https://example.com"}`.
---
## The 18 Checks
### Discoverability
| # | Check | What passes |
|---|-------|-------------|
| 1 | **robots.txt** | `/robots.txt` returns 200 with `text/plain` and `User-agent` directives |
| 2 | **sitemap.xml** | `/sitemap.xml` returns valid XML, or `Sitemap:` directive in robots.txt |
| 3 | **Link headers** | Homepage `Link` headers include agent-useful relations (`api-catalog`, `service-desc`, etc.) |
### Content
| # | Check | What passes |
|---|-------|-------------|
| 4 | **Markdown for Agents** | `Accept: text/markdown` → response with `Content-Type: text/markdown` |
### Bot Access Control
| # | Check | What passes |
|---|-------|-------------|
| 5 | **AI bot rules** | robots.txt has `User-agent` entries for GPTBot, Claude-Web, Google-Extended, etc. |
| 6 | **Content Signals** | robots.txt has `Content-Signal:` directives (ai-train, search, ai-input) |
| 7 | **Web Bot Auth** | `/.well-known/http-message-signatures-directory` with valid JWKS *(informational)* |
### API, Auth, MCP & Skill Discovery
| # | Check | What passes |
|---|-------|-------------|
| 8 | **API Catalog** | `/.well-known/api-catalog` returns `application/linkset+json` (RFC 9727) |
| 9 | **OAuth/OIDC** | `/.well-known/openid-configuration` or `oauth-authorization-server` with valid metadata |
| 10 | **OAuth Protected Resource** | `/.well-known/oauth-protected-resource` with `resource` + `authorization_servers` (RFC 9728) |
| 11 | **MCP Server Card** | `/.well-known/mcp/server-card.json` with `serverInfo`, transport, capabilities (SEP-1649) |
| 12 | **A2A Agent Card** | `/.well-known/agent-card.json` with name, version, supportedInterfaces |
| 13 | **Agent Skills Index** | `/.well-known/agent-skills/index.json` with skills array (v0.2.0) |
| 14 | **WebMCP** | Page calls `navigator.modelContext.provideContext()` with tool definitions |
### Commerce *(optional — scored only for e-commerce sites)*
| # | Check | What passes |
|---|-------|-------------|
| 15 | **x402** | API routes return HTTP 402 with x402 payment headers |
| 16 | **UCP** | `/.well-known/ucp` with protocol_version and services |
| 17 | **ACP** | `/.well-known/acp.json` with protocol metadata |
| 18 | **AP2** | A2A Agent Card includes AP2 extension with role |
---
## Level System
```
Level 0 Not Ready — Fails basic checks
Level 1 Basic Web Presence — 2 of 3: robots.txt, sitemap, link headers
Level 2 Bot-Aware — Level 1 + AI bot rules + Content Signals
Level 3 Agent-Readable — Level 2 + markdown content negotiation
Level 4 Agent-Integrated — Level 3 + 1 of: MCP card, A2A card, agent skills, API catalog
Level 5 Agent-Native — Level 4 + 2 of: Web Bot Auth, all integrations, auth metadata
```
---
## Example Output
Scanning a site at Level 1 produces a report like:
```markdown
# Agent Ready Scan — example.com
> **Score:** Level 1 — Basic Web Presence
> **Scanned:** 2026-04-18T13:10:58Z
> **Link:** [View online](https://isitagentready.com/example.com)
## Summary
| Category | Score |
|-----------------------------------|-------|
| Discoverability | 2/3 |
| Content | 0/1 |
| Bot Access Control | 1/3 |
| API, Auth, MCP & Skill Discovery | 0/7 |
## Details
### Discoverability (2/3)
-**robots.txt** — robots.txt exists with valid format
-**sitemap.xml** — sitemap.xml exists with valid structure
-**Link headers** — No Link headers found on homepage
### Content (0/1)
-**Markdown for Agents** — Site does not support Markdown for Agents
(... more categories ...)
## 🔧 How to Implement — Agent Prompts
#### ❌ Link headers
**Issue:** No Link headers found on homepage
```
Goal: Include Link response headers for agent discovery (RFC 8288)
Issue: No Link headers found on homepage
Fix: Add Link response headers to your homepage that point agents to useful
resources. For example: Link: </.well-known/api-catalog>; rel="api-catalog"
Skill: https://isitagentready.com/.well-known/agent-skills/link-headers/SKILL.md
Docs: https://www.rfc-editor.org/rfc/rfc8288
```
> 📖 Reference: [link-headers/SKILL.md](link-headers/SKILL.md)
(... one block per failing check ...)
## Next Level
**Level 2 — Bot-Aware**
To reach the next level, implement:
- Content Signals in robots.txt
```
---
## Fix Prompts
Every failing check gets a prompt block you can copy-paste into any coding agent (Cursor, Copilot, Claude, etc.). The format matches the isitagentready.com web UI:
```
Goal: <what the check expects>
Issue: <what was found (dynamic from scan)>
Fix: <step-by-step implementation>
Skill: <URL to the detailed SKILL.md>
Docs: <links to RFCs and specs>
```
The SKILL.md contains templates for all 20 checks. The `{issue}` placeholder is replaced with the actual message from the API response.
---
## Batch Scanning
Scan multiple domains with a 2-second delay between requests:
```python
import json, time, urllib.request
HEADERS = {
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ...",
"Referer": "https://isitagentready.com/",
"Origin": "https://isitagentready.com"
}
domains = ["example.com", "another.com", "third.com"]
for domain in domains:
body = json.dumps({"url": f"https://{domain}/"}).encode()
req = urllib.request.Request(
"https://isitagentready.com/api/scan",
data=body, headers=HEADERS
)
with urllib.request.urlopen(req, timeout=90) as resp:
data = json.loads(resp.read())
level = data["level"]
name = data["levelName"]
print(f"{domain}: Level {level}{name}")
time.sleep(2)
```
---
## API Response Shape
```json
{
"url": "https://example.com",
"scannedAt": "2026-04-18T13:10:58.788Z",
"level": 1,
"levelName": "Basic Web Presence",
"isCommerce": false,
"checks": {
"discoverability": {
"robotsTxt": {
"status": "pass",
"message": "robots.txt exists with valid format",
"evidence": [ ... ],
"durationMs": 42
}
}
},
"nextLevel": {
"target": 2,
"name": "Bot-Aware",
"requirements": [
{
"check": "contentSignals",
"description": "...",
"prompt": "...",
"skillUrl": "...",
"specUrls": ["..."]
}
]
}
}
```
| Status | Meaning |
|--------|---------|
| `pass` | ✅ Check passed |
| `fail` | ❌ Action needed |
| `neutral` | ⬜ Not applicable / informational |
---
## Skill Structure
```
agent-ready-cloudflare/
├── README.md ← You are here
├── SKILL.md ← Main skill (operational flow, API docs, prompt templates)
├── scan-site/SKILL.md ← Meta: scan API + MCP server docs
│ Discoverability
├── robots-txt/SKILL.md ← Implement robots.txt (RFC 9309)
├── sitemap/SKILL.md ← Implement sitemap.xml
├── link-headers/SKILL.md ← Link response headers (RFC 8288)
├── llms-txt/SKILL.md ← Publish /llms.txt
├── llms-full-txt/SKILL.md ← Publish /llms-full.txt
│ Content
├── markdown-negotiation/SKILL.md ← Accept: text/markdown negotiation
│ Bot Access Control
├── ai-rules/SKILL.md ← AI bot User-agent rules
├── content-signals/SKILL.md ← Content-Signal directives
├── web-bot-auth/SKILL.md ← Web Bot Auth (JWKS)
│ API, Auth, MCP & Skill Discovery
├── api-catalog/SKILL.md ← API Catalog (RFC 9727)
├── oauth-discovery/SKILL.md ← OAuth/OIDC discovery (RFC 8414)
├── oauth-protected-resource/SKILL.md ← Protected Resource Metadata (RFC 9728)
├── mcp-server-card/SKILL.md ← MCP Server Card (SEP-1649)
├── a2a-agent-card/SKILL.md ← A2A Agent Card (Google A2A)
├── agent-skills/SKILL.md ← Agent Skills Discovery Index
├── webmcp/SKILL.md ← WebMCP browser API
│ Commerce
├── x402/SKILL.md ← x402 payment protocol
├── ucp/SKILL.md ← Universal Commerce Protocol
└── acp/SKILL.md ← Agent Commerce Protocol
```
**21 files** — 1 main skill + 20 implementation sub-skills.
---
## Sources
| Resource | URL |
|----------|-----|
| Scanner | https://isitagentready.com |
| API endpoint | `POST https://isitagentready.com/api/scan` |
| MCP server | `https://isitagentready.com/mcp` |
| API Catalog | https://isitagentready.com/.well-known/api-catalog |
| Agent Skills Index | https://isitagentready.com/.well-known/agent-skills/index.json |
| MCP Server Card | https://isitagentready.com/.well-known/mcp/server-card.json |
| Full docs (llms-full.txt) | https://isitagentready.com/llms-full.txt |
| Cloudflare Agents | https://developers.cloudflare.com/agents/ |
| MCP Protocol | https://modelcontextprotocol.io/ |
| Content Signals | https://contentsignals.org/ |
| Agent Skills Discovery | https://github.com/cloudflare/agent-skills-discovery-rfc |

View File

@@ -0,0 +1,783 @@
---
name: agent-ready-cloudflare
description: >
Audit and improve website readiness for AI agents using the Cloudflare
"Is It Agent Ready?" scanner (isitagentready.com). Covers scanning via API,
interpreting results, generating implementation prompts, and fixing every check.
Use when the user mentions "agent ready", "isitagentready", "AI agent scan",
"agent readiness", "agent-ready score", "MCP server card", "agent skills index",
"markdown for agents", "content signals", "web bot auth", "agent discovery",
"RFC 9727", "RFC 8288", "RFC 9728", "SEP-1649", "WebMCP", "x402", "UCP", "ACP",
or wants to make a website discoverable and usable by AI agents.
metadata:
author: Cloudflare / isitagentready.com
version: "3.0"
date: 2026-06-03
source: https://isitagentready.com
category: product-verification
---
# Agent Ready — Cloudflare Scanner
Audit any website for AI agent readiness, generate actionable fix prompts, and
implement improvements to increase the agent-ready score.
---
## 0. Operational Flow
Follow this flow every time this skill is activated:
### Step 1 — Get the domain
If the user did not provide a domain, ask:
> Which domain do you want to scan on isitagentready.com?
### Step 2 — Scan via API
```bash
curl -s -X POST 'https://isitagentready.com/api/scan' \
-H 'Content-Type: application/json' \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36' \
-H 'Referer: https://isitagentready.com/' \
-H 'Origin: https://isitagentready.com' \
-d '{"url":"https://DOMAIN/","enabledChecks":["robotsTxt","sitemap","linkHeaders","dnsAid","markdownNegotiation","robotsTxtAiRules","contentSignals","webBotAuth","apiCatalog","oauthDiscovery","oauthProtectedResource","authMd","mcpServerCard","a2aAgentCard","agentSkills","webMcp","x402","mpp","ucp","acp","ap2"]}'
```
Replace `DOMAIN` with the target domain.
### Step 3 — Generate the Markdown report
Use the API response to build a report with this structure:
```markdown
# Agent Ready Scan — {domain}
> **Score:** Level {level} — {levelName}
> **Scanned:** {scannedAt}
> **Link:** [View online](https://isitagentready.com/{domain})
## Summary
| Category | Score |
|----------|-------|
| Discoverability | {passed}/{total} |
| Content | {passed}/{total} |
| Bot Access Control | {passed}/{total} |
| API, Auth, MCP & Skill Discovery | {passed}/{total} |
| Commerce (Optional) | {passed}/{total} |
## Details
### Discoverability ({passed}/{total})
-**robots.txt** — {message}
-**sitemap.xml** — {message}
(... for each check ...)
### (... repeat for each category ...)
## 🔧 How to Implement — Agent Prompts
(... one block per failing check, see Step 4 ...)
## Next Level
**Level {nextLevel.target} — {nextLevel.name}**
To reach the next level, implement:
- {nextLevel.requirements[].description}
```
### Step 4 — Generate "How to Implement" prompts
For every check with `status: "fail"` or `status: "neutral"`, generate a prompt
block using the **Prompt Templates** in Section 8 below. The prompt combines:
1. The **Goal** and **Fix** from the template (static per check)
2. The **Issue** from the API response (`checks.{category}.{check}.message`)
3. The **Skill URL** pointing to the sub-skill
4. The **Docs** links to the relevant RFCs/specs
Format each prompt as a fenced code block the user can copy-paste into a coding agent:
````markdown
#### ❌ {check name}
**Issue:** {message from API}
```
Goal: {goal from template}
Issue: {message from API}
Fix: {fix from template}
Skill: https://isitagentready.com/.well-known/agent-skills/{skill-folder}/SKILL.md
Docs: {docs URLs from template}
```
> 📖 Reference: [{skill-folder}/SKILL.md]({skill-folder}/SKILL.md)
````
### Step 5 — Deliver
Present the full Markdown report to the user. If they want to save it to a file,
write it to the requested path.
---
## 1. What It Checks
### Discoverability (4 checks)
| Check | API Key | Pass criteria |
|-------|---------|---------------|
| robots.txt | `robotsTxt` | Returns 200 with `text/plain` containing at least one `User-agent` directive |
| sitemap.xml | `sitemap` | `/sitemap.xml` returns valid XML, or `Sitemap` directive found in robots.txt |
| Link headers | `linkHeaders` | Homepage includes `Link` headers with agent-useful relations (`service-desc`, `api-catalog`, etc.) |
| DNS-AID | `dnsAid` | SVCB/HTTPS records found under `_agents` namespace via DNS-over-HTTPS (Cloudflare → Google fallback) |
### Content (1 check)
| Check | API Key | Pass criteria |
|-------|---------|---------------|
| Markdown for Agents | `markdownNegotiation` | `Accept: text/markdown` returns `Content-Type: text/markdown` |
### Bot Access Control (3 checks)
| Check | API Key | Pass criteria |
|-------|---------|---------------|
| AI bot rules | `robotsTxtAiRules` | robots.txt contains `User-agent` entries for known AI bots (GPTBot, Claude-Web, Google-Extended, etc.) |
| Content Signals | `contentSignals` | robots.txt contains `Content-Signal` directives with ai-train/search/ai-input |
| Web Bot Auth | `webBotAuth` | `/.well-known/http-message-signatures-directory` exists with valid JWKS (informational — neutral does not affect score) |
### API, Auth, MCP & Skill Discovery (8 checks)
| Check | API Key | Pass criteria |
|-------|---------|---------------|
| API Catalog | `apiCatalog` | `/.well-known/api-catalog` returns valid `linkset+json` with API entries |
| OAuth/OIDC | `oauthDiscovery` | `/.well-known/openid-configuration` or `oauth-authorization-server` with valid OAuth metadata |
| OAuth Protected Resource | `oauthProtectedResource` | `/.well-known/oauth-protected-resource` with `resource` and `authorization_servers` |
| Auth.md | `authMd` | `/auth.md` exists with valid H1 heading containing "auth.md"; optionally PRM + AS metadata |
| MCP Server Card | `mcpServerCard` | Valid card at `/.well-known/mcp/server-card.json`, `server-cards.json`, or `mcp.json` with `serverInfo.name` |
| A2A Agent Card | `a2aAgentCard` | `/.well-known/agent-card.json` with `name`, `version`, and `supportedInterfaces` |
| Agent Skills Index | `agentSkills` | `/.well-known/agent-skills/index.json` with valid `skills` array (legacy `/.well-known/skills/` also accepted) |
| WebMCP | `webMcp` | Page exposes MCP tools via `navigator.modelContext.provideContext()` |
### Commerce — Optional (5 checks, scored only if e-commerce signals detected)
| Check | API Key | Pass criteria |
|-------|---------|---------------|
| x402 | `x402` | API routes return HTTP 402 with valid x402 payment headers |
| MPP | `mpp` | `/openapi.json` with `x-payment-info` extensions on payable operations (Machine Payment Protocol) |
| UCP | `ucp` | `/.well-known/ucp` with `protocol_version` and `services` |
| ACP | `acp` | `/.well-known/acp.json` with `protocol.name`, `api_base_url`, `transports`, `capabilities.services` |
| AP2 | `ap2` | A2A Agent Card includes AP2 extension with role information |
---
## 2. Levels
| Level | Name | Requirements |
|-------|------|-------------|
| 0 | Not Ready | Does not meet Level 1 criteria |
| 1 | Basic Web Presence | Pass 2 of 3: robots.txt, sitemap, link headers |
| 2 | Bot-Aware | Level 1 + both: AI bot rules AND Content Signals in robots.txt |
| 3 | Agent-Readable | Level 2 + markdown content negotiation |
| 4 | Agent-Integrated | Level 3 + 1 of 4: MCP Server Card, A2A Agent Card, Agent Skills, API Catalog |
| 5 | Agent-Native | Level 4 + 2 of 3: Web Bot Auth, all four integration checks, auth metadata (OAuth discovery or OAuth Protected Resource) |
---
## 3. API Reference
### Endpoint
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
```
### Required Headers (Cloudflare protection)
```
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36
Referer: https://isitagentready.com/
Origin: https://isitagentready.com
```
### Request Body
```json
{
"url": "https://example.com/",
"enabledChecks": [
"robotsTxt", "sitemap", "linkHeaders", "dnsAid",
"markdownNegotiation",
"robotsTxtAiRules", "contentSignals", "webBotAuth",
"apiCatalog", "oauthDiscovery", "oauthProtectedResource", "authMd",
"mcpServerCard", "a2aAgentCard", "agentSkills", "webMcp",
"x402", "mpp", "ucp", "acp", "ap2"
]
}
```
All checks are optional — pass only the ones you want to run.
Set `"format": "agent"` to get a markdown response with fix instructions instead
of JSON (useful for piping directly to an LLM).
### MCP Server
The scanner is also available as an MCP server:
```
https://isitagentready.com/mcp
```
Call the `scan_site` tool with a `url` parameter. See [scan-site/SKILL.md](scan-site/SKILL.md).
### Discovered Endpoints (isitagentready.com itself)
The scanner practices what it preaches. These are its own agent-ready endpoints:
| Endpoint | Content |
|----------|---------|
| `/.well-known/api-catalog` | RFC 9727 linkset with scan API and MCP server entries |
| `/.well-known/mcp/server-card.json` | MCP Server Card (Streamable HTTP transport) |
| `/.well-known/mcp.json` | Same MCP Server Card (alternate path) |
| `/.well-known/agent-skills/index.json` | 23 skills in Agent Skills Discovery v0.2.0 format |
| `/llms.txt` | LLM-friendly overview of the scanner |
| `/llms-full.txt` | Full documentation — canonical reference for all 18 checks, pass criteria, and level system |
| `/api/health` | Health check (`{"status":"ok"}`) |
| `/mcp` | Streamable HTTP MCP server with `scan_site` tool |
The API Catalog links the scan API to its documentation (`/llms-full.txt`),
its service description (`/.well-known/mcp/server-card.json`), and its health
endpoint (`/api/health`).
### Response Structure
```json
{
"url": "https://example.com",
"scannedAt": "2026-04-18T13:10:58.788Z",
"level": 1,
"levelName": "Basic Web Presence",
"isCommerce": false,
"commerceSignals": [],
"nextLevel": {
"target": 2,
"name": "Bot-Aware",
"requirements": [
{
"check": "contentSignals",
"description": "...",
"shortPrompt": "...",
"prompt": "Full implementation prompt...",
"specUrls": ["https://..."],
"skillUrl": "https://isitagentready.com/.well-known/agent-skills/.../SKILL.md"
}
]
},
"checks": {
"<category>": {
"<checkKey>": {
"status": "pass|fail|neutral",
"message": "Human-readable conclusion",
"durationMs": 42,
"evidence": [
{
"action": "fetch|parse|conclude",
"label": "GET /robots.txt",
"request": { "url": "...", "method": "GET" },
"response": {
"status": 200,
"headers": { "content-type": "..." },
"bodyPreview": "..."
},
"finding": {
"outcome": "positive|negative|neutral",
"summary": "..."
}
}
]
}
}
}
}
```
### Status Values
| Status | Icon | Meaning |
|--------|------|---------|
| `pass` | ✅ | Check passed |
| `fail` | ❌ | Action needed |
| `neutral` | ⬜ | Not applicable / informational |
---
## 4. Web Interface vs API
| Feature | API | Web UI |
|---------|-----|--------|
| Score & Level | ✅ | ✅ |
| Check status + message | ✅ | ✅ |
| Evidence (audit details) | ✅ Full | ✅ Same |
| "How to implement" prompts | ⚠️ Only `nextLevel` (1 prompt) | ✅ All failing checks |
| Skill URLs | ⚠️ Only `nextLevel` | ✅ All checks |
This is why this skill includes the full prompt templates below — to reconstruct
the web-quality prompts from API data.
---
## 5. Batch Scanning
For multiple domains, add a 2-second delay between requests. Write results
incrementally to avoid data loss:
```python
import json, time, urllib.request
HEADERS = {
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 ...",
"Referer": "https://isitagentready.com/",
"Origin": "https://isitagentready.com"
}
CHECKS = ["robotsTxt","sitemap","linkHeaders","dnsAid","markdownNegotiation",
"robotsTxtAiRules","contentSignals","webBotAuth","apiCatalog",
"oauthDiscovery","oauthProtectedResource","authMd","mcpServerCard",
"a2aAgentCard","agentSkills","webMcp","x402","mpp","ucp","acp","ap2"]
for domain in domains:
body = json.dumps({"url": f"https://{domain}/", "enabledChecks": CHECKS}).encode()
req = urllib.request.Request("https://isitagentready.com/api/scan",
data=body, headers=HEADERS)
with urllib.request.urlopen(req, timeout=90) as resp:
data = json.loads(resp.read())
# process data...
time.sleep(2)
```
---
## 6. Sub-Skills (Implementation Guides)
### Discoverability
- [robots-txt/SKILL.md](robots-txt/SKILL.md) — Publish `/robots.txt` (RFC 9309)
- [sitemap/SKILL.md](sitemap/SKILL.md) — Publish `/sitemap.xml`
- [link-headers/SKILL.md](link-headers/SKILL.md) — Add `Link` response headers (RFC 8288)
- [dns-aid/SKILL.md](dns-aid/SKILL.md) — Publish DNS-AID SVCB records for agent discovery (draft-mozleywilliams-dnsop-dnsaid)
- [llms-txt/SKILL.md](llms-txt/SKILL.md) — Publish `/llms.txt` (llmstxt.org)
- [llms-full-txt/SKILL.md](llms-full-txt/SKILL.md) — Publish `/llms-full.txt`
### Content
- [markdown-negotiation/SKILL.md](markdown-negotiation/SKILL.md) — Return markdown on `Accept: text/markdown`
### Bot Access Control
- [ai-rules/SKILL.md](ai-rules/SKILL.md) — AI bot `User-agent` rules in robots.txt
- [content-signals/SKILL.md](content-signals/SKILL.md) — `Content-Signal` directives
- [web-bot-auth/SKILL.md](web-bot-auth/SKILL.md) — JWKS for request signing
### API, Auth, MCP & Skill Discovery
- [api-catalog/SKILL.md](api-catalog/SKILL.md) — API Catalog (RFC 9727)
- [oauth-discovery/SKILL.md](oauth-discovery/SKILL.md) — OAuth/OIDC discovery (RFC 8414)
- [oauth-protected-resource/SKILL.md](oauth-protected-resource/SKILL.md) — Protected Resource Metadata (RFC 9728)
- [auth-md/SKILL.md](auth-md/SKILL.md) — Auth.md agent registration discovery (auth-md.com)
- [mcp-server-card/SKILL.md](mcp-server-card/SKILL.md) — MCP Server Card (SEP-1649)
- [a2a-agent-card/SKILL.md](a2a-agent-card/SKILL.md) — A2A Agent Card (Google A2A Protocol)
- [agent-skills/SKILL.md](agent-skills/SKILL.md) — Agent Skills Discovery Index
- [webmcp/SKILL.md](webmcp/SKILL.md) — WebMCP browser API
### Commerce (Optional)
- [x402/SKILL.md](x402/SKILL.md) — x402 HTTP payment protocol
- [mpp/SKILL.md](mpp/SKILL.md) — Machine Payment Protocol (mpp.dev)
- [ucp/SKILL.md](ucp/SKILL.md) — Universal Commerce Protocol
- [acp/SKILL.md](acp/SKILL.md) — Agent Commerce Protocol
### Meta
- [scan-site/SKILL.md](scan-site/SKILL.md) — Scan any site for agent readiness (includes MCP server endpoint)
---
## 7. Priority Order for Maximum Impact
1. `robots.txt` + `sitemap.xml` → Level 1
2. `Content Signals` in robots.txt → Level 2
3. `Markdown for Agents` + `Link headers` → toward Level 3
4. `MCP Server Card` + `Agent Skills Index` → toward Level 4
5. `OAuth discovery` + `API Catalog` → full agent interoperability
---
## 8. Prompt Templates per Check
These templates replicate the "How to implement — paste into your coding agent"
prompts from the web UI. When generating the report (Step 4), use the `{issue}`
placeholder with the actual `message` from the API response.
### `robotsTxt`
```
Goal: Publish /robots.txt with clear crawl rules
Issue: {issue}
Fix: Create /robots.txt at the site root with explicit User-agent directives and allow/disallow rules for key paths. Ensure it is plain text and returns 200.
Skill: https://isitagentready.com/.well-known/agent-skills/robots-txt/SKILL.md
Docs: https://www.rfc-editor.org/rfc/rfc9309
```
Sub-skill: [robots-txt/SKILL.md](robots-txt/SKILL.md)
### `sitemap`
```
Goal: Publish /sitemap.xml with canonical URLs
Issue: {issue}
Fix: Generate /sitemap.xml listing canonical URLs, keep it updated on publish, and reference it from /robots.txt.
Skill: https://isitagentready.com/.well-known/agent-skills/sitemap/SKILL.md
Docs: https://www.sitemaps.org/protocol.html
```
Sub-skill: [sitemap/SKILL.md](sitemap/SKILL.md)
### `linkHeaders`
```
Goal: Include Link response headers for agent discovery (RFC 8288)
Issue: {issue}
Fix: Add Link response headers to your homepage that point agents to useful resources. For example: Link: </.well-known/api-catalog>; rel="api-catalog" to advertise your API catalog, or Link: </docs/api>; rel="service-doc" for API documentation. See RFC 8288 for the Link header format and IANA Link Relations for registered relation types.
Skill: https://isitagentready.com/.well-known/agent-skills/link-headers/SKILL.md
Docs: https://www.rfc-editor.org/rfc/rfc8288, https://www.rfc-editor.org/rfc/rfc9727#section-3
```
Sub-skill: [link-headers/SKILL.md](link-headers/SKILL.md)
### `markdownNegotiation`
```
Goal: Return HTML responses as markdown when agents request it
Issue: {issue}
Fix: Enable Markdown for Agents so requests with Accept: text/markdown return a markdown version of your HTML response while HTML stays the default for browsers. Confirm the response uses Content-Type: text/markdown (and x-markdown-tokens if available).
Skill: https://isitagentready.com/.well-known/agent-skills/markdown-negotiation/SKILL.md
Docs: https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/
```
Sub-skill: [markdown-negotiation/SKILL.md](markdown-negotiation/SKILL.md)
### `robotsTxtAiRules`
```
Goal: Add User-agent rules for AI crawlers like GPTBot, Claude-Web, and others
Issue: {issue}
Fix: Add explicit User-agent entries for AI crawlers (GPTBot, OAI-SearchBot, Claude-Web, Google-Extended) with allow/disallow rules that match your policy.
Skill: https://isitagentready.com/.well-known/agent-skills/ai-rules/SKILL.md
Docs: https://www.rfc-editor.org/rfc/rfc9309, https://developers.cloudflare.com/ai-crawl-control/
```
Sub-skill: [ai-rules/SKILL.md](ai-rules/SKILL.md)
### `contentSignals`
```
Goal: Declare AI content usage preferences with Content Signals in robots.txt
Issue: {issue}
Fix: Add Content-Signal directives to your robots.txt declaring preferences for ai-train, search, and ai-input. For example:
Content-Signal: ai-train=no, search=yes, ai-input=no
Skill: https://isitagentready.com/.well-known/agent-skills/content-signals/SKILL.md
Docs: https://contentsignals.org/, https://datatracker.ietf.org/doc/draft-romm-aipref-contentsignals/
```
Sub-skill: [content-signals/SKILL.md](content-signals/SKILL.md)
### `webBotAuth`
```
Goal: Let your site identify itself as a bot with Web Bot Auth
Issue: {issue}
Fix: Publish a JWKS at /.well-known/http-message-signatures-directory so your site can identify itself when it sends bot or agent requests. Receiving sites can use it to verify those signed requests.
Skill: https://isitagentready.com/.well-known/agent-skills/web-bot-auth/SKILL.md
Docs: https://datatracker.ietf.org/wg/webbotauth/about/, https://developers.cloudflare.com/bots/reference/bot-verification/web-bot-auth/
```
Sub-skill: [web-bot-auth/SKILL.md](web-bot-auth/SKILL.md)
### `apiCatalog`
```
Goal: Publish an API catalog for automated API discovery (RFC 9727)
Issue: {issue}
Fix: Create /.well-known/api-catalog returning application/linkset+json with a "linkset" array. Each entry should include an "anchor" URL for the API and link relations for service-desc (OpenAPI spec), service-doc (documentation), and status (health endpoint). See RFC 9727 Appendix A for examples.
Skill: https://isitagentready.com/.well-known/agent-skills/api-catalog/SKILL.md
Docs: https://www.rfc-editor.org/rfc/rfc9727, https://www.rfc-editor.org/rfc/rfc9264
```
Sub-skill: [api-catalog/SKILL.md](api-catalog/SKILL.md)
### `oauthDiscovery`
```
Goal: Publish OAuth/OIDC discovery metadata so agents can authenticate with your APIs
Issue: {issue}
Fix: If your site has protected APIs, publish /.well-known/openid-configuration (for OpenID Connect) or /.well-known/oauth-authorization-server (for pure OAuth 2.0) with your issuer, authorization_endpoint, token_endpoint, jwks_uri, and grant_types_supported. This allows AI agents to programmatically discover how to authenticate.
Skill: https://isitagentready.com/.well-known/agent-skills/oauth-discovery/SKILL.md
Docs: http://openid.net/specs/openid-connect-discovery-1_0.html, https://www.rfc-editor.org/rfc/rfc8414
```
Sub-skill: [oauth-discovery/SKILL.md](oauth-discovery/SKILL.md)
### `oauthProtectedResource`
```
Goal: Publish OAuth Protected Resource Metadata so agents can discover how to authenticate
Issue: {issue}
Fix: Publish /.well-known/oauth-protected-resource with your resource identifier, authorization_servers (list of OAuth/OIDC issuer URLs that can issue tokens for this resource), and scopes_supported. This tells agents how to obtain access tokens for your protected APIs.
Skill: https://isitagentready.com/.well-known/agent-skills/oauth-protected-resource/SKILL.md
Docs: https://www.rfc-editor.org/rfc/rfc9728
```
Sub-skill: [oauth-protected-resource/SKILL.md](oauth-protected-resource/SKILL.md)
### `mcpServerCard`
```
Goal: Publish an MCP Server Card for agent discovery
Issue: {issue}
Fix: Serve an MCP Server Card (SEP-1649) at /.well-known/mcp/server-card.json with serverInfo (name, version), transport endpoint, and capabilities. The schema is being standardized at https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2127
Skill: https://isitagentready.com/.well-known/agent-skills/mcp-server-card/SKILL.md
Docs: https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2127
```
Sub-skill: [mcp-server-card/SKILL.md](mcp-server-card/SKILL.md)
### `agentSkills`
```
Goal: Publish an agent skills discovery index
Issue: {issue}
Fix: Publish a skills discovery index at /.well-known/agent-skills/index.json (per the Agent Skills Discovery RFC v0.2.0). Include a $schema field, and a skills array where each entry has name, type, description, url, and a sha256 digest.
Skill: https://isitagentready.com/.well-known/agent-skills/agent-skills/SKILL.md
Docs: https://github.com/cloudflare/agent-skills-discovery-rfc, https://agentskills.io/
```
Sub-skill: [agent-skills/SKILL.md](agent-skills/SKILL.md)
### `webMcp`
```
Goal: Support WebMCP to expose site tools to AI agents via the browser
Issue: {issue}
Fix: Implement the WebMCP API by calling navigator.modelContext.provideContext() with tool definitions that expose your site's key actions to AI agents. Each tool needs a name, description, inputSchema (JSON Schema), and an execute callback function.
Skill: https://isitagentready.com/.well-known/agent-skills/webmcp/SKILL.md
Docs: https://webmachinelearning.github.io/webmcp/, https://developer.chrome.com/blog/webmcp-epp
```
Sub-skill: [webmcp/SKILL.md](webmcp/SKILL.md)
### `x402`
```
Goal: Support x402 protocol for agent-native HTTP payments
Issue: {issue}
Fix: Add x402 payment middleware to your API routes to enable AI agents to pay for access via HTTP. Use @x402/express, @x402/hono, or @x402/next middleware with a facilitator URL and wallet address. Protected routes will return HTTP 402 with payment requirements that agents can fulfill automatically.
Skill: https://isitagentready.com/.well-known/agent-skills/x402/SKILL.md
Docs: https://x402.org, https://github.com/coinbase/x402, https://docs.x402.org
```
Sub-skill: [x402/SKILL.md](x402/SKILL.md)
### `ucp`
```
Goal: Enable content payments via Universal Commerce Protocol
Issue: {issue}
Fix: Serve /.well-known/ucp with protocol version, services, capabilities, and endpoints, and ensure spec URLs and schemas are reachable.
Skill: https://isitagentready.com/.well-known/agent-skills/ucp/SKILL.md
Docs: https://ucp.dev/specification/overview/
```
Sub-skill: [ucp/SKILL.md](ucp/SKILL.md)
### `acp`
```
Goal: Publish ACP discovery metadata so agents can discover your commerce API
Issue: {issue}
Fix: Serve /.well-known/acp.json at the origin root with protocol.name "acp", protocol.version, api_base_url, supported transports, and capabilities.services so agents can discover your ACP implementation without creating a checkout session first.
Skill: https://isitagentready.com/.well-known/agent-skills/acp/SKILL.md
Docs: https://agenticcommerce.dev, https://github.com/agentic-commerce-protocol/agentic-commerce-protocol/pull/137
```
Sub-skill: [acp/SKILL.md](acp/SKILL.md)
### `a2aAgentCard`
```
Goal: Publish an A2A Agent Card for agent-to-agent discovery
Issue: {issue}
Fix: Serve JSON at /.well-known/agent-card.json with name, version, description, supportedInterfaces (service URL and transport), capabilities, and skills (each with id, name, description). See the A2A Protocol Specification for the full schema.
Skill: https://isitagentready.com/.well-known/agent-skills/a2a-agent-card/SKILL.md
Docs: https://a2a-protocol.org/latest/specification/, https://a2a-protocol.org/latest/topics/agent-discovery/
```
Sub-skill: [a2a-agent-card/SKILL.md](a2a-agent-card/SKILL.md)
### `dnsAid`
```
Goal: Publish DNS for AI Discovery (DNS-AID) records for DNS-based agent discovery
Issue: {issue}
Fix: Publish SVCB or HTTPS records under your domain's _agents namespace (e.g. _a2a._agents.example.com or _index._agents.example.com). Use alpn and port SvcParamKeys with mandatory=alpn,port. Use numeric keyNNNNN names for experimental custom parameters until registered. Sign zones with DNSSEC.
Skill: https://isitagentready.com/.well-known/agent-skills/dns-aid/SKILL.md
Docs: https://datatracker.ietf.org/doc/draft-mozleywilliams-dnsop-dnsaid/, https://www.rfc-editor.org/info/rfc9460
```
Sub-skill: [dns-aid/SKILL.md](dns-aid/SKILL.md)
### `authMd`
```
Goal: Publish Auth.md agent registration discovery metadata
Issue: {issue}
Fix: Serve /auth.md from the site root as Markdown with an H1 heading containing "auth.md". Include OAuth Protected Resource Metadata at /.well-known/oauth-protected-resource and Authorization Server metadata. Add an agent_auth block with skill, register_uri, and registration methods. If OAuth is not available, keep /auth.md self-contained with audience, registration endpoints, and credential use.
Skill: https://isitagentready.com/.well-known/agent-skills/auth-md/SKILL.md
Docs: https://auth-md.com
```
Sub-skill: [auth-md/SKILL.md](auth-md/SKILL.md)
### `mpp`
```
Goal: Support MPP (Machine Payment Protocol) for agent-native HTTP payments
Issue: {issue}
Fix: Serve /openapi.json at the site root with HTTP 200. Include x-payment-info extensions on payable operations declaring intent (charge or session), method (tempo, stripe, lightning, card), and amount. Optionally include currency, description, and top-level x-service-info with categories.
Skill: https://isitagentready.com/.well-known/agent-skills/mpp/SKILL.md
Docs: https://mpp.dev, https://paymentauth.org/draft-payment-discovery-00.txt
```
Sub-skill: [mpp/SKILL.md](mpp/SKILL.md)
### `llmsTxt`
```
Goal: Publish an LLM-friendly overview at /llms.txt
Issue: {issue}
Fix: Serve /llms.txt as plain text (UTF-8) with HTTP 200. Start with an H1 title line, include a short summary paragraph, and link to the most important content sections for agents. Optionally link to /llms-full.txt for expanded content.
Skill: https://isitagentready.com/.well-known/agent-skills/llms-txt/SKILL.md
Docs: https://llmstxt.org/
```
Sub-skill: [llms-txt/SKILL.md](llms-txt/SKILL.md)
### `llmsFullTxt`
```
Goal: Publish expanded LLM content at /llms-full.txt
Issue: {issue}
Fix: Serve /llms-full.txt as plain text (UTF-8) with HTTP 200. Include structured, detailed content suitable for LLM ingestion covering key topics, APIs, and documentation. Link to it from your /llms.txt file.
Skill: https://isitagentready.com/.well-known/agent-skills/llms-full-txt/SKILL.md
Docs: https://llmstxt.org/
```
Sub-skill: [llms-full-txt/SKILL.md](llms-full-txt/SKILL.md)
### `ap2`
```
Goal: Declare AP2 support in your A2A Agent Card for agent payments
Issue: {issue}
Fix: Add AP2 extension to your A2A Agent Card at /.well-known/agent-card.json with your role (merchant, shopper, etc.) so agents can discover your payment capabilities.
Docs: https://ap2-protocol.org/
```

View File

@@ -0,0 +1,35 @@
---
name: agent-ready-a2a-agent-card
description: >
Sub-skill de agent-ready-cloudflare: Implement A2A Agent Card
---
# Implement A2A Agent Card
Publish an A2A Agent Card for agent-to-agent discovery per the
[A2A Protocol Specification](https://a2a-protocol.org/latest/specification/).
## Requirements
- Serve JSON at `/.well-known/agent-card.json` with HTTP 200
- Include `name`, `version`, and `description`
- Include `supportedInterfaces` with service URL and transport protocol
- List `capabilities` and `skills` (each with `id`, `name`, `description`)
See [Agent Discovery](https://a2a-protocol.org/latest/topics/agent-discovery/)
for the full schema.
## Cloudflare
[Agents SDK](https://developers.cloudflare.com/agents/) supports building
A2A-compatible agents on Workers.
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discovery.a2aAgentCard.status` is `"pass"`.

View File

@@ -0,0 +1,28 @@
---
name: agent-ready-acp
description: >
Sub-skill de agent-ready-cloudflare: Implement ACP Discovery Document
---
# Implement ACP Discovery Document
Publish an ACP discovery document so AI agents can discover your
[Agentic Commerce Protocol](https://agenticcommerce.dev) implementation.
## Requirements
- Serve JSON at `/.well-known/acp.json` with HTTP 200
- Include `protocol.name` set to `"acp"` and `protocol.version`
- Include `api_base_url` as an absolute HTTP(S) URL
- Include `transports` as a non-empty array of supported transport types
- Include `capabilities.services` as a non-empty array of offered services
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.commerce.acp.status` is `"pass"`.

View File

@@ -0,0 +1,31 @@
---
name: agent-ready-agent-skills
description: >
Sub-skill de agent-ready-cloudflare: Implement Agent Skills Discovery Index
---
# Implement Agent Skills Discovery Index
Publish a skills discovery document per the
[Agent Skills Discovery RFC](https://github.com/cloudflare/agent-skills-discovery-rfc) v0.2.0.
## Requirements
- Serve JSON at `/.well-known/agent-skills/index.json` with HTTP 200
- Include a `$schema` field set to `https://schemas.agentskills.io/discovery/0.2.0/schema.json`
- Include a `skills` array where each entry has:
- `name` — skill identifier (lowercase alphanumeric + hyphens)
- `type``"skill-md"` (single SKILL.md) or `"archive"` (bundled archive)
- `description` — brief description of what the skill does
- `url` — URL to the skill artifact (SKILL.md file or archive)
- `digest` — SHA-256 hash of the artifact (`sha256:{hex}`)
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discovery.agentSkills.status` is `"pass"`.

View File

@@ -0,0 +1,31 @@
---
name: agent-ready-ai-rules
description: >
Sub-skill de agent-ready-cloudflare: Implement AI Bot Rules in robots.txt
---
# Implement AI Bot Rules in robots.txt
Add explicit `User-agent` entries for AI crawlers in your robots.txt per
[RFC 9309](https://www.rfc-editor.org/rfc/rfc9309).
## Requirements
- Add `User-agent` blocks for AI-specific bots: `GPTBot`, `OAI-SearchBot`, `Claude-Web`, `Google-Extended`, `Amazonbot`, `anthropic-ai`, `Bytespider`, `CCBot`, `Applebot-Extended`
- Set `Allow` and/or `Disallow` rules matching your content policy
- A wildcard `User-agent: *` block alone is not sufficient — explicit AI bot entries are required
## Cloudflare
[AI Crawl Control](https://developers.cloudflare.com/ai-crawl-control/)
lets you manage AI bot rules from the dashboard without editing robots.txt manually.
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.botAccessControl.robotsTxtAiRules.status` is `"pass"`.

View File

@@ -0,0 +1,27 @@
---
name: agent-ready-api-catalog
description: >
Sub-skill de agent-ready-cloudflare: Implement API Catalog
---
# Implement API Catalog
Publish an API catalog for automated discovery per
[RFC 9727](https://www.rfc-editor.org/rfc/rfc9727).
## Requirements
- Serve `/.well-known/api-catalog` with `Content-Type: application/linkset+json` and HTTP 200
- Include a `linkset` array with entries for each API
- Each entry needs an `anchor` URL and link relations: `service-desc` (OpenAPI spec), `service-doc` (docs), and optionally `status` (health endpoint)
- See [RFC 9727 Appendix A](https://www.rfc-editor.org/rfc/rfc9727#appendix-A) for examples
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discovery.apiCatalog.status` is `"pass"`.

View File

@@ -0,0 +1,43 @@
---
name: agent-ready-auth-md
description: >
Sub-skill de agent-ready-cloudflare: Skill: Implement Auth.md Agent Registration Discovery
---
# Skill: Implement Auth.md Agent Registration Discovery
## What This Skill Does
Helps a service publish Auth.md support for agent registration. Use this when a scanner reports the `authMd` check is failing or when adding the Auth.md standard to an API or application.
## Requirements
- Serve `/auth.md` from the service root as Markdown with an H1 heading that contains `auth.md` (for example, `# auth.md` or `# Example auth.md`).
- Prefer publishing OAuth Protected Resource Metadata at `/.well-known/oauth-protected-resource` for the resource server.
- Include `resource`, `authorization_servers`, `scopes_supported`, and `bearer_methods_supported` with `header` in the PRM document.
- Publish OAuth Authorization Server metadata at each advertised authorization server's `/.well-known/oauth-authorization-server` URL.
- Include a valid `issuer` in Authorization Server metadata and ensure it matches the issuer advertised in PRM.
- Add an `agent_auth` block with `skill`, `register_uri`, and at least one complete registration method when Authorization Server metadata is available.
- If OAuth metadata is not available, keep `/auth.md` self-contained: identify the agent audience, document registration or provisioning endpoint(s), list supported method(s), and explain credential use.
## Flow Metadata
- **ID-JAG**: include `identity_types_supported: ["identity_assertion"]`, `identity_assertion.assertion_types_supported` with `urn:ietf:params:oauth:token-type:id-jag`, and credential types. Include `revocation_uri` and the revocation event in `events_supported` when supported.
- **Verified email**: include `identity_assertion.assertion_types_supported` with `verified_email`, credential types, and `claim_uri`.
- **Anonymous**: include `identity_types_supported: ["anonymous"]`, `anonymous.credential_types_supported`, and `claim_uri`.
## Validate
```http
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discovery.authMd.status` is `"pass"`.
## References
- [Auth.md Specification](https://auth-md.com)
- [RFC 9728 — OAuth Protected Resource Metadata](https://www.rfc-editor.org/rfc/rfc9728)
- [RFC 8414 — OAuth Authorization Server Metadata](https://www.rfc-editor.org/rfc/rfc8414)

View File

@@ -0,0 +1,32 @@
---
name: agent-ready-content-signals
description: >
Sub-skill de agent-ready-cloudflare: Implement Content Signals
---
# Implement Content Signals
Declare AI content usage preferences in your robots.txt using
[Content Signals](https://contentsignals.org/)
([IETF draft](https://datatracker.ietf.org/doc/draft-romm-aipref-contentsignals/)).
## Requirements
- Add `Content-Signal` directives to your robots.txt under the relevant `User-agent` block
- Declare preferences for `ai-train`, `search`, and `ai-input`
- Example: `Content-Signal: ai-train=no, search=yes, ai-input=no`
## Cloudflare
[AI Crawl Control](https://developers.cloudflare.com/ai-crawl-control/)
supports Content Signals configuration from the dashboard.
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.botAccessControl.contentSignals.status` is `"pass"`.

View File

@@ -0,0 +1,39 @@
---
name: agent-ready-dns-aid
description: >
Sub-skill de agent-ready-cloudflare: Implement DNS for AI Discovery (DNS-AID)
---
# Implement DNS for AI Discovery (DNS-AID)
Publish DNS for AI Discovery (DNS-AID) records so agents can discover your agent endpoints through DNS.
## Requirements
- Publish DNS for AI Discovery (DNS-AID) records under your domain's `_agents` namespace, such as `_index._agents.example.com` or `_a2a._agents.example.com`
- Use ServiceMode `SVCB` records, or `HTTPS` records for HTTPS endpoints, with `alpn` and endpoint connection parameters
- Use numeric `keyNNNNN` SvcParamKey names for experimental DNS for AI Discovery (DNS-AID) custom parameters until they are registered
- Sign public DNS for AI Discovery (DNS-AID) discovery zones with DNSSEC so validating resolvers return authenticated data
## Example
```dns
_a2a._agents.example.com. 3600 IN SVCB 1 agent.example.com. alpn="a2a" port=443 mandatory=alpn,port
```
## Validate
The scanner validates DNS for AI Discovery (DNS-AID) via DNS-over-HTTPS. By default, the scanner uses Cloudflare's `https://cloudflare-dns.com/dns-query` with automatic fallback to `https://dns.google/resolve` on resolver-level failures. Library callers can override the resolver with `ScanOptions.dohResolverUrl` (disables fallback).
```http
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discoverability.dnsAid.status` is `"pass"`.
## References
- [draft-mozleywilliams-dnsop-dnsaid](https://datatracker.ietf.org/doc/draft-mozleywilliams-dnsop-dnsaid/)
- [RFC 9460 — SVCB and HTTPS Resource Records](https://www.rfc-editor.org/info/rfc9460)

View File

@@ -0,0 +1,34 @@
---
name: agent-ready-link-headers
description: >
Sub-skill de agent-ready-cloudflare: Implement Link Response Headers
---
# Implement Link Response Headers
Add Link response headers to your homepage for agent discovery per
[RFC 8288](https://www.rfc-editor.org/rfc/rfc8288) and
[RFC 9727 Section 3](https://www.rfc-editor.org/rfc/rfc9727#section-3).
## Requirements
- Return `Link` headers on your homepage response pointing to machine-readable resources
- Use registered relation types: `api-catalog`, `service-desc`, `service-doc`, `describedby`
- Example: `Link: </.well-known/api-catalog>; rel="api-catalog"`
- Multiple Link headers or comma-separated values are both valid
## Cloudflare
Use [Transform Rules](https://developers.cloudflare.com/rules/transform/) or
[Workers](https://developers.cloudflare.com/workers/) to add Link headers
without modifying your origin server.
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discoverability.linkHeaders.status` is `"pass"`.

View File

@@ -0,0 +1,27 @@
---
name: agent-ready-llms-full-txt
description: >
Sub-skill de agent-ready-cloudflare: Implement llms-full.txt
---
# Implement llms-full.txt
Publish expanded LLM content per
[llmstxt.org](https://llmstxt.org/).
## Requirements
- Serve `/llms-full.txt` as plain text (UTF-8) with HTTP 200
- Include structured, detailed content suitable for LLM ingestion
- Cover the key topics, APIs, and documentation from your site
- Link to it from your `/llms.txt` file
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Confirm your deployed site serves `/llms-full.txt` exactly as intended.

View File

@@ -0,0 +1,28 @@
---
name: agent-ready-llms-txt
description: >
Sub-skill de agent-ready-cloudflare: Implement llms.txt
---
# Implement llms.txt
Publish an LLM-friendly overview of your site per
[llmstxt.org](https://llmstxt.org/).
## Requirements
- Serve `/llms.txt` as plain text (UTF-8) with HTTP 200
- Start with an H1 (`# Site Name`) title line
- Include a short summary paragraph describing your site
- Link to the most important content sections for agents
- Optionally link to `/llms-full.txt` for expanded content
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Confirm your deployed site serves `/llms.txt` exactly as intended.

View File

@@ -0,0 +1,34 @@
---
name: agent-ready-markdown-negotiation
description: >
Sub-skill de agent-ready-cloudflare: Implement Markdown Content Negotiation
---
# Implement Markdown Content Negotiation
Support `Accept: text/markdown` content negotiation so agents can request
markdown versions of your pages.
See [llmstxt.org](https://llmstxt.org/) and
[Markdown for Agents](https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/).
## Requirements
- When a request includes `Accept: text/markdown`, return a markdown representation of the page
- Set `Content-Type: text/markdown` on the response
- HTML remains the default for requests without the markdown accept header
- Include an `x-markdown-tokens` header with the token count if available
## Cloudflare
[Markdown for Agents](https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/)
enables this automatically for Cloudflare zones — no application code changes needed.
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.contentAccessibility.markdownNegotiation.status` is `"pass"`.

View File

@@ -0,0 +1,33 @@
---
name: agent-ready-mcp-server-card
description: >
Sub-skill de agent-ready-cloudflare: Implement MCP Server Card
---
# Implement MCP Server Card
Publish an MCP Server Card for agent discovery per
[SEP-1649](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2127).
## Requirements
- Serve JSON at `/.well-known/mcp/server-card.json` with HTTP 200
- Include `serverInfo` with `name` and `version`
- Include a transport `endpoint` URL (e.g., `/mcp` for Streamable HTTP)
- List `capabilities` (tools, resources, prompts) the server supports
## Cloudflare
[Agents SDK](https://developers.cloudflare.com/agents/) and
[Workers](https://developers.cloudflare.com/workers/) make it straightforward
to build and deploy MCP servers with server card support.
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discovery.mcpServerCard.status` is `"pass"`.

View File

@@ -0,0 +1,56 @@
---
name: agent-ready-mpp
description: >
Sub-skill de agent-ready-cloudflare: Implement MPP Payment Discovery
---
# Implement MPP Payment Discovery
Publish an OpenAPI document with MPP payment discovery metadata so AI agents
can discover your payable endpoints via the
[Machine Payment Protocol](https://mpp.dev)
([spec](https://paymentauth.org/draft-payment-discovery-00.txt)).
## Requirements
- Serve `/openapi.json` at the site root with HTTP 200
- Include `x-payment-info` extensions on payable operations
- Each `x-payment-info` must declare `intent` (charge or session), `method` (tempo, stripe, lightning, card), and `amount`
- Optionally include `currency`, `description`, and top-level `x-service-info` with categories
## Example
```json
{
"openapi": "3.1.0",
"info": { "title": "My API", "version": "1.0" },
"paths": {
"/api/generate": {
"post": {
"x-payment-info": {
"intent": "charge",
"method": "stripe",
"amount": "0.01",
"currency": "USD",
"description": "Generate content"
}
}
}
}
}
```
## Validate
```http
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.commerce.mpp.status` is `"pass"`.
## References
- [Machine Payment Protocol](https://mpp.dev)
- [Payment Discovery Spec](https://paymentauth.org/draft-payment-discovery-00.txt)

View File

@@ -0,0 +1,33 @@
---
name: agent-ready-oauth-discovery
description: >
Sub-skill de agent-ready-cloudflare: Implement OAuth/OIDC Discovery
---
# Implement OAuth/OIDC Discovery
Publish OAuth or OpenID Connect discovery metadata so agents can authenticate
with your APIs.
See [OpenID Connect Discovery](http://openid.net/specs/openid-connect-discovery-1_0.html)
and [RFC 8414](https://www.rfc-editor.org/rfc/rfc8414).
## Requirements
- Serve JSON at `/.well-known/openid-configuration` (OIDC) or `/.well-known/oauth-authorization-server` (OAuth 2.0)
- Include `issuer`, `authorization_endpoint`, `token_endpoint`, `jwks_uri`
- List `grant_types_supported` and `response_types_supported`
## Cloudflare
[Cloudflare Access](https://developers.cloudflare.com/cloudflare-one/identity/)
can serve as an identity provider, or use Workers to proxy discovery metadata.
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discovery.oauthDiscovery.status` is `"pass"`.

View File

@@ -0,0 +1,34 @@
---
name: agent-ready-oauth-protected-resource
description: >
Sub-skill de agent-ready-cloudflare: Implement OAuth Protected Resource Metadata
---
# Implement OAuth Protected Resource Metadata
Publish OAuth Protected Resource Metadata so agents can discover how to
authenticate per [RFC 9728](https://www.rfc-editor.org/rfc/rfc9728).
## Requirements
- Serve JSON at `/.well-known/oauth-protected-resource` with HTTP 200
- Include `resource` (your resource identifier URL)
- Include `authorization_servers` (array of OAuth/OIDC issuer URLs)
- Optionally include `scopes_supported`
- Optionally return `WWW-Authenticate` with `resource_metadata` on 401 responses
## Cloudflare
Use [Workers](https://developers.cloudflare.com/workers/) to serve the
metadata endpoint and [Access](https://developers.cloudflare.com/cloudflare-one/)
as the authorization server.
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discovery.oauthProtectedResource.status` is `"pass"`.

View File

@@ -0,0 +1,31 @@
---
name: agent-ready-robots-txt
description: >
Sub-skill de agent-ready-cloudflare: Implement robots.txt
---
# Implement robots.txt
Publish a valid robots.txt at your site root per
[RFC 9309](https://www.rfc-editor.org/rfc/rfc9309).
## Requirements
- Serve `/robots.txt` as `text/plain` with HTTP 200
- Include `User-agent` directives with `Allow`/`Disallow` rules
- Reference your sitemap if one exists: `Sitemap: https://example.com/sitemap.xml`
## Cloudflare
[AI Crawl Control](https://developers.cloudflare.com/ai-crawl-control/)
can manage your robots.txt from the dashboard, including AI-specific bot rules.
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discoverability.robotsTxt.status` is `"pass"`.

View File

@@ -0,0 +1,73 @@
---
name: agent-ready-scan-site
description: >
Sub-skill de agent-ready-cloudflare: Skill: Scan Site for Agent Readiness
---
# Skill: Scan Site for Agent Readiness
## What This Skill Does
Scans any website URL and checks whether it implements the standards and protocols that make it accessible to AI agents. Checks 18 standards across 5 categories: discoverability, content accessibility, bot access control, API/auth/MCP discovery, and commerce. Returns a readiness level (0-5), the status of all 18 checks, and fix instructions for any failing checks.
## When to Use It
- Checking whether a site supports agent protocols (MCP, robots.txt, Link headers, etc.)
- Debugging why a site is missing specific agent-readiness checks
- Getting actionable fix instructions to improve a site's agent readiness
- Comparing agent readiness across multiple sites
## How to Call It
Send a POST request to the scan API:
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://example.com", "format": "agent"}
```
### Parameters
- `url` (required): The URL to scan. Must be a valid HTTP or HTTPS URL.
- `format` (optional): Set to `"agent"` for a markdown response with fix instructions, or `"json"` (default) for structured data.
### Using the MCP Server
Alternatively, connect to the MCP server at:
```
https://isitagentready.com/mcp
```
Call the `scan_site` tool with a `url` parameter.
## How to Interpret Results
### JSON Format
The response includes:
- `level`: Integer 0-5 indicating overall readiness
- `levelName`: Human-readable level name (e.g., "Agent-Readable")
- `checks`: Object with 5 categories, each containing individual check results
- `nextLevel`: What's needed to reach the next level
- Each check has `status` ("pass", "fail", or "unableToCheck") and a `message`
### Agent Format
Returns a markdown document listing:
- The site's current score (e.g., "3/5 Agent-Readable")
- All failing checks with descriptions and fix instructions
- If all checks pass, a confirmation message
### Level Scale
| Level | Name | Key Requirements |
|-------|------|-----------------|
| 0 | Not Ready | Fewer than 2 of: robots.txt, sitemap, Link headers |
| 1 | Basic Web Presence | 2 of 3: robots.txt, sitemap, Link headers |
| 2 | Bot-Aware | Level 1 + both: AI bot rules in robots.txt, Content Signals |
| 3 | Agent-Readable | Level 2 + markdown content negotiation |
| 4 | Agent-Integrated | Level 3 + 1 of 4: MCP Server Card, agent skills, API catalog, WebMCP |
| 5 | Agent-Native | Level 4 + 2 of 4: Web Bot Auth, all integrations, commerce (UCP/x402), auth metadata |

View File

@@ -0,0 +1,27 @@
---
name: agent-ready-sitemap
description: >
Sub-skill de agent-ready-cloudflare: Implement sitemap.xml
---
# Implement sitemap.xml
Publish an XML sitemap at your site root per the
[Sitemaps protocol](https://www.sitemaps.org/protocol.html).
## Requirements
- Serve `/sitemap.xml` as valid XML with HTTP 200
- List canonical `<url><loc>` entries for your public pages
- Keep it updated when content is published or removed
- Reference it from robots.txt: `Sitemap: https://example.com/sitemap.xml`
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discoverability.sitemap.status` is `"pass"`.

View File

@@ -0,0 +1,26 @@
---
name: agent-ready-ucp
description: >
Sub-skill de agent-ready-cloudflare: Implement Universal Commerce Protocol (UCP)
---
# Implement Universal Commerce Protocol (UCP)
Enable content payments via the Universal Commerce Protocol per the
[UCP Specification](https://ucp.dev/specification/overview/).
## Requirements
- Serve JSON at `/.well-known/ucp` with HTTP 200
- Include `protocol_version`, `services`, `capabilities`, and `endpoints`
- Ensure referenced spec URLs and schemas are reachable
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.commerce.ucp.status` is `"pass"`.

View File

@@ -0,0 +1,32 @@
---
name: agent-ready-web-bot-auth
description: >
Sub-skill de agent-ready-cloudflare: Implement Web Bot Auth
---
# Implement Web Bot Auth
Use Web Bot Auth so your site can identify itself when it sends bot or agent requests, per the
[IETF WebBotAuth WG](https://datatracker.ietf.org/wg/webbotauth/about/).
## Requirements
- Publish a JWKS (JSON Web Key Set) at `/.well-known/http-message-signatures-directory`
- The JWKS must contain at least one public key for signature verification
- Sign requests sent by your bot or agent so receiving sites can verify them
- Include `Signature-Agent` and `Signature-Input` headers on those signed requests
## Cloudflare
[Web Bot Auth on Cloudflare](https://developers.cloudflare.com/bots/reference/bot-verification/web-bot-auth/)
provides built-in support for verifying bot request signatures.
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.botAccessControl.webBotAuth.status` is `"pass"`.

View File

@@ -0,0 +1,29 @@
---
name: agent-ready-webmcp
description: >
Sub-skill de agent-ready-cloudflare: Implement WebMCP
---
# Implement WebMCP
Expose site tools to AI agents via the browser using the
[WebMCP API](https://webmachinelearning.github.io/webmcp/)
([Chrome blog](https://developer.chrome.com/blog/webmcp-epp)).
## Requirements
- Call `navigator.modelContext.registerTool()` for each tool you want to expose
- Each tool needs `name`, `description`, `inputSchema` (JSON Schema), and an `execute` callback
- Tools should expose your site's key actions (search, navigation, data retrieval)
- Use an `AbortController` signal to unregister tools when no longer needed
- The API is detected via browser rendering — ensure the script runs on page load
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.discovery.webMcp.status` is `"pass"`.

View File

@@ -0,0 +1,28 @@
---
name: agent-ready-x402
description: >
Sub-skill de agent-ready-cloudflare: Implement x402 Payment Protocol
---
# Implement x402 Payment Protocol
Support agent-native HTTP payments via the
[x402 protocol](https://x402.org)
([docs](https://docs.x402.org), [GitHub](https://github.com/coinbase/x402)).
## Requirements
- Add x402 payment middleware to your API routes
- Use `@x402/express`, `@x402/hono`, or `@x402/next` middleware
- Configure a facilitator URL and wallet address
- Protected routes return HTTP 402 with payment requirements that agents fulfill automatically
## Validate
```
POST https://isitagentready.com/api/scan
Content-Type: application/json
{"url": "https://YOUR-SITE.com"}
```
Check that `checks.commerce.x402.status` is `"pass"`.