# HrefGate > Lint hreflang annotations for international SEO: language/script/region codes, x-default, self-reference, canonical conflicts, duplicates and reciprocal return links across a set of pages. Paste page HTML, a sitemap or a JSON set, never a URL (HrefGate never fetches URLs). Free paste tool, JSON API and a remote MCP server for AI agents. ## For AI agents - [MCP server](https://hrefgate.mike-tusa.workers.dev/mcp): remote MCP over Streamable HTTP (POST only, stateless, JSON responses). Protocol versions: 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05. Tool `lint_hreflang` (input: page HTML, sitemap XML or JSON set; optional page_url, include_raw). Read-only. Client config (most MCP clients accept this; some use a different format, for example VS Code uses a `servers` key): `{"mcpServers":{"hrefgate":{"type":"http","url":"https://hrefgate.mike-tusa.workers.dev/mcp"}}}` - [OpenAPI 3.1 spec](https://hrefgate.mike-tusa.workers.dev/openapi.json): machine-readable description of the JSON API - [MCP server card](https://hrefgate.mike-tusa.workers.dev/.well-known/mcp/server-card.json): static description of the MCP server and its tool ## JSON API - `POST https://hrefgate.mike-tusa.workers.dev/api/lint`: body is raw page HTML, sitemap XML or a JSON set `{"pages":[{"url","canonical"?,"alternates":[{"hreflang","href"}]}]}` (any content type), or the wrapper `{"input": "", "page_url"?: ""}`. Optional query `?page_url=` (absolute URL of pasted HTML; never fetched). Max 65536 bytes. Response: { valid, summary { errors, warnings, infos, pages, alternates, codes, source }, issues [ { level, code, path, message, suggestion? } ], truncated, meta }. Errors: { "error": { "code", "message" } } with 400 invalid_input (empty input, bad page_url, or brackets nested deeper than 32 levels; rejected before any quota is used), 404 not_found, 405 method_not_allowed, 413 too_large, 429 rate_limited / daily_limit. - `GET https://hrefgate.mike-tusa.workers.dev/api/health`: { ok, version, day }. ## Limits, keys and pricing - Free, no key. About 30 checks/min per IP and a shared pool of about 20000 checks per UTC day. The MCP endpoint uses the same counters: each `tools/call` is one check. Non-check MCP messages don't count as checks, but are capped at about 120/min per IP (HTTP 429 + Retry-After). - Submitted content is processed in memory only and never stored or logged. ## Optional - [Privacy](https://hrefgate.mike-tusa.workers.dev/#privacy) - [Terms](https://hrefgate.mike-tusa.workers.dev/terms) - Attribution: Language, script and region codes follow the public ISO 639, ISO 15924 and ISO 3166-1 standards. HrefGate is not affiliated with or endorsed by Google or any search engine. - Contact: digitalpromohub.support@gmail.com