<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <!--
        Every <loc> here must return 200 to an ANONYMOUS request. A sitemap is a
        claim the server has to honour: a crawler that follows a URL into a
        login redirect either indexes the login page under that URL or drops the
        URL as uncrawlable, and either outcome makes the page uncitable.

        /about was removed. It is a member page - its main control
        generates an API key against POST /account/generate-key - and
        routes/home.js gates it with checkAuthenticated, so it answered 302 to
        /login for every crawler that ever followed this file.

        Measured anonymously, User-Agent: ClaudeBot, against the live
        server: / 200, /login 200, /mcp-demo 200, /docs/api 200, /pricing 200,
        /data-sources 200, /accessibility 200, /about 302 -> /login. Re-run that
        check before adding a URL here.

        ADDED 2026-09-17 (#361). The file honoured its own rule - everything
        listed was public - but the reverse was never checked, and two
        substantial public pages were missing:

        /mcp/docs          118 KB, every MCP tool and its schema, 200 to an
                           anonymous request. #361's whole argument is that the
                           MCP server is the thing we most want found, and the
                           one page that describes it in full was not offered to
                           a single crawler.
        /accessibility/fr  22 KB, a FINISHED French accessibility statement -
                           not a draft. Hive Data Center is a Quebec company, so
                           the French page is not a nice-to-have.

        DELIBERATELY STILL ABSENT, and this is a decision rather than an
        oversight:

        /terms, /terms/fr, /privacy, /privacy/fr  all 200 anonymously, and all
                           still titled "(Draft)" / "(Brouillon)". Submitting a
                           draft legal document for indexing is worse than not
                           indexing it - a crawler would cite it as this
                           product's actual terms. They go in when #188 and #596
                           finish the review, not before.
        /register          a form, not content. It answers 200 and is
                           crawlable; there is nothing on it to cite.
        /llms.txt, /llms-full.txt   already advertised to crawlers by
                           robots.txt, which is where that convention lives.
        /openapi.json, /mcp/openapi.json   300 KB machine specs, linked from
                           /docs/api. Not pages.

        scripts/verify-sitemap-public-surface.js now checks BOTH directions
        against the route definitions, so neither the /about mistake nor this
        one can recur silently.
    -->
    <url>
        <loc>https://bgpscout.io/</loc>
        <changefreq>weekly</changefreq>
        <priority>1.0</priority>
    </url>
    <url>
        <loc>https://bgpscout.io/login</loc>
        <changefreq>monthly</changefreq>
        <priority>0.8</priority>
    </url>
    <url>
        <loc>https://bgpscout.io/mcp-demo</loc>
        <changefreq>monthly</changefreq>
        <priority>0.7</priority>
    </url>
    <url>
        <loc>https://bgpscout.io/docs/api</loc>
        <changefreq>monthly</changefreq>
        <priority>0.7</priority>
    </url>
    <url>
        <loc>https://bgpscout.io/pricing</loc>
        <changefreq>monthly</changefreq>
        <priority>0.8</priority>
    </url>
    <url>
        <loc>https://bgpscout.io/data-sources</loc>
        <changefreq>monthly</changefreq>
        <priority>0.6</priority>
    </url>
    <url>
        <loc>https://bgpscout.io/accessibility</loc>
        <changefreq>monthly</changefreq>
        <priority>0.8</priority>
    </url>
    <url>
        <loc>https://bgpscout.io/accessibility/fr</loc>
        <changefreq>monthly</changefreq>
        <priority>0.8</priority>
    </url>
    <url>
        <loc>https://bgpscout.io/mcp/docs</loc>
        <changefreq>weekly</changefreq>
        <priority>0.9</priority>
    </url>
</urlset>
