{
    "openapi": "3.1.0",
    "info": {
        "title": "Yes SEO SEO API",
        "version": "1.0.0",
        "description": "Free, keyless JSON API for every Yes SEO tool. Fair use: 60 requests per hour per IP. Also available as an MCP server at https://yes-seo.com/mcp.",
        "contact": {
            "url": "https://yes-seo.com/contact"
        }
    },
    "servers": [
        {
            "url": "https://yes-seo.com"
        }
    ],
    "paths": {
        "/api/v1/audit": {
            "get": {
                "operationId": "audit",
                "summary": "Full single-page SEO + AI-visibility audit",
                "description": "Runs 60+ checks and returns the SEO score, AI-visibility score, category scores and every finding with why it matters and how to fix it. Counts toward the free daily audit limit (10/day per IP).",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Audit result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Daily limit reached"
                    }
                }
            }
        },
        "/api/v1/seo-compare": {
            "get": {
                "operationId": "seo_compare",
                "summary": "SEO Compare",
                "description": "Compare the SEO of two pages side by side (yours vs a competitor): scores, title and description, word count, headings, links, schema, speed, AI readiness, with the gaps highlighted.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "url2",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/ai-crawler-checker": {
            "get": {
                "operationId": "ai_crawler_checker",
                "summary": "AI Crawler Checker",
                "description": "AI crawler checker: tests a site's robots.txt against 25+ AI bots (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended, CCBot, Meta-ExternalAgent, Bytespider, Amazonbot, DuckAssistBot, MistralAI-User and more), grouped by purpose (search, user fetch, training), plus a live firewall test that requests the page with real AI user-agents to detect 403 blocks.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/llms-txt-generator": {
            "get": {
                "operationId": "llms_txt_generator",
                "summary": "llms.txt Generator",
                "description": "llms.txt generator and validator: checks whether /llms.txt exists and is well-formed (H1, summary, link sections), and generates a ready-to-upload llms.txt draft from the site's home page, navigation and sitemap. Honest note: llms.txt is optional and no major AI platform has confirmed using it for ranking or citations.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/meta-tags-checker": {
            "get": {
                "operationId": "meta_tags_checker",
                "summary": "Meta Tags Checker",
                "description": "Meta tags checker: lists every meta tag of a page (title, description, robots, viewport, charset, canonical, Open Graph, Twitter, hreflang, verification tags) with length and pixel-width checks and fixes.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/heading-checker": {
            "get": {
                "operationId": "heading_checker",
                "summary": "Heading Checker",
                "description": "Heading checker: shows the H1–H6 outline of a page as a tree, flags missing or multiple H1, skipped levels, empty and overlong headings.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/keyword-density-checker": {
            "get": {
                "operationId": "keyword_density_checker",
                "summary": "Keyword Density Checker",
                "description": "Keyword density checker: top 1-, 2- and 3-word phrases with counts and density for a URL or pasted text (stop words removed in English, French, Spanish and Arabic), and whether the main phrases appear in the title, H1 and description.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "text",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Text to analyse instead of a URL"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/image-alt-checker": {
            "get": {
                "operationId": "image_alt_checker",
                "summary": "Image Alt Text Checker",
                "description": "Image alt text and image SEO checker: every image on a page with its alt text, file size, format (JPEG/PNG vs WebP/AVIF), dimensions, lazy loading; flags missing alt, oversized files and layout-shift risks.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/link-analyzer": {
            "get": {
                "operationId": "link_analyzer",
                "summary": "Link Analyzer",
                "description": "Link analyzer: every internal and external link on a page with anchor text, rel attributes (nofollow, sponsored, ugc), empty anchors, duplicates and counts.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/readability-checker": {
            "get": {
                "operationId": "readability_checker",
                "summary": "Readability Checker",
                "description": "Readability checker: Flesch Reading Ease (English), Kandel-Moles (French), Fernández Huerta (Spanish), plus sentence length, long sentences, word length and passive-voice hints for a URL or pasted text.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "text",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Text to analyse instead of a URL"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/open-graph-checker": {
            "get": {
                "operationId": "open_graph_checker",
                "summary": "Open Graph Checker",
                "description": "Open Graph and Twitter Card checker: previews how a link looks when shared on Facebook, X/Twitter, LinkedIn, WhatsApp and Slack, validates og:image size and every tag.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/robots-txt-tester": {
            "get": {
                "operationId": "robots_txt_tester",
                "summary": "robots.txt Tester",
                "description": "robots.txt tester: fetches and parses robots.txt, tests any URL against Googlebot, Bingbot and AI bots with Google's longest-match rules, highlights the matching rule, syntax errors and sitemap lines. Also accepts pasted robots.txt rules.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/sitemap-validator": {
            "get": {
                "operationId": "sitemap_validator",
                "summary": "Sitemap Validator",
                "description": "XML sitemap validator: finds the sitemap (robots.txt, /sitemap.xml, sitemap index), validates XML and limits (50,000 URLs / 50 MB), lastmod dates, hreflang alternates, and status-checks a sample of listed URLs for 404s, redirects and noindex.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/sitemap-generator": {
            "get": {
                "operationId": "sitemap_generator",
                "summary": "Sitemap Generator",
                "description": "XML sitemap generator: crawls up to 300 pages of a site (respecting robots.txt, skipping noindex and non-canonical pages) and produces a downloadable sitemap.xml.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/redirect-checker": {
            "get": {
                "operationId": "redirect_checker",
                "summary": "Redirect Checker",
                "description": "Redirect checker: traces every hop of a redirect chain (301, 302, 307, 308, meta refresh) with status, location, timing; detects loops, long chains and http→https / www consolidation.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/http-header-checker": {
            "get": {
                "operationId": "http_header_checker",
                "summary": "HTTP Header Checker",
                "description": "HTTP header checker: shows the raw response headers (status, server, cache-control, content-type, encoding, X-Robots-Tag, link, HSTS) and explains the SEO-relevant ones.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/http-status-checker": {
            "get": {
                "operationId": "http_status_checker",
                "summary": "HTTP Status Checker",
                "description": "Bulk HTTP status code checker: paste up to 50 URLs and get each status code, redirect target and response time.",
                "parameters": [
                    {
                        "name": "urls",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "URLs separated by commas or new lines (max 50)"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/broken-link-checker": {
            "get": {
                "operationId": "broken_link_checker",
                "summary": "Broken Link Checker",
                "description": "Broken link checker: tests up to 200 links on a page (internal and external) for 404, 410, 5xx, DNS errors and redirects, with the anchor text of each broken link.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/canonical-checker": {
            "get": {
                "operationId": "canonical_checker",
                "summary": "Canonical Checker",
                "description": "Canonical checker: finds rel=canonical in HTML and HTTP headers, checks it is absolute, self-referencing or intentional, returns 200 and is indexable, and tests http/https and www/non-www variants redirect to one version.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/hreflang-checker": {
            "get": {
                "operationId": "hreflang_checker",
                "summary": "Hreflang Checker",
                "description": "Hreflang checker: lists hreflang alternates from HTML, HTTP headers, validates language/region codes, x-default, self-reference, and fetches each alternate to verify return links and canonicals.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/schema-validator": {
            "get": {
                "operationId": "schema_validator",
                "summary": "Schema Validator",
                "description": "Schema markup validator: extracts JSON-LD, microdata and RDFa types, validates JSON syntax and Google's required/recommended properties for Article, Product, Organization, LocalBusiness, BreadcrumbList, Event, Recipe, VideoObject, JobPosting, Review, SoftwareApplication; notes that FAQ (since 2026) and HowTo rich results are no longer shown by Google.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/page-speed-test": {
            "get": {
                "operationId": "page_speed_test",
                "summary": "Page Speed Test",
                "description": "Page speed test: server response time (TTFB), download time, HTML size and compression, HTTP version, number and weight of scripts, styles and images, render-blocking resources, caching and modern image formats; Core Web Vitals (LCP, INP, CLS) from Google PageSpeed Insights when available.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/mobile-friendly-test": {
            "get": {
                "operationId": "mobile_friendly_test",
                "summary": "Mobile-Friendly Test",
                "description": "Mobile-friendly test: viewport tag, responsive CSS (media queries), fixed-width elements, legible base font, tap-target hints, responsive images, plugins, interstitial hints — static checks since Google retired its own Mobile-Friendly Test in 2023.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/indexability-checker": {
            "get": {
                "operationId": "indexability_checker",
                "summary": "Indexability Checker",
                "description": "Indexability checker: answers \"can Google index this page?\" in one view: HTTP status, robots.txt rule, meta robots and X-Robots-Tag, canonical target, sitemap presence, redirect, nosnippet — with the blocking reason highlighted.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/website-technology-checker": {
            "get": {
                "operationId": "website_technology_checker",
                "summary": "CMS Checker",
                "description": "Website technology checker / CMS detector: detects the CMS (WordPress, Shopify, Wix, Squarespace, Webflow, Joomla, Drupal, Magento, Ghost…), frameworks (Next.js, Nuxt, React, Vue, Angular), CDNs, analytics and tag managers, servers and SEO plugins from HTML and headers.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/indexnow-submitter": {
            "get": {
                "operationId": "indexnow_submitter",
                "summary": "IndexNow Submitter",
                "description": "IndexNow submitter: generate an IndexNow key, verify the key file on your site and submit up to 1,000 URLs to Bing, Yandex, Naver, Seznam and Yep in one click (Google does not support IndexNow).",
                "parameters": [
                    {
                        "name": "urls",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "URLs separated by commas or new lines (max 50)"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/ssl-checker": {
            "get": {
                "operationId": "ssl_checker",
                "summary": "SSL Checker",
                "description": "SSL certificate checker: issuer, validity dates and days left, covered domains (SAN), key and signature, TLS version, and whether HTTP redirects to HTTPS.",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Domain, e.g. example.com"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/security-headers-checker": {
            "get": {
                "operationId": "security_headers_checker",
                "summary": "Security Headers Checker",
                "description": "Security headers checker: grades A+ to F for Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy and cookie flags, with copy-paste fixes for Apache, Nginx and Cloudflare.",
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Page URL, e.g. https://example.com/page"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/dns-lookup": {
            "get": {
                "operationId": "dns_lookup",
                "summary": "DNS Lookup",
                "description": "DNS lookup: A, AAAA, CNAME, MX, NS, TXT, SOA and CAA records, with SPF and DMARC parsed and checked for common mistakes.",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Domain, e.g. example.com"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        },
        "/api/v1/domain-age-checker": {
            "get": {
                "operationId": "domain_age_checker",
                "summary": "Domain Age Checker",
                "description": "Domain age and expiry checker (RDAP/WHOIS): registration date and age, expiry date and days left, registrar, status codes and name servers.",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Domain, e.g. example.com"
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "en",
                                "fr",
                                "es",
                                "ar"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool result",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid input or the page could not be fetched"
                    },
                    "429": {
                        "description": "Rate limit"
                    }
                }
            }
        }
    }
}