is-it-agent-ready

is-it-agent-ready

Provides agent-readiness audits of public websites via Cloudflare's scanner, enabling users to run scans, save reports, and enforce safety boundaries from natural language.

Category
Visit Server

README

Is It Agent Ready

Is It Agent Ready is a cross-harness skill for developers and site owners who want an evidence-based audit of a public website's readiness for AI agents. It wraps Cloudflare's public Agent Readiness Scanner behind a local safety gateway and works with Codex, Claude Code, and OpenCode.

Unofficial integration: this package is not authored, sponsored, or endorsed by Cloudflare. Cloudflare controls isitagentready.com, its scanner behavior, recommendations, policies, and availability.

The package exposes scan_site for non-persistent audits and scan_site_and_save for explicitly retained reports. Both select a content, API/application, full, or named-check scan; preserve the scanner's evidence; and refuse local, private, internal, metadata, or credential-bearing targets before the remote call.

Requirements

  • Node.js 22, 24, or 26. CI covers every currently supported runtime line; Node.js 20 is intentionally excluded because it is end-of-life.
  • Network access to https://isitagentready.com/mcp only when a scan is requested.
  • No API key, OAuth flow, or other scanner credential.

Download or clone this repository, then use the install path for your harness.

Codex

Add the repository as a local marketplace:

codex plugin marketplace add <absolute-path-to-this-repository>

Open Codex, run /plugins, choose the is-it-agent-ready marketplace, install the plugin, and start a new task. The Codex manifest is plugins/is-it-agent-ready/.codex-plugin/plugin.json; its embedded MCP server entry launches the bundled safety gateway.

Claude Code

In Claude Code, add the marketplace, install the plugin, and reload it:

/plugin marketplace add <absolute-path-to-this-repository>
/plugin install is-it-agent-ready@is-it-agent-ready
/reload-plugins

Invoke it explicitly as /is-it-agent-ready:is-it-agent-ready, or ask Claude to audit a public site and let the skill description trigger it.

OpenCode

Run the dependency-free installer from the repository root:

node ./scripts/install-opencode.mjs

The installer copies the skill and gateway into the current stable OpenCode config directory, updates opencode.json without replacing unrelated settings, and retains a timestamped backup of an existing config. Start a new opencode session and invoke the is-it-agent-ready skill, or ask for an agent-readiness scan.

OpenCode's separate V2 preview uses an incompatible MCP config shape. Install that variant without editing JSON by running node ./scripts/install-opencode.mjs --v2; opencode.v2.json records the checkout-local V2 shape.

Example

Request:

Scan https://example.com for agent readiness using the content profile.

Observed scanner output on 2026-08-04 (excerpt; the upstream result can change as the site or scanner changes):

# Agent Readiness: https://example.com

**Level 0/5 -- Not Ready**

## Discoverability (0/4 passing)
- FAIL robotsTxt -- Publish /robots.txt with clear crawl rules
  robots.txt not found
- FAIL sitemap -- Publish a sitemap and reference it from robots.txt
  sitemap.xml not found

## Content Accessibility (0/1 passing)
- FAIL markdownNegotiation -- Support Accept: text/markdown content negotiation for machine-readable content
  Site does not support Markdown for Agents

Public report route: isitagentready.com/example.com

Saving scans

Ask the agent to save or retain the scan to use scan_site_and_save. Ordinary scan_site calls never create local files.

Every successful save is committed atomically as one directory containing:

  • scan.json: the complete returned MCP result plus the validated request, scan ID, and save timestamp.
  • report.md: the readable text report with the same scan ID, target, timestamp, and scan scope.
  • report.html: a self-contained, dependency-free viewer with the score, categories, status, and failure evidence in the compact report layout.

The tool returns both absolute paths. Default storage locations are:

  • Windows: %LOCALAPPDATA%\is-it-agent-ready\scans\<scan-id>
  • macOS: ~/Library/Application Support/is-it-agent-ready/scans/<scan-id>
  • Linux: ${XDG_STATE_HOME:-~/.local/state}/is-it-agent-ready/scans/<scan-id>

Set IS_IT_AGENT_READY_SCAN_DIR to an absolute path before starting the harness to use another controlled location. Saving never accepts an arbitrary output path from a tool call, so scanned content cannot redirect writes elsewhere.

The viewer displays a transparent 100-point applicable-check pass rate: passing applicable checks divided by all applicable checks, rounded to the nearest whole number. Excluded checks do not count. This viewer score is not Cloudflare's 1–5 maturity level and is never calculated for a partial or internally inconsistent result. The HTML uses only embedded CSS, makes no network requests, runs no JavaScript, and keeps color limited to pass, fail, warning, and excluded status text.

Example saved report showing a 43 out of 100 applicable-check pass rate, compact check rows, status colors, and failure evidence

Representative saved-report output from the observed diamondedgetrading.com content-profile scan on 2026-08-04. The site and upstream scanner can change, so future results may differ.

Safety boundaries

Scanning sends the approved target URL to Cloudflare and causes Cloudflare to request that public site. The local gateway validates before any scanner request:

  • Only absolute http and https URLs are accepted.
  • URLs with usernames, passwords, query strings, or fragments are rejected.
  • Localhost, loopback, link-local, private, shared, multicast, reserved, documentation, .local, .internal, .localhost, .lan, intranet, and known cloud-metadata targets are rejected.
  • Hostnames are resolved first; any non-public IPv4 or IPv6 answer blocks the scan.
  • Invalid profile and enabledChecks values are rejected locally.
  • Timeout, rate-limit, malformed, partial, and upstream-error results never receive a fabricated score.

An ordinary scan is read-only with respect to your repository and local storage. An explicitly saved scan writes only to the application-data scan store described above. DNS, credentials, authentication, payments, deployment, production changes, and externally visible remediation require separate approval.

Limitations

  • Agent-readiness scores are directional diagnostics, not security assurance, compliance evidence, or production certification.
  • Several checks cover emerging or draft standards. Implement only capabilities that the product genuinely supports.
  • The upstream scanner currently negotiates MCP 2025-06-18 without a protocol session. The package also documents the released 2025-11-25 transport and the incompatible 2026-07-28 draft; it does not pretend the live service has adopted the draft.
  • DNS can change between local validation and Cloudflare's request. The gateway blocks every address it observes, but no client-side check can eliminate that external time-of-check/time-of-use gap.
  • Service availability, rate limits, scoring, check definitions, and public report content remain upstream-controlled.
  • Saved reports contain public scanner evidence and are generated artifacts. Do not commit or publish them unless intentionally promoted.
  • OpenCode's V2 plugin/config APIs are still evolving. The default install targets stable mcp.<name>; the explicit --v2 install targets preview skills and mcp.servers.

Development and verification

All required offline checks use only built-in Node.js modules:

npm run validate
npm test
npm run smoke:offline

The live contract and fixture check is separate:

npm run test:live

Network downtime and rate limits produce a CI warning; a successful handshake with a changed tool schema or malformed fixture response fails the live job. See the compatibility matrix for platform-specific formats and source links.

License

MIT. See LICENSE.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured