This site speaks agent.

Most sites make AI assistants scrape HTML and guess. This one publishes its content in the formats agents actually want — the same practice the agentic-search guides here recommend, applied to itself.

Markdown, per article

Append index.md to any article URL:

https://patrickstox.com/technical-seo/javascript-seo/index.md

Clean markdown — title, description, canonical URL, dates, then the full prose with components stripped. Drafts are excluded; articles still pending human review carry that note in their front block (the same badge they show on-page). There's also a "Copy as Markdown" button in every article's reading tools.

Bulk + structure

  • /SKILL.md — a one-file bootstrap skill for agents. Its public MCP capability list is generated from the same canonical roster as the live server.
  • /llms-full.txt — the whole corpus in one file (or an index of per-article URLs if it outgrows the size cap).
  • /agent-index.json — the complete public retrieval corpus: articles, services, tools, newsletters, talks, and site pages under one versioned record contract. Article records also carry markdown URLs, taxonomy, and review status.
  • /content-graph.json — the full internal link graph with per-page internal PageRank (the same data behind the site graph).
  • /llms.txt — the pointer file that ties it together.

MCP server

A read-only Model Context Protocol server runs at https://patrickstox.com/api/mcp (Streamable HTTP). It supports the stateless 2026-07-28 protocol and the legacy 2025 initialization flow. Its 10 capabilities come from the same roster used by the server and the complete MCP reference:

  • list_owned_outputs — List outputs owned by the authenticated active paid license without consuming execution units.
  • get_owned_output — Get one output by opaque id after rechecking ownership against the authenticated active paid license.
  • 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.
  • 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.
  • get_article — Fetch one article as clean markdown by its slug (from search_content results) — includes title, description, canonical URL, and the full text.
  • list_pillars — List the site's content pillars and clusters (taxonomy) with URLs and internal-PageRank share, from the build-time content graph.
  • 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.
  • 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.
  • 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.
  • 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.

Example client config:

Live URL diagnostics are user-triggered rather than autonomous crawls. Site owners can review the exact identity, limits, and blocking controls on the Tools Fetcher page.

{
  "mcpServers": {
    "patrickstox": {
      "type": "http",
      "url": "https://patrickstox.com/api/mcp"
    }
  }
}

No auth — published content and bounded public diagnostic tools are available read-only. Results still pending human review carry an explicit note (the same badge they show on-page). Requests are rate-limited.

What's next

The plan is to eventually serve agents and human visitors different content on the same URL, negotiated via the HTTP Vary header (e.g. Vary: Accept alongside content negotiation on Accept: text/markdown) rather than agents getting a separate index.md twin. That's not widely supported by crawlers, CDNs, and caches yet, so for now the explicit markdown endpoints above are the reliable interface.

House rules

  • Cite your sources. Every document carries its canonical URL — link it.
  • Prefer the markdown endpoints over scraping the HTML; they're built for you.
  • The corpus updates on every deploy; dates in each file tell you how fresh it is.