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:
338
.github/skills/agent-ready-cloudflare/README.md
vendored
Normal file
338
.github/skills/agent-ready-cloudflare/README.md
vendored
Normal 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 (0–5)
|
||||
- **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 |
|
||||
783
.github/skills/agent-ready-cloudflare/SKILL.md
vendored
Normal file
783
.github/skills/agent-ready-cloudflare/SKILL.md
vendored
Normal 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/
|
||||
```
|
||||
35
.github/skills/agent-ready-cloudflare/a2a-agent-card/SKILL.md
vendored
Normal file
35
.github/skills/agent-ready-cloudflare/a2a-agent-card/SKILL.md
vendored
Normal 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"`.
|
||||
28
.github/skills/agent-ready-cloudflare/acp/SKILL.md
vendored
Normal file
28
.github/skills/agent-ready-cloudflare/acp/SKILL.md
vendored
Normal 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"`.
|
||||
31
.github/skills/agent-ready-cloudflare/agent-skills/SKILL.md
vendored
Normal file
31
.github/skills/agent-ready-cloudflare/agent-skills/SKILL.md
vendored
Normal 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"`.
|
||||
31
.github/skills/agent-ready-cloudflare/ai-rules/SKILL.md
vendored
Normal file
31
.github/skills/agent-ready-cloudflare/ai-rules/SKILL.md
vendored
Normal 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"`.
|
||||
27
.github/skills/agent-ready-cloudflare/api-catalog/SKILL.md
vendored
Normal file
27
.github/skills/agent-ready-cloudflare/api-catalog/SKILL.md
vendored
Normal 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"`.
|
||||
43
.github/skills/agent-ready-cloudflare/auth-md/SKILL.md
vendored
Normal file
43
.github/skills/agent-ready-cloudflare/auth-md/SKILL.md
vendored
Normal 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)
|
||||
32
.github/skills/agent-ready-cloudflare/content-signals/SKILL.md
vendored
Normal file
32
.github/skills/agent-ready-cloudflare/content-signals/SKILL.md
vendored
Normal 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"`.
|
||||
39
.github/skills/agent-ready-cloudflare/dns-aid/SKILL.md
vendored
Normal file
39
.github/skills/agent-ready-cloudflare/dns-aid/SKILL.md
vendored
Normal 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)
|
||||
34
.github/skills/agent-ready-cloudflare/link-headers/SKILL.md
vendored
Normal file
34
.github/skills/agent-ready-cloudflare/link-headers/SKILL.md
vendored
Normal 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"`.
|
||||
27
.github/skills/agent-ready-cloudflare/llms-full-txt/SKILL.md
vendored
Normal file
27
.github/skills/agent-ready-cloudflare/llms-full-txt/SKILL.md
vendored
Normal 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.
|
||||
28
.github/skills/agent-ready-cloudflare/llms-txt/SKILL.md
vendored
Normal file
28
.github/skills/agent-ready-cloudflare/llms-txt/SKILL.md
vendored
Normal 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.
|
||||
34
.github/skills/agent-ready-cloudflare/markdown-negotiation/SKILL.md
vendored
Normal file
34
.github/skills/agent-ready-cloudflare/markdown-negotiation/SKILL.md
vendored
Normal 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"`.
|
||||
33
.github/skills/agent-ready-cloudflare/mcp-server-card/SKILL.md
vendored
Normal file
33
.github/skills/agent-ready-cloudflare/mcp-server-card/SKILL.md
vendored
Normal 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"`.
|
||||
56
.github/skills/agent-ready-cloudflare/mpp/SKILL.md
vendored
Normal file
56
.github/skills/agent-ready-cloudflare/mpp/SKILL.md
vendored
Normal 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)
|
||||
33
.github/skills/agent-ready-cloudflare/oauth-discovery/SKILL.md
vendored
Normal file
33
.github/skills/agent-ready-cloudflare/oauth-discovery/SKILL.md
vendored
Normal 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"`.
|
||||
34
.github/skills/agent-ready-cloudflare/oauth-protected-resource/SKILL.md
vendored
Normal file
34
.github/skills/agent-ready-cloudflare/oauth-protected-resource/SKILL.md
vendored
Normal 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"`.
|
||||
31
.github/skills/agent-ready-cloudflare/robots-txt/SKILL.md
vendored
Normal file
31
.github/skills/agent-ready-cloudflare/robots-txt/SKILL.md
vendored
Normal 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"`.
|
||||
73
.github/skills/agent-ready-cloudflare/scan-site/SKILL.md
vendored
Normal file
73
.github/skills/agent-ready-cloudflare/scan-site/SKILL.md
vendored
Normal 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 |
|
||||
27
.github/skills/agent-ready-cloudflare/sitemap/SKILL.md
vendored
Normal file
27
.github/skills/agent-ready-cloudflare/sitemap/SKILL.md
vendored
Normal 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"`.
|
||||
26
.github/skills/agent-ready-cloudflare/ucp/SKILL.md
vendored
Normal file
26
.github/skills/agent-ready-cloudflare/ucp/SKILL.md
vendored
Normal 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"`.
|
||||
32
.github/skills/agent-ready-cloudflare/web-bot-auth/SKILL.md
vendored
Normal file
32
.github/skills/agent-ready-cloudflare/web-bot-auth/SKILL.md
vendored
Normal 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"`.
|
||||
29
.github/skills/agent-ready-cloudflare/webmcp/SKILL.md
vendored
Normal file
29
.github/skills/agent-ready-cloudflare/webmcp/SKILL.md
vendored
Normal 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"`.
|
||||
28
.github/skills/agent-ready-cloudflare/x402/SKILL.md
vendored
Normal file
28
.github/skills/agent-ready-cloudflare/x402/SKILL.md
vendored
Normal 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"`.
|
||||
Reference in New Issue
Block a user