MCP connector documentation
The free AlchemyAgent connector runs SEO and AI search checks on public websites from Claude, ChatGPT, Grok and any MCP client. It is read-only and needs no account.
Server URL: https://mcp.alchemyagent.ai/mcp (Streamable HTTP, stateless, no authentication)
Operator: AlchemyLeads, on Cloudflare Workers. Support: support@alchemyagent.ai
Output: every tool returns Markdown text written for the assistant to read and summarize. Failures come back as a normal tool result flagged isError, with a message that says what to do next.
pagespeed_check cwv_trend security_headers ai_crawler_check schema_check gsc_query_classifier ai_render_check agent_readiness entity_check wikipedia_presence authority_check data_connections
The 12 tools
pagespeed_check
PageSpeed and Core Web Vitals. Runs Google PageSpeed Insights on one public URL.
Inputs: url (required) Public page URL or domain, e.g. example.com; strategy mobile (default), desktop or both
Returns: Real-user Core Web Vitals (LCP, INP, CLS) from the Chrome UX Report with a pass or fail rating, the Lighthouse performance score, lab metrics and the biggest speed opportunities with estimated savings.
Data sent to: Google (PageSpeed Insights API). Google loads the page you name.
cwv_trend
Core Web Vitals trend. Shows how real-user Core Web Vitals changed over the last 40 weeks or so.
Inputs: url (required) Domain for the whole site, or a deeper URL for one page; device phone (default), desktop or all
Returns: Weekly LCP, INP, CLS, FCP and TTFB at the 75th percentile, first vs latest week and the direction of change. Falls back to the whole origin when a page has too little traffic.
Data sent to: Google (Chrome UX Report History API).
security_headers
Security headers. Grades a site's security headers.
Inputs: url (required) Public URL or domain
Returns: The Mozilla HTTP Observatory grade and score, and each missing or weak header (HSTS, Content-Security-Policy, X-Content-Type-Options, frame protection, Referrer-Policy, Permissions-Policy) with what to set, plus HTTPS and cookie flags.
Data sent to: Mozilla (HTTP Observatory API). Only the hostname is sent; Mozilla scans the site.
ai_crawler_check
AI crawler access. Checks whether AI and search crawlers can reach a page.
Inputs: url (required) Public page URL or domain
Returns: robots.txt rules per bot (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot, Googlebot, Google-Extended, Bingbot, CCBot and more), noindex and X-Robots-Tag directives, a user-agent probe for firewall or CDN blocks, sitemap and llms.txt presence, and AI usage preferences (Content-Signal, Content-Usage, TDMRep, noai).
Data sent to: No third party. AlchemyAgent's servers fetch the page and robots.txt directly.
schema_check
Structured data. Checks a page's JSON-LD against Google's rich-result requirements.
Inputs: url (required) Public page URL
Returns: Each schema type found, invalid JSON, missing required and recommended properties, relative URLs, non-ISO dates, dangling @id references, duplicate entities and self-serving reviews, with the fix for each.
Data sent to: No third party. AlchemyAgent's servers fetch the page directly.
gsc_query_classifier
AI-assistant queries in Search Console. Finds AI-assistant traffic in a Google Search Console queries export.
Inputs: csv_text (required) The contents of Queries.csv (Search Console > Performance > Export > CSV)
Returns: Query and impression counts per bucket (conversational prompts, follow-up pivots, AI-visibility tracker probes, agent prompts, pasted strings, chat reply artefacts), example queries for each, and candidates the rules can't classify on their own.
Data sent to: No third party. See How the Search Console CSV is processed below.
ai_render_check
What AI crawlers see. Shows what crawlers that don't run JavaScript see in a page's raw HTML.
Inputs: url (required) Public page URL
Returns: Readable word count, title, meta description, H1 and headings, JSON-LD, images without alt text, and whether the page is a JavaScript app shell that looks empty to GPTBot, ClaudeBot, PerplexityBot and CCBot.
Data sent to: No third party. AlchemyAgent's servers fetch the page directly.
agent_readiness
Agent readiness. Checks how ready a site is for AI agents.
Inputs: url (required) Website or page URL
Returns: llms.txt validation against the llmstxt.org format with a broken-link check, llms-full.txt, Markdown page versions, MCP, A2A and API discovery files, RSS or Atom feeds, sitemap size and freshness, Organization and WebSite schema, and a starter llms.txt when one is missing.
Data sent to: No third party. AlchemyAgent's servers fetch the site's files directly.
entity_check
Brand entity (Wikidata). Checks how a brand appears in Wikidata.
Inputs: url (required) The brand's website; brand_name Used when no Wikidata item lists the website
Returns: The matching item and its facts (description, type, founding date, headquarters, social profiles, Wikipedia article), gaps to fill, and whether the homepage's Organization schema links to it in sameAs.
Data sent to: Wikimedia Foundation (Wikidata API and query service). The homepage is fetched directly.
wikipedia_presence
Wikipedia presence. Finds Wikipedia articles that link to a domain.
Inputs: url (required) The brand's website or domain
Returns: Linking articles in the 10 largest language editions and the brand's own article page views over the last 12 months.
Data sent to: Wikimedia Foundation (MediaWiki API and Pageviews API).
authority_check
Authority and popularity. Compares up to 10 domains by popularity rank.
Inputs: domains (required) 1 to 10 domains, e.g. ["example.com", "competitor.com"]
Returns: Each domain's Tranco rank in the top 1 million sites, as a free stand-in for domain authority.
Data sent to: Tranco (tranco-list.eu, KU Leuven).
data_connections
Connect your data. Explains how to connect your own Search Console, GA4 and Bing Webmaster Tools data with an AlchemyAgent account.
Inputs: none
Returns: Setup steps. This free connector has no account, so it never holds connections or keys.
Data sent to: Nothing is sent anywhere.
Limits and caching
- 100 tool calls per network per day. Calls are counted per IP address and reset at 00:00 UTC. Listing tools and other protocol messages don't count. When the limit is reached, tools return the daily limit message below instead of a result.
- 50 fresh lookups per network per day for the tools that call Google, Mozilla or Wikidata (pagespeed_check, cwv_trend, security_headers and entity_check). Cached results don't count toward this.
- Caching. Public-site results are cached for up to 12 hours, so asking about the same page again soon returns the cached result and doesn't count against Google's or Mozilla's quotas.
- One page per call. Each URL tool checks the single page or site you name. Nothing is crawled beyond the files that tool needs (for example robots.txt, sitemap.xml and llms.txt).
- Higher limits. The Claude Desktop and Claude Code app runs most checks on your own machine and can use your own Google API key. See download.
Private and local addresses
The connector only checks public websites. Before any request is made, the address is rejected if it is:
- a local name: localhost, single-word hosts such as
intranet, and names ending in .localhost, .local, .internal, .lan, .home, .arpa, .test or .invalid - a private or reserved IPv4 address: 0.0.0.0/8, 10/8, 100.64/10, 127/8, 169.254/16 (including cloud metadata endpoints), 172.16/12, 192.168/16, 198.18/15 and 224/3 and above
- a private IPv6 address: ::, ::1, fc00::/7, fe80::/10 and IPv4-mapped addresses
- not a web address: anything other than http or https
Requests run from Cloudflare's network, which cannot reach your local network or intranet even if a public name redirects there. To check a site that isn't public yet, use the Claude Desktop or Claude Code app on a machine that can reach it.
How the Search Console CSV is processed
- You paste the contents of
Queries.csvascsv_text. The hosted connector can't read files from your computer. - The text is parsed and classified in memory inside the request, by fixed rules (no AI model and no third-party service), then discarded. It is not written to storage, logs or cache, and it is not used for training.
- The query column must be headed Top queries, Query or Queries (Search Console's English export). Clicks, Impressions, CTR and Position are read when present.
- The result shows counts and example queries per bucket. The examples come from your own export, so share the result only where you would share the export.
- For a private option, the Claude Desktop and Claude Code app classifies the file on your own machine; it never leaves your computer.
Third-party data recipients
AlchemyAgent runs its own API on Cloudflare for ai_crawler_check, schema_check, ai_render_check, agent_readiness and gsc_query_classifier. These tools pass the URL or website you submit to public third-party APIs, under each provider's published terms, with attribution in the result:
| Tool | Recipient |
|---|---|
| pagespeed_check, cwv_trend | Google: PageSpeed Insights API and Chrome UX Report API (privacy) |
| security_headers | Mozilla: HTTP Observatory API (privacy) |
| entity_check, wikipedia_presence | Wikimedia Foundation: Wikidata and MediaWiki APIs (privacy) |
| authority_check | Tranco, run by KU Leuven (tranco-list.eu) |
Only the URL, hostname or domain is sent, never your chat, your name or anything else about you. The sites you check also see a request from AlchemyAgent's servers. Full details are in the privacy policy.
Common errors
| Message | What it means and how to fix it |
|---|---|
| Daily free limit of 100 AlchemyAgent checks reached for your network. | The network you're on has used its 100 calls for the day. The count resets at 00:00 UTC. Try again then, or install the Claude Desktop or Claude Code app, which runs most checks on your own machine. |
| Daily free limit reached for your network. | The network has used its 50 fresh Google, Mozilla or Wikidata lookups for the day. Cached pages still work. Try again after 00:00 UTC, or use the Claude Desktop or Claude Code app with your own Google API key. |
| … is a private or local address. AlchemyAgent only checks public websites. | Use the public address of the site. See Private and local addresses. |
| Only http(s) URLs can be checked. | Pass a web address such as https://example.com/ or example.com, not ftp:, file: or another scheme. |
| Not enough Chrome UX Report data for … yet. | Google only publishes real-user data for sites with enough Chrome traffic. Use pagespeed_check for lab metrics instead. |
| Observatory returned … | Mozilla's scanner couldn't reach the site or is busy. Check that the site loads over HTTPS and try again in a few minutes. |
| Fetch failed, timed out, or HTTP 403 or 503 on the page | The site blocked or didn't answer AlchemyAgent's request, often a firewall or bot protection. ai_crawler_check reports this as a possible block for crawlers too. |
| No query column found. | Export the Queries table (not Pages or Countries) from Search Console > Performance > Export > CSV, and pass the contents of Queries.csv. |
| No query rows found in that CSV. | The CSV is empty or only has a header. Widen the date range in Search Console and export again. |
| This hosted version can't read files. | Paste the contents of Queries.csv as csv_text. The hosted connector can't read files from your computer. |