SEO MCP Server
Free, no signup. A small, read-only Model Context Protocol server for agents working on SEO. Search published guidance, reproduce selected tool checks, and keep the canonical source URL attached to the result.
This is a teaser tier, not a general public API: it has no key, no write actions, and intentionally modest fair-use limits. For a normal browser workflow, use the free tools directly.
Connect
Claude Code
claude mcp add --transport http patrickstox https://patrickstox.com/api/mcp Claude Desktop or claude.ai custom connector
{
"mcpServers": {
"patrickstox": {
"url": "https://patrickstox.com/api/mcp"
}
}
} Cursor
{
"mcp": {
"servers": {
"patrickstox": { "url": "https://patrickstox.com/api/mcp" }
}
}
} Any Streamable HTTP MCP client can use the same endpoint: https://patrickstox.com/api/mcp. The server supports the stateless 2026-07-28 protocol and retains the 2025 initialization flow for older clients.
Requests are processed by our server and are not stored after processing. Anonymous run-level outcome counters may be used for aggregate research; URLs, domains, IPs, and identifiers are never included, and no statistic is released below 100 runs.
How to use it
- Add the endpoint with the configuration for your MCP client.
- Confirm the client discovers the tools below before relying on a prompt-driven call.
- Use
search_sitefor the complete public corpus orsearch_contentfor articles only, then fetch an article by its returned slug when full text is needed. - For verification tools, supply only the documented public IP, pasted markup, or public URL and preserve the returned evidence and error state.
- Cite the canonical URL returned with published content.
Available tools
| Tool | What it does | Arguments |
|---|---|---|
search_content | Search Patrick Stox's published SEO articles and guides. Supports in:, type:, quoted-phrase, and exclusion syntax; returns title, description, canonical URL, and a markdown URL for each match. | query — Article search terms using optional shared syntax (for example: in:technical-seo "javascript seo") |
search_site | Search Patrick Stox's complete public retrieval corpus, including articles, services, tools, newsletters, talks, and site reference pages. Supports the same in:, type:, quoted-phrase, and exclusion syntax as site search. | query — Search terms, optionally scoped (for example: in:tools canonical) |
get_article | Fetch one article as clean markdown by its slug (from search_content results) — includes title, description, canonical URL, and the full text. | slug — Article slug, e.g. "javascript-seo" |
list_pillars | List the site's content pillars and clusters (taxonomy) with URLs and internal-PageRank share, from the build-time content graph. | None |
verify_bot | Verify whether a public IP claiming to be a known crawler matches published ranges and forward-confirmed reverse DNS. Returns the range snapshot date as evidence. | ip — One public IPv4 or IPv6 addressclaim — Optional crawler id, e.g. "googlebot" |
validate_schema | Validate pasted JSON-LD or HTML containing JSON-LD with the same pure schema.org, Google rich-result, and @id graph checks used by the Schema Markup Validator. | input — JSON-LD or HTML, up to 100,000 charactersmode — "jsonld" (default) or "html" |
trace_redirect_chain | Trace one public URL through bounded HTTP, Refresh-header, and short meta-refresh hops. Returns redirect-relevant evidence only, never a raw header dump. | url — Public http(s) URL to traceua — Optional user-agent profile: default, browser, googlebot, bingbot, gptbot, claudebot, or perplexitybot |
inspect_og | Inspect bounded raw HTML from one public URL for normalized Open Graph and Twitter metadata, resolved image URLs, platform fallback provenance, and share-readiness findings. Never returns the HTML or an arbitrary header dump. | url — Public http(s) URL to inspectua — Optional allowlisted user-agent profile: default, browser, facebookexternalhit (default), or googlebot |
search_content example
Arguments
{
"query": "in:technical-seo \"javascript seo\""
} Trimmed response
[
{
"slug": "javascript-seo",
"title": "JavaScript SEO",
"url": "https://patrickstox.com/technical-seo/javascript-seo/"
}
] search_site example
Arguments
{
"query": "in:tools canonical"
} Trimmed response
[
{
"title": "Canonical Tag Checker",
"kind": "tool",
"url": "https://patrickstox.com/tools/canonical-checker/"
}
] get_article example
Arguments
{
"slug": "javascript-seo"
} Trimmed response
{
"content": [
{
"type": "text",
"text": "# JavaScript SEO\n…"
}
]
} list_pillars example
Arguments
{} Trimmed response
[
{
"kind": "pillar",
"label": "Technical SEO",
"url": "https://patrickstox.com/technical-seo/",
"pagerankShare": "8.42%"
}
] verify_bot example
Arguments
{
"ip": "203.0.113.9",
"claim": "googlebot"
} Trimmed response
{
"verdict": "spoofed",
"bot": {
"id": "googlebot",
"displayName": "Googlebot"
},
"findings": [
{
"findingId": "verify-bot.range-mismatch",
"severity": "fail",
"label": "Crawler IP is outside the published range"
}
],
"evidence": {
"matchedRanges": [],
"listsFetchedAt": "2026-07-05T16:45:33.112Z"
}
} validate_schema example
Arguments
{
"input": "{\"@context\":\"https://schema.org\",\"@type\":\"Product\",\"name\":\"Example\"}"
} Trimmed response
{
"entities": [
{
"type": "Product",
"googleEligible": "does-not-meet"
}
],
"issues": [
{
"code": "google.product.offers-review-rating.missing",
"tier": "blocks"
}
]
} trace_redirect_chain example
Arguments
{
"url": "http://example.com/old"
} Trimmed response
{
"hops": 2,
"finalUrl": "https://example.com/new",
"finalStatus": 200,
"findings": [
{
"findingId": "trace-redirect.extra-hop",
"severity": "warning",
"label": "Redirect trace contains an unnecessary hop"
}
],
"chain": [
{
"status": 301,
"kind": "http"
},
{
"status": 302,
"kind": "http"
},
{
"status": 200,
"kind": "http"
}
]
} inspect_og example
Arguments
{
"url": "https://example.com/article",
"ua": "facebookexternalhit"
} Trimmed response
{
"finalUrl": "https://example.com/article",
"httpStatus": 200,
"userAgent": {
"profile": "facebookexternalhit"
},
"acquisition": {
"maxBytes": 262144,
"capturedBytes": 18420,
"truncated": false,
"complete": true
},
"metadata": {
"openGraph": {
"og:title": "Example article",
"og:image": "https://example.com/card.jpg"
},
"twitter": {}
},
"platforms": [
{
"id": "facebook",
"title": {
"value": "Example article",
"source": "og:title"
},
"image": {
"value": "https://example.com/card.jpg",
"source": "og:image"
}
}
],
"score": 97
} Search syntax
The search tools use the same retrieval syntax as the site. Use in: for a section or taxonomy, type: for a result class, quotation marks for an exact phrase, and a leading minus sign to exclude a term. Multiple in: scopes are combined as alternatives. Available results still depend on each tool’s documented corpus.
in:ai-search citations— search the AI Search pillar.type:guide "title tag" -generator— require the phrase in guides and exclude generators.in:tools canonical— search the Tools section with the full-site search tool.
Example project Static documented response
The search_content example above scopes an exact javascript seo phrase to Technical SEO and returns a result shaped like this:
Title: JavaScript SEO
Slug: javascript-seo
Canonical URL: https://patrickstox.com/technical-seo/javascript-seo/
This is a deliberately trimmed documentation fixture from the shared tool roster, not a live request made when the page renders.
What each step produces
Content tools return source records intended to retain their canonical URLs. verify_bot returns identity evidence and a crawler-range snapshot date. validate_schema returns parsed entities and issue tiers. trace_redirect_chain returns a bounded chain and final state. inspect_og returns normalized Open Graph and Twitter fields, resolved image URLs, selected-UA evidence, and per-platform source provenance. Every verification result also carries a versioned capture-provenance object and finding packet so an agent can preserve the observed mode, JavaScript state, coverage, evidence, fix, and verification instruction. Neither URL tool exposes full HTML or arbitrary response headers. Treat an error, truncated capture, or unavailable check as not evaluated, never as a negative verdict.
How project data is stored
The page and Worker share the same MCP registry and free-tier availability rule, so names, argument schemas, rate tiers, and documentation examples stay aligned with the tools an unauthenticated client can list. Modern clients use stateless per-request metadata and server/discover; legacy clients can still negotiate through initialize. Streamable HTTP requests are routed to read-only handlers. Content calls use the build-time published corpus; tool calls reuse bounded validators and safe public-network checks.
Features
- Search the complete public site corpus or only published SEO guidance, with canonical attribution.
- Fetch full article markdown and list the public content taxonomy with build-time PageRank share.
- Verify one crawler IP, validate pasted schema, trace one public redirect chain, or inspect social metadata from one public page.
- Return versioned capture provenance and portable finding packets with verification-tool results.
- Supports MCP
2026-07-28plus the legacy 2025 initialization flow over Streamable HTTP, without a key.
Limits & fair use
- Published-content tools: 120 calls per minute per IP.
- Tool calls (bot verification, schema validation, redirect tracing, and social metadata inspection): 10 calls per day per IP across the teaser tool set.
- URL inspection accepts only public URLs and allowlisted user agents, validates every redirect hop, and bounds redirects, bytes, and time.
Limits protect the free service. A paid API tier is not available yet.
Common request error: Provide a public http(s) URL. Correct the request arguments or wait for the stated rate-limit window before retrying. Call the same read-only tool again and confirm it returns a result object instead of an MCP error.
For an unexpected connection or service error, check the current service status before retrying or reporting it.
Limitations
- No write actions, private content, Search Console access, bulk crawling, or general proxy behavior.
- Public tool calls share a small daily per-IP teaser quota.
- Bot verification depends on dated published ranges and available DNS evidence.
- Schema checks are deterministic eligibility guidance, not a guarantee of a rich result.
- URL checks are bounded and accept only public HTTP(S) targets.
- A truncated
inspect_ogcapture may report observed tags, but missing fields, completeness, and score remain explicitly not evaluated.
Attribution
When you use material returned by get_article, cite its canonical Patrick Stox URL. The server flags AI-assisted drafts pending human review; treat that status as part of the source context.
Frequently asked questions
Is this a public API?
No. This is a small, read-only MCP teaser for agents. The site’s ordinary tool endpoints remain same-origin only, and the MCP tool calls have a deliberately small fair-use limit.
What can an agent do?
It can search and fetch published content, inspect the content taxonomy, verify one public crawler IP, validate pasted JSON-LD or HTML, trace one public redirect chain, and inspect Open Graph or Twitter metadata from one public URL. It cannot change site data or access private content.
How should an agent cite this content?
Use the canonical article URL returned by the server whenever you rely on material from a fetched article.
Does the MCP server require an API key?
No. The teaser endpoint is unauthenticated, read-only, and protected by per-IP fair-use limits. It is not intended for high-volume automation.
What happens when a tool cannot verify a result?
The server returns bounded evidence or an explicit error state. A failed fetch, unavailable verification, or rate limit must not be interpreted as a crawler, schema, or redirect verdict.
Site passport Local context for this saved site
Local data
Saved targets, named lists, and recent check summaries remain only in this browser.
Rate this tool
Feature requests for Mcp
Upvote what you want most. New ideas can be submitted from the floating Feedback menu; requests appear here once approved, and the most-wanted rise to the top.
You won't be emailed about that request anymore.
Loading…
➕ Request a feature
New requests are reviewed before they appear here.
Sobre a ferramenta
Conecte um agente de IA ao servidor MCP somente leitura de Patrick Stox para pesquisar conteúdo de SEO publicado, verificar IPs de rastreadores, validar esquemas, rastrear cadeias de redirecionamento e inspecionar metadados Open Graph.
Grátis, sem cadastro. É um pequeno servidor do Model Context Protocol, somente leitura, para agentes que trabalham com SEO. Pesquise orientações publicadas, reproduza verificações selecionadas das ferramentas e mantenha a URL canonical de origem anexada ao resultado.
Recursos
- Pesquise o corpus público concluído ou apenas orientações de SEO publicadas, com atribuição canonical. Busque o Markdown completo de um artigo e liste a taxonomia pública de conteúdo com participação no PageRank do build. Verifique um IP de rastreador, valide JSON-LD ou HTML colado, rastreie uma cadeia pública de redirecionamento ou inspecione metadados sociais de uma página pública. Retorne proveniência de capturas versionadas e pacotes de constatações portáteis com resultados da ferramenta de verificação. Compatível com o protocolo MCP de 2026-07-28 e com o fluxo de inicialização legado de 2025 sobre Streamable HTTP, sem chave.
- Pesquise e busque conteúdo publicado, inspecione a taxonomia de conteúdo, verifique um IP público de rastreador, valide JSON-LD ou HTML colado, rastreie uma cadeia pública de redirecionamento e inspecione metadados Open Graph ou Twitter de uma URL pública. A ferramenta não altera dados do site nem acessa conteúdo privado.
- A inspeção de URL aceita somente URLs públicas e agentes de usuário permitidos, valida cada salto de redirecionamento e limita redirecionamentos, bytes e tempo.
- Ao usar material retornado por get_article, cite a URL canonical de Patrick Stox. O servidor sinaliza rascunhos assistidos por IA pendentes de revisão humana; trate esse status como parte do contexto de origem.
Como funciona
Qualquer cliente MCP sobre Streamable HTTP pode usar o mesmo endpoint: https://patrickstox.com/api/mcp . O servidor é compatível com o protocolo stateless de 2026-07-28 e mantém o fluxo de inicialização de 2025 para clientes antigos.
Limitações
- Este é um teaser, não uma API pública geral: não há chave, ações de escrita ou limites de uso justo deliberadamente modestos. Para um fluxo normal no navegador, use diretamente as ferramentas gratuitas.
- Não há ações de escrita, conteúdo privado, acesso ao Search Console, rastreamento em massa nem comportamento de proxy geral. As chamadas públicas das ferramentas compartilham uma pequena cota diária por IP. A verificação de bots depende de intervalos publicados datados e de evidências DNS disponíveis. As verificações de esquema oferecem orientação determinística de elegibilidade, não garantia de resultado avançado. As verificações de URL são limitadas a alvos HTTP(S) públicos. Uma captura truncada de inspect_og pode informar tags observadas, mas campos ausentes, completude e pontuação continuam explicitamente não avaliados.
Perguntas frequentes
O servidor MCP exige uma chave de API?
Não. O endpoint teaser é sem autenticação, somente leitura e protegido por limites de uso justo por IP. Ele não foi projetado para automação de alto volume.
O que um agente pode fazer?
Ele pode pesquisar e buscar conteúdo publicado, inspecionar a taxonomia de conteúdo, verificar um IP público de rastreador, validar JSON-LD ou HTML colado, rastrear uma cadeia pública de redirecionamento e inspecionar metadados Open Graph ou Twitter de uma URL pública. Não pode alterar dados do site nem acessar conteúdo privado.
O que acontece quando uma ferramenta não consegue verificar um resultado?
O servidor retorna evidência limitada ou um estado de erro explícito. Uma busca que falhou, uma verificação indisponível ou um limite de taxa não deve ser interpretado como um veredito sobre rastreador, esquema ou redirecionamento.
Como um agente deve citar este conteúdo?
Cite a URL canonical de Patrick Stox ao usar material retornado por get_article; mantenha o aviso de revisão humana junto da atribuição.
Isto é uma API pública?
É um teaser, não uma API pública geral: não há chave nem ações de escrita, e a automação de alto volume não é o objetivo.