This MCP server enables agents to query documents from a specified website. You submit a URL, and AgentReady crawls the site, generates a spec-compliant llms.txt, and hosts a live /ask RAG endpoint exposed via an MCP server. Responses are returned as cited answers.
π οΈ Key Features
Submit a URL to target any docs site
Crawls the site and generates a spec-compliant llms.txt
Provides a live /ask RAG endpoint via MCP
Returns cited answers
π Use Cases
Ask questions against content from a given docs website
Retrieve cited information from crawled documentation
β‘ Developer Benefits
MCP-compatible access to a docs siteβs content
Uses llms.txt and a RAG /ask endpoint for question answering
Supports any MCP-compatible agent client
β οΈ Limitations
Requires providing a URL to crawl and query; scope is the target site only
Capability depends on the hosted AgentReady layer described in the excerpt
Captured live from the server via tools/list.
list_sites
List all websites currently indexed in AgentReady. Use this to check if a domain is already available before submitting it β indexed sites return instant cited answers via ask_site. The index covers developer tools, APIs, cloud platforms, frameworks, databases, and more, and grows as new sites are submitted.
Return the AgentReady capability manifest for a website. If the site is not indexed yet, AgentReady indexes it automatically before returning its freshness, read-only limits, schemas, and available MCP and HTTP endpoints.
Parameters1
domain
string
required
Domain of the indexed site (e.g. "docs.example.com"). Accepts full URLs too.
Raw schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "Domain of the indexed site (e.g. \"docs.example.com\"). Accepts full URLs too."
}
},
"required": [
"domain"
]
}
plan_site_action
Turn a natural-language request into a grounded, read-only AgentReady plan for a website. If the site is not indexed yet, AgentReady indexes it automatically first. This prototype never executes side effects; it identifies supported steps, sources, risks, and whether a future execution would require confirmation.
Parameters2
domain
string
required
Domain of the indexed site (e.g. "docs.example.com"). Accepts full URLs too.
request
string
required
Natural-language request to plan against the site.
Raw schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "Domain of the indexed site (e.g. \"docs.example.com\"). Accepts full URLs too."
},
"request": {
"type": "string",
"maxLength": 1000,
"description": "Natural-language request to plan against the site."
}
},
"required": [
"domain",
"request"
]
}
submit_site
Index any website so it can be queried with ask_site. Use this when the site is not yet in list_sites. Handles JS-rendered pages (React, Next.js, Vue SPAs) that web_fetch cannot read β uses a four-layer pipeline: llms.txt β HTTP+cheerio β __NEXT_DATA__ extraction β Jina Reader headless browser. Takes ~60 seconds. Once indexed, ask_site queries are instant.
Parameters1
url
string
required
Full URL of the site to index (e.g. "https://docs.example.com").
Raw schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "Full URL of the site to index (e.g. \"https://docs.example.com\")."
}
},
"required": [
"url"
]
}
ask_site
Query any website's documentation and get cited, multi-page answers in natural language. Use ask_site when you need: (1) answers that synthesize information across multiple pages of a site, (2) documentation from JS-rendered sites (React, Next.js, Vue SPAs) where web_fetch returns empty or partial HTML, (3) citations linking back to the exact source pages, (4) faster results than fetching and reading individual pages one by one. For sites not yet indexed, ask_site auto-crawls and answers in ~60s β no separate submit_site call needed.
Parameters3
domain
string
required
Domain of the site to query (e.g. "stripe.com"). Accepts full URLs too.
query
string
required
The question to ask about the site.
url
string
optional
Optional: a specific page URL to focus on. AgentReady will ensure this page is indexed before answering.
Raw schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "Domain of the site to query (e.g. \"stripe.com\"). Accepts full URLs too."
},
"query": {
"type": "string",
"maxLength": 2000,
"description": "The question to ask about the site."
},
"url": {
"type": "string",
"maxLength": 2048,
"description": "Optional: a specific page URL to focus on. AgentReady will ensure this page is indexed before answering."
}
},
"required": [
"domain",
"query"
]
}
refresh_site
Force a full re-crawl of a site to pick up new or changed content. If the site has never been indexed, AgentReady performs the initial indexing automatically. Use when ask_site returns outdated information or when you know the site has recently been updated. Takes ~60 seconds. After completion, ask_site returns fresh content.
Parameters1
domain
string
required
Domain of the site to refresh (e.g. "docs.example.com").
Raw schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain of the site to refresh (e.g. \"docs.example.com\")."
}
},
"required": [
"domain"
]
}
rate_answer
Rate the quality of a previous ask_site answer from 1 (not useful) to 5 (excellent). Pass the request_id returned in structuredContent when available so the rating can be tied to the exact answer.
Parameters4
domain
string
required
Domain that was queried.
rating
integer
required
Answer quality from 1 to 5.
request_id
string
optional
request_id returned by ask_site, when available.
comment
string
optional
Optional short explanation.
Raw schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "Domain that was queried."
},
"rating": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"description": "Answer quality from 1 to 5."
},
"request_id": {
"type": "string",
"maxLength": 64,
"description": "request_id returned by ask_site, when available."
},
"comment": {
"type": "string",
"maxLength": 1000,
"description": "Optional short explanation."
}
},
"required": [
"domain",
"rating"
]
}
AgentReady is a hosted capability layer that makes any website discoverable and usable by agents through MCP.
Paste a URL β AgentReady crawls the site, generates a spec-compliant llms.txt, and hosts a live /ask RAG endpoint and MCP server. Any MCP-compatible agent client can then discover the site, ask natural-language questions, inspect capabilities, and create grounded read-only plans with citations.
The problem it solves: AI agents using web_fetch fetch one page at a time, get empty HTML from JavaScript SPAs (React, Next.js, Vue), and hallucinate when the answer spans multiple pages. AgentReady indexes the whole site, handles JS rendering, and retrieves across pages β so agents get the right answer instead of a confident wrong one.
What's already indexed: Browse the live AgentReady directory β or index any public site yourself.
Key properties:
Works on any public URL β static sites, React/Next.js SPAs, Docusaurus, GitBook, custom engines
No account required to index your first site
Shared index β one team member submits a site, everyone on the team can query it instantly
Handles JS-rendered pages that web_fetch returns empty for
Capability manifests expose freshness, schemas, endpoints, and read-only limits
Grounded plans return evidence, risks, confirmation requirements, and durable receipts
CLI
The same package doubles as a CLI β no install, no account:
bash
# Agent-readiness report card (llms.txt, sitemap, robots, JS-rendering, index status)
npx @agentreadyweb/mcp grade yourdocs.com
# Ask any site a question, get a cited answer (auto-indexes new sites in ~60s)
npx @agentreadyweb/mcp ask stripe.com "what is the test card number?"# Index or re-crawl a site
npx @agentreadyweb/mcp index yourdocs.com
npx @agentreadyweb/mcp refresh yourdocs.com
For CI, dashboards, or scripts, add --json to receive the raw report on
stdout (progress remains on stderr):
If your docs site uses Sphinx, auto-index on every build:
bash
pip install sphinx-agentready
python
# conf.py
extensions = [
"sphinx_agentready.extension",
]
# Domain is inferred from html_baseurl automatically, or set explicitly:
agentready_domain = "docs.yoursite.com"
Available tools
list_sites
Lists all websites currently indexed by AgentReady with their titles and page counts. Use this to check if a domain is already available before submitting it.
get_site_capabilities
code
get_site_capabilities(domain: string)
Returns the site's capability manifest, freshness state, schemas, and available HTTP/MCP endpoints.
get_site_facts
code
get_site_facts(domain: string)
Returns key structured facts extracted from a site β pricing tiers, feature lists, limits, and other high-signal data points that agents frequently need.
plan_site_action
code
plan_site_action(domain: string, request: string)
Creates a grounded, read-only plan with evidence, risks, confirmation requirements, and a durable receipt. It does not execute side effects.
submit_site
code
submit_site(url: string)
Index any website with AgentReady. Takes ~60 seconds. Handles static sites, server-rendered pages, and JavaScript-heavy SPAs via a four-layer pipeline. Once done, query it with ask_site.
Ask a question about any website and get a cited answer grounded in its content. Synthesises information across multiple pages. If the site isn't indexed yet, AgentReady crawls and indexes it automatically before answering (~60s).
Example:ask_site("stripe.com", "What are the fees for card payments?")
refresh_site
code
refresh_site(domain: string)
Force a full re-crawl of a site to pick up new or changed content. If the site is new, AgentReady performs its initial index automatically. Takes ~60 seconds.
AgentReady uses a layered approach to handle any public website:
llms.txt / llms-full.txt β if the site publishes one, it's used as a high-quality structured content source
Standard HTML crawl β fetches up to 10 pages via sitemap or link crawling, extracts clean text
__NEXT_DATA__ extraction β for Next.js apps, parses server-side rendered data embedded in the HTML
Jina Reader fallback β for JS-only SPAs that return empty HTML, uses a remote rendering service to extract content
Sites behind authentication or with no public HTML content cannot be indexed.
Environment variables
Variable
Default
Description
AGENTREADY_MCP_URL
https://www.agentready.it.com/api/mcp
Override the MCP endpoint (for self-hosted)
AGENTREADY_TELEMETRY
1
Set to 0 to disable anonymous usage telemetry
Telemetry
This package sends a lightweight anonymous ping to agentready.it.com/api/telemetry each time the MCP bridge starts or a CLI command runs. It contains: a random install ID (stored in ~/.agentready/install-id), package version, Node version, platform, and which mode/command was used. No query content, no domain names, no personal data. Set AGENTREADY_TELEMETRY=0 to opt out.