SEO MCP server: give your coding agent a real audit engine

Crawlers.fr exposes its audit engine as a Model Context Protocol server. Claude Code, Claude Desktop and Cursor call the tools registered on mcp-server: a GEO score, LLM visibility, an SEO audit, corrective JavaScript, and Marina reports. The names below are the ones in the server code.

Claude Code — Crawlers MCP server

Connect the Crawlers.fr MCP server

claude

Connecting to the Crawlers MCP server.

https://tutlimtasnjabdfhpewu.supabase.co/functions/v1/mcp-server · Streamable HTTP · x-marina-key or Authorization: Bearer — 27 registered tools (mcp-server 1.2.0): 3 with no key, 12 Pro Agency, get_audit_job authenticated and free, 4 Marina, 7 Search Console tools reserved for admins (read-only).

Audit the SEO of this URL.

claude

I’ll call expert_seo_audit. It is a registered Pro Agency tool and expects a url.

crawlers · mcpexpert_seo_audit

{ "url": "https://example.com/contact" }
The tool returns the JSON produced by the audit function.
This panel is an example of the call, not a measurement of example.com.

claude

To generate corrective JavaScript, the registered tool is generate_corrective_code (url, optional audit_id).

crawlers · mcpgenerate_corrective_code

{ "url": "https://example.com/contact" }
Returns JavaScript corrective code for SEO/GEO fixes.
Applying it in the repository is done by the agent, not by this tool.

Example dialogue using tools that are actually registered. No sample score is shown.

Why agents need a measurement layer

Ask an AI agent to “improve this page for SEO” and it will rewrite text it can see. It cannot see the HTML actually served to crawlers, the HTTP chain, the render behaviour, or whether a generative engine cites you. An MCP audit server closes that gap: the agent stops guessing and starts measuring.

JSON, not an opinion

expert_seo_audit and the other registered tools return the JSON of the function they call. The registration does not define rule ids, a severity scale, or a per-framework patch format.

A verifiable loop

Call expert_seo_audit, read the result with get_audit_job, then generate_corrective_code, then expert_seo_audit again. sync: true forces the blocking call. The comparison is between the two completed JSON payloads.

Then a corrective script

generate_corrective_code returns JavaScript. dry_run_script tests a generated script (a site_script_rules id) on the live page: JS errors, CLS and JSON-LD validity. wordpress_sync injects a fix into a connected WordPress site and requires a session JWT.

Tools exposed by the server

