Free, with no account and no key
SEO and AEO audits for your AI assistant, hosted.
Your assistant audits pages and sites for search engines and AI answer engines, and gets the exact fix for every finding. Hosted by RIVI Software.
The server's address
https://mcp.agentic-seo.rivi.software/mcp- MCP over Streamable HTTP
- Read-only audits
- Obeys robots.txt
Check example.com/pricing for search engines and AI answers, and fix what you find in the code.
seo_audit_page url: "https://example.com/pricing"
seo_aeo_audit url: "https://example.com/pricing"
SEO
3 warnings
AEO
1 warning
I made the edits for the three SEO warnings:
canonical.missinga canonical link in the headimg.alt-missingalt text for two imagesmeta-description.missinga description of the page
Warning robots.txt blocks OAI-SearchBot, so ChatGPT search cannot cite the page. That is your call: shall I allow it?
Set up
Add it to your assistant.
One address for every client, with no sign-in. No assistant? Audit a page in your browser.
Claude Code
Run this in a terminal:
$claude mcp add --transport http agentic-seo-check https://mcp.agentic-seo.rivi.software/mcpclaude.ai, Cowork and the Claude apps
Connect it from the Claude Directory, or add a custom connector with this address under Settings, Connectors.
https://mcp.agentic-seo.rivi.software/mcpChatGPT
Add a custom app with this address and no authentication. It needs developer mode, under Settings, Apps, Advanced settings.
https://mcp.agentic-seo.rivi.software/mcpCursor
In
.cursor/mcp.json, or~/.cursor/mcp.jsonfor every project:{ "mcpServers": { "agentic-seo-check": { "url": "https://mcp.agentic-seo.rivi.software/mcp" } } }VS Code
In
.vscode/mcp.json:{ "servers": { "agentic-seo-check": { "type": "http", "url": "https://mcp.agentic-seo.rivi.software/mcp" } } }Any other MCP client
Add a server with this address over Streamable HTTP, with no authentication.
https://mcp.agentic-seo.rivi.software/mcp
The tools
Five read-only audit tools, and one for feedback.
Ask your assistant to audit a page, crawl a site, check how answer engines see it, or compare a page with competitors' pages. With a sixth tool, send_feedback, it can tell us about a capability it missed, a tool that failed or misled it, or one that worked well.
seo_audit_pageAudits one page, from its URL or its HTML, and returns findings with fixes.
seo_crawl_siteCrawls a site from a start URL and adds site-wide checks: robots.txt, sitemaps, broken links, duplicates, redirects.
seo_aeo_auditChecks a page or site for answer engines: AI crawler access, llms.txt, snippet controls, answer-ready content.
seo_compare_pagesCompares a page with up to five competitors' pages you name: what they have that it lacks, with the fix that closes each gap.
seo_list_rulesLists every rule the audits report.
Fair use
Limits.
Free for everyone, so each site and each caller gets a fair share. A call past a limit names the limit and when to try again.
The limits a minute are counted per Cloudflare location, so approximate. seo_list_rules is not counted, and inline HTML counts for no site. A page that redirects to another hostname, a subdomain included, counts that hostname as a site too, and a comparison counts each competitor's site.
| What | Limit |
|---|---|
| Requests to one site, from every caller together | 600 requests a minute |
| Tool calls from one IP address | 30 calls a minute, 3 crawls a minute among them |
| Tool calls from claude.ai or ChatGPT, each counted as one caller | 300 calls a minute, 30 crawls a minute among them |
| Different sites from one IP address | 10 a day; a site audited today can be audited again until 00:00 UTC |
| Different sites from claude.ai or ChatGPT, each counted as one caller | 100 a day |
| Requests to all sites together | 100,000 a day; then audits of inline HTML still work until 00:00 UTC |
| A crawl | 100 pages, 5 links deep, 100 link checks, 10 sitemaps of up to 5 MB |
| A page | the first 2 MB of its HTML, within 15 seconds |
Hosted or local
What it cannot do.
It runs on Cloudflare's network, not on your machine. For the rest, run the local server.
| What | Hosted | Local |
|---|---|---|
| Public pages and sites: audits, crawls and answer engines | Yes | Yes |
| Works without Node on your machine | Yes | No |
localhost, your network or other private addresses, or an IP address | No | Yes |
A build directory such as dist/ or out/ | No | Yes |
| Pages rendered with JavaScript, and Lighthouse | No | Yes |
| A site behind a login, with your own headers or User-Agent | No | Yes |
| A request with each AI bot's User-Agent | No | Yes |
The local server, from the npm package:
npx -y @rivi-software/agentic-seo-check mcpTrust
A well-behaved bot.
robots.txt
The server obeys robots.txt for every request it sends, an audit of one page included: the group for agentic-seo-check, or * when there is none. A crawl waits between requests to a site as its Crawl-delay asks, for at most 30 seconds in all. When robots.txt keeps it out, or a site turns it away, the server says so and requests nothing more there.
Privacy
The server keeps no HTML you send, no reports and no headers. With fieldData, the audited URL and its origin go to Google's Chrome UX Report, which answers with the speed of real visits; the answer is kept in Cloudflare's cache for a day. For each call it records the tool, the outcome, the duration, the requests and pages, and the hostname audited (and each other hostname a page audit or a comparison reached: a competitor's site, or where a page redirected), for three months, so a report of too many requests to a site can be checked. Never the path, the query or your IP address. To count the different sites an address audits in a day, it keeps a hash of the address and of each hostname, keyed with a random key made for the day, in the EU, and deletes them with the key at 00:00 UTC.
PostHog (EU) gets one event per call, and one per bug of ours: the tool, the outcome, the duration, the counts, the score and the rules that fired, the names of the options used, which limit or refusal stopped a call, and the MCP client. The tools take a context, a few words from the agent on what a call is for: it goes to PostHog with URLs, hostnames, emails and quoted text taken out. They also take the model the agent runs as, and the id of the conversation from the last answer, so the calls of one conversation share a session; the id is random and names no one. An agent's send_feedback goes to PostHog with the same text taken out. Never the hostname, an option's value, the answer or your IP address. These pages count visits with it too, without a cookie unless you accept one. The privacy policy has the details.
Requests to your site
The page for site owners says what the requests are and how to stop them. Report abuse through help.rivi.software/contact.