27 registered tools (mcp-server 1.2.0): 3 with no key, 12 Pro Agency, get_audit_job authenticated and free, 4 Marina, 7 Search Console tools reserved for admins (read-only). Descriptions follow the text registered with each tool.

  • check_geo_score

    GEO score from 0 to 100. Input: domain. Access: No key.

  • check_llm_visibility

    Domain visibility across ChatGPT, Gemini, Perplexity and Claude. Input: domain. Access: No key.

  • check_ai_crawlers

    AI bot analysis for GPTBot, ClaudeBot and Google-Extended. Input: domain. Access: No key.

  • expert_seo_audit

    Starts a 200-point SEO audit and returns a job_id to poll with get_audit_job. sync: true forces the blocking call. Pro Agency required. Input: url, optional lang (fr, en, es). Access: Pro Agency.

  • strategic_ai_audit

    Starts a strategic AI audit (SEO, GEO and competitive) and returns a job_id to poll with get_audit_job. sync: true forces the blocking call. Pro Agency required. Input: url, optional sector and lang. Access: Pro Agency.

  • get_audit_job

    Status and result of an audit started by expert_seo_audit or strategic_ai_audit, limited to the owning account. Authentication required. Free, outside the DataForSEO quota. Input: job_id. Access: Key or JWT, free.

  • keyword_research

    Google keyword ideas (volume and Labs difficulty from 0 to 100). France and fr by default, up to 5 seeds, 15 results by default and 25 at most. Pro Agency, read-only, 30 calls per hour. Access: Pro Agency.

  • serp_ranking

    Live Google organic SERP for a keyword, and a domain’s position when one is given. France and fr by default, depth 10 or 20 (default 10). Pro Agency, read-only, 30 calls per hour. Input: keyword. Access: Pro Agency.

  • backlink_snapshot

    Summary of a domain’s backlinks, referring domains and anchors. 10 rows by default, 20 at most for referrers and for anchors. Pro Agency, read-only, 30 calls per hour. Input: domain. Access: Pro Agency.

  • generate_corrective_code

    Generates JavaScript corrective code for SEO/GEO fixes. Pro Agency required. Input: url, optional audit_id. Access: Pro Agency.

  • dry_run_script

    Sandbox-tests a corrective script (site_script_rules id) on the live page: JS errors, CLS, JSON-LD validity. Pro Agency required. Input: script_id, optional target_url. Access: Pro Agency.

  • calculate_cocoon_logic

    Semantic cocoon via TF-IDF. Pro Agency required, and a session JWT (a Marina key is not enough). Input: domain and tracked_site_id. Access: Pro Agency.

  • measure_audit_impact

    Impact at T+30, T+60 and T+90 via Search Console and GA4. Pro Agency required, and a session JWT. Input: domain, optional audit_id. Access: Pro Agency.

  • wordpress_sync

    Injects fixes into WordPress via the CMS bridge. Pro Agency required, and a session JWT. Input: tracked_site_id and script_id. Access: Pro Agency.

  • fetch_serp_kpis

    Weekly SERP KPIs: rankings, traffic, visibility. Pro Agency required. Input: domain, optional tracked_site_id. Access: Pro Agency.

  • calculate_ias

    Strategic Alignment Index (IAS). Pro Agency required. Input: domain; tracked_site_id is required when calling with a Marina key. Access: Pro Agency.

  • marina_create_report

    Launches a Marina SEO and GEO report (described as 40+ pages). Marina key or JWT. 5 credits, or included with active Pro Agency. Returns a job_id to poll with marina_get_report. Access: Marina key or JWT.

  • marina_get_report

    Status and result of a Marina job owned by the caller. Free. Access: Marina key or JWT.

  • marina_list_jobs

    Lists the caller's Marina jobs, most recent first. Free. Access: Marina key or JWT.

  • marina_export_pdf

    Exports a completed Marina report as PDF (signed URL valid 7 days). Free. Access: Marina key or JWT.

  • gsc_list_sites

    Lists the allowed Search Console properties of the connected Google account. Admin only. Read-only. Access: Admin, read-only.

  • gsc_search_analytics

    Clicks, impressions, CTR and position for an allowed property. Admin only. Read-only. Access: Admin, read-only.

  • gsc_top_queries

    Top queries by clicks over 7, 28 or 90 days, with a delta. Admin only. Read-only. Access: Admin, read-only.

  • gsc_top_pages

    Top pages by clicks over 7, 28 or 90 days, with a delta. Admin only. Read-only. Access: Admin, read-only.

  • gsc_position_history

    Daily position series read from the database, with no Google call. Admin only. Read-only. Access: Admin, read-only.

  • gsc_url_inspection

    URL inspection (5 URLs max per call): verdict, indexing, canonicals, rich results. Admin only. Read-only. Access: Admin, read-only.

  • gsc_list_sitemaps

    Submitted sitemaps of an allowed property. Admin only. Read-only. Access: Admin, read-only.

Tools registered on mcp-server: description and access, taken from the server code.
ToolWhat the registration saysAccess
check_geo_scoreGEO score from 0 to 100. Input: domain.No key
check_llm_visibilityDomain visibility across ChatGPT, Gemini, Perplexity and Claude. Input: domain.No key
check_ai_crawlersAI bot analysis for GPTBot, ClaudeBot and Google-Extended. Input: domain.No key
expert_seo_auditStarts a 200-point SEO audit and returns a job_id to poll with get_audit_job. sync: true forces the blocking call. Pro Agency required. Input: url, optional lang (fr, en, es).Pro Agency
strategic_ai_auditStarts a strategic AI audit (SEO, GEO and competitive) and returns a job_id to poll with get_audit_job. sync: true forces the blocking call. Pro Agency required. Input: url, optional sector and lang.Pro Agency
get_audit_jobStatus and result of an audit started by expert_seo_audit or strategic_ai_audit, limited to the owning account. Authentication required. Free, outside the DataForSEO quota. Input: job_id.Key or JWT, free
keyword_researchGoogle keyword ideas (volume and Labs difficulty from 0 to 100). France and fr by default, up to 5 seeds, 15 results by default and 25 at most. Pro Agency, read-only, 30 calls per hour.Pro Agency
serp_rankingLive Google organic SERP for a keyword, and a domain’s position when one is given. France and fr by default, depth 10 or 20 (default 10). Pro Agency, read-only, 30 calls per hour. Input: keyword.Pro Agency
backlink_snapshotSummary of a domain’s backlinks, referring domains and anchors. 10 rows by default, 20 at most for referrers and for anchors. Pro Agency, read-only, 30 calls per hour. Input: domain.Pro Agency
generate_corrective_codeGenerates JavaScript corrective code for SEO/GEO fixes. Pro Agency required. Input: url, optional audit_id.Pro Agency
dry_run_scriptSandbox-tests a corrective script (site_script_rules id) on the live page: JS errors, CLS, JSON-LD validity. Pro Agency required. Input: script_id, optional target_url.Pro Agency
calculate_cocoon_logicSemantic cocoon via TF-IDF. Pro Agency required, and a session JWT (a Marina key is not enough). Input: domain and tracked_site_id.Pro Agency
measure_audit_impactImpact at T+30, T+60 and T+90 via Search Console and GA4. Pro Agency required, and a session JWT. Input: domain, optional audit_id.Pro Agency
wordpress_syncInjects fixes into WordPress via the CMS bridge. Pro Agency required, and a session JWT. Input: tracked_site_id and script_id.Pro Agency
fetch_serp_kpisWeekly SERP KPIs: rankings, traffic, visibility. Pro Agency required. Input: domain, optional tracked_site_id.Pro Agency
calculate_iasStrategic Alignment Index (IAS). Pro Agency required. Input: domain; tracked_site_id is required when calling with a Marina key.Pro Agency
marina_create_reportLaunches a Marina SEO and GEO report (described as 40+ pages). Marina key or JWT. 5 credits, or included with active Pro Agency. Returns a job_id to poll with marina_get_report.Marina key or JWT
marina_get_reportStatus and result of a Marina job owned by the caller. Free.Marina key or JWT
marina_list_jobsLists the caller's Marina jobs, most recent first. Free.Marina key or JWT
marina_export_pdfExports a completed Marina report as PDF (signed URL valid 7 days). Free.Marina key or JWT
gsc_list_sitesLists the allowed Search Console properties of the connected Google account. Admin only. Read-only.Admin, read-only
gsc_search_analyticsClicks, impressions, CTR and position for an allowed property. Admin only. Read-only.Admin, read-only
gsc_top_queriesTop queries by clicks over 7, 28 or 90 days, with a delta. Admin only. Read-only.Admin, read-only
gsc_top_pagesTop pages by clicks over 7, 28 or 90 days, with a delta. Admin only. Read-only.Admin, read-only
gsc_position_historyDaily position series read from the database, with no Google call. Admin only. Read-only.Admin, read-only
gsc_url_inspectionURL inspection (5 URLs max per call): verdict, indexing, canonicals, rich results. Admin only. Read-only.Admin, read-only
gsc_list_sitemapsSubmitted sitemaps of an allowed property. Admin only. Read-only.Admin, read-only
Tools registered on mcp-server: description and access, taken from the server code.

Second server, different tools

A second server, supabase/functions/mcp, uses OAuth 2.1. It is not the endpoint above. Its serp_ranking tool is separate from the one on mcp-server: it is always billed to the wallet.

Tools registered on the OAuth server mcp, including serp_ranking.
ToolWhat the registration says
whoamiIdentity of the connected user (id, email, OAuth client).
list_my_sitesSites followed by the user (domain, latest audit, EEAT score).
get_site_auditLatest SEO/GEO audit of a followed site, from its domain.
get_jobStatus and result of a job started by a start_* tool or audit_page. Free.
get_wallet_balanceDeveloper wallet balance, today's MCP usage and the daily cap.
list_tools_pricingCost of each tool on this server: free, included, wallet overflow, or always paid.
audit_pageStarts an expert audit of one page and returns a job_id.
analyze_schemaAnalyses the machine layer of a page (JSON-LD, markup, metadata) and returns a job_id.
check_indexabilityChecks robot access to a page (robots, canonical, render, JavaScript shell) and returns a job_id.
analyze_linksAnalyses internal linking of a domain (depth, cocoons, cannibalisation) and returns a job_id.
start_site_crawlStarts a crawl (breadth-first, depth 3 maximum) and returns a job_id.
start_geo_auditStarts the GEO score of a page (readability, citable passages, direct answers) and returns a job_id.
start_competitor_matrixCompares the domain with 1 to 3 competitors and returns a job_id.
serp_rankingCollects SERP positions for a keyword from several data providers. Always billed to the wallet. Returns a job_id. Input: keyword, optional domain and location.
Tools registered on the OAuth server mcp, including serp_ranking.

What a tool returns

Each registered tool returns the JSON of the function it calls. This page does not publish rule identifiers, severity scales or stack-specific patch formats: that contract is not in the MCP registration. To compare two passes, call the same tool again and read the two payloads.

MCP client compatibility

The live server implements the Model Context Protocol over Streamable HTTP. Use a client that lets you configure x-marina-key or Authorization headers.

Compatibility of MCP clients with the Crawlers audit server.
ClientTransportAuthTypical use
Claude CodeStreamable HTTPMarina key / BearerAudit and fix inside the repository
Claude DesktopStreamable HTTPMarina key / BearerConversational diagnosis
CursorStreamable HTTPMarina key / BearerAudit while editing
Any conformant clientStreamable HTTPMarina key / BearerCustom automation
Compatibility of MCP clients with the Crawlers audit server.

A typical session in Claude Code

The developer asks for an optimisation. The agent orchestrates the loop without further instructions.

  1. expert_seo_audit on the URL being edited (Pro Agency). The response is a job_id; read it with get_audit_job. sync: true forces the blocking call.
  2. The agent reads the audit JSON once get_audit_job reports the job as completed.
  3. generate_corrective_code asks for corrective JavaScript for that URL.
  4. The agent edits the files in the repository. The tool itself does not commit them.
  5. expert_seo_audit again, to compare the new JSON with the previous one.

Connecting and billing

The operational endpoint is POST https://tutlimtasnjabdfhpewu.supabase.co/functions/v1/mcp-server over Streamable HTTP. Get your Marina key (prefix marina_ or mk_live_) from Console crawlers.fr → API → Marina. Set x-marina-key: <key> or Authorization: Bearer <key>.27 registered tools (mcp-server 1.2.0): 3 with no key, 12 Pro Agency, get_audit_job authenticated and free, 4 Marina, 7 Search Console tools reserved for admins (read-only). A key belonging to an active Pro Agency account unlocks Pro access; calculate_cocoon_logic, wordpress_sync and measure_audit_impact still require a session JWT. Marina costs 5 credits per report, or is included with active Pro Agency.

Marina tools over MCP

Endpoint: https://tutlimtasnjabdfhpewu.supabase.co/functions/v1/mcp-server. Header: x-marina-key: <key> or Authorization: Bearer <key> (Console crawlers.fr → API → Marina; prefixes marina_ and mk_live_).

  • marina_create_report: starts an SEO and GEO report, returns a job_id.
  • marina_get_report: progress, then the report link.
  • marina_list_jobs: your recent reports.
  • marina_export_pdf: report PDF, link valid for 7 days.

5 credits per report, or included with an active Pro Agency subscription. Without enough credits: JSON-RPC -32002, no job created. Without a key, only check_geo_score, check_llm_visibility and check_ai_crawlers are free; Marina returns JSON-RPC -32001. The future proxy https://crawlers.fr/functions/v1/mcp-server is not live: coming via Cloudflare (not deployed).

Frequently asked questions

What is an SEO MCP server?+

A Model Context Protocol server that exposes SEO measurement as callable tools, so an AI coding agent can audit a page, read structured findings, apply a fix and re-audit to verify the result.

Which clients are supported?+

Any MCP client supporting Streamable HTTP and configurable authentication headers, including Claude Desktop, Claude Code and Cursor. The live endpoint accepts a Marina key, not an OAuth connection flow.

How is it billed?+

The live endpoint registers 27 tools (mcp-server 1.2.0): 3 with no key, 12 for Pro Agency (including keyword_research, serp_ranking and backlink_snapshot), get_audit_job authenticated and free, 4 Marina tools, and 7 read-only Search Console tools reserved for admins. Marina reports cost 5 credits, or are included with active Pro Agency. Insufficient credits return JSON-RPC -32002 and no job is created.

Does the agent change my site?+

No. Crawlers returns findings and proposed corrections. Your agent applies them in your repository or through your connected CMS.

Is generative visibility included?+

Yes. Alongside classic technical SEO, the server measures whether generative engines such as ChatGPT, Gemini, Perplexity and Claude cite your pages.

Why not let the model audit the page itself?+

A language model cannot measure served HTML, HTTP status or render behaviour. Without a crawl it produces plausible guesses instead of verifiable findings.

Sources and references

Related pages

Free audit, no credit card, 90 seconds

Try the audit engine first

Run the same engine your agent will call, on any URL.