{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "sitesfor.ai",
  "url": "https://sitesfor.ai",
  "description": "Websites for AI agents. Adapted to published standards. In code you own.",
  "operator": {
    "name": "Alexander Poplavsky Solutions",
    "country": "Poland",
    "contactEmail": "contact@poplavsky.solutions"
  },
  "skus": [
    {
      "id": "free-checker",
      "name": "Free Checker",
      "displayPrice": "$0",
      "priceUsdCents": null,
      "job": "Get your site's AI-readiness grade in seconds.",
      "features": [
        "Letter grade A–F, in seconds",
        "Tested against 43 published, vendor-neutral standards",
        "Where you stand vs. every other site we've scanned — globally and within your vertical",
        "Top 3 fixes that move your grade the most",
        "Evidence for every score — verifiable yourself with `curl`"
      ],
      "excludes": [
        "No JS-rendered DOM scan",
        "No live MCP / ACP / x402 handshake",
        "No persistent URL — the report exists in the browser tab"
      ],
      "acpDescription": "Free Checker scans a single URL against 43 published AI-agent-readiness signals and returns a deterministic letter grade, a global and vertical percentile, and the top-3 fixes in seconds."
    },
    {
      "id": "setup",
      "name": "Setup",
      "displayPrice": "from $5,000, one-time",
      "priceUsdCents": 500000,
      "job": "We adapt your site for AI agents. Code lands in your repo.",
      "features": [
        "Every failing Checker signal fixed — plus the signal coverage your site is missing",
        "A baseline citation report across ChatGPT, Claude, and Perplexity",
        "Server-log AI-crawler analysis installed; GA4 AI-source segmentation configured",
        "Multi-page template audits (catalog, blog, docs) where they apply",
        "Fixed-price scope agreed up front — no hourly surprises",
        "30 days of post-launch support and a validation re-scan documenting the score delta",
        "Works with whatever your site is built on (Next, Astro, Nuxt, Hugo, WordPress, custom)"
      ],
      "excludes": [
        "No greenfield builds in v1 (existing codebases only)",
        "No SaaS layer running on our infrastructure",
        "No self-serve checkout — scope is set on a discovery call"
      ],
      "acpDescription": "Setup is a one-time engagement that adapts an existing codebase for AI-agent readiness across all relevant signal groups (Discovery, Identity, Agent Contracts, Citation, Rendering, Hygiene, Commerce). It fixes every failing Checker signal, builds out missing coverage, installs server-log crawler analysis, configures GA4 AI-source segmentation, and delivers a baseline citation report and a before/after grade. Fixed-price, scope-based, deliverable is PRs into the customer repository. From $5,000. Contact via mailto or Calendly."
    },
    {
      "id": "retainer-monitor",
      "name": "Retainer — Monitor",
      "displayPrice": "$1,500/mo",
      "priceUsdCents": 150000,
      "job": "Keep the score from decaying as standards and your site change.",
      "features": [
        "Monthly client report — skimmable in 90 seconds",
        "Schema and standards maintenance as the published specs evolve",
        "50-prompt citation panel run monthly across ChatGPT, Claude, Perplexity",
        "Monthly Checker score delta — what shipped, what is queued",
        "~2 hours of consult"
      ],
      "excludes": [
        "No content production",
        "No off-site co-citation work"
      ],
      "acpDescription": "Retainer (Monitor tier) — $1,500/mo, 3-month minimum. Keeps a site from decaying after a Setup: monthly client report, schema/standards maintenance, a 50-prompt monthly citation panel, and a monthly Checker score delta. Sold after a Setup engagement."
    },
    {
      "id": "retainer-grow",
      "name": "Retainer — Grow",
      "displayPrice": "$3,500/mo",
      "priceUsdCents": 350000,
      "job": "Actively move the citation needle — the tier most clients pick.",
      "features": [
        "Everything in Monitor",
        "Biweekly reporting",
        "150-prompt citation panel run weekly",
        "~4 pages/month of content and entity work",
        "Server-log AI-crawler analysis with action items",
        "~4 hours of consult"
      ],
      "excludes": [
        "No off-site co-citation campaign",
        "No weekly call"
      ],
      "acpDescription": "Retainer (Grow tier) — $3,500/mo, 3-month minimum. The hero tier. Everything in Monitor plus biweekly reporting, a 150-prompt weekly citation panel, ~4 pages/month of content and entity work, and server-log crawler analysis with action items."
    },
    {
      "id": "retainer-dominate",
      "name": "Retainer — Dominate",
      "displayPrice": "$7,500/mo",
      "priceUsdCents": 750000,
      "job": "Full-court press on AI-agent visibility in your category.",
      "features": [
        "Everything in Grow",
        "Weekly reporting",
        "300+ prompt citation panel run daily",
        "Content, entity, and off-site co-citation work",
        "Weekly call"
      ],
      "excludes": [
        "No greenfield builds",
        "No SaaS layer on our infrastructure"
      ],
      "acpDescription": "Retainer (Dominate tier) — $7,500/mo, 3-month minimum. Everything in Grow plus weekly reporting, a 300+ prompt daily citation panel, content/entity/off-site co-citation work, and a weekly call."
    }
  ],
  "standards": [
    {
      "name": "schema.org",
      "author": "W3C / WHATWG community",
      "url": "https://schema.org/",
      "lastChecked": "2026-06-15"
    },
    {
      "name": "JSON-LD",
      "author": "W3C",
      "url": "https://www.w3.org/TR/json-ld11/",
      "lastChecked": "2026-06-15"
    },
    {
      "name": "schema.org Offer",
      "author": "schema.org",
      "url": "https://schema.org/Offer",
      "lastChecked": "2026-06-15"
    },
    {
      "name": "llms.txt",
      "author": "llmstxt.org",
      "url": "https://llmstxt.org/",
      "lastChecked": "2026-06-15"
    },
    {
      "name": "OpenAPI 3.1",
      "author": "OpenAPI Initiative",
      "url": "https://spec.openapis.org/oas/v3.1.0",
      "lastChecked": "2026-06-15"
    },
    {
      "name": "MCP",
      "author": "Anthropic / community",
      "url": "https://modelcontextprotocol.io/",
      "lastChecked": "2026-06-15"
    },
    {
      "name": "IndexNow",
      "author": "Microsoft + community",
      "url": "https://www.indexnow.org/",
      "lastChecked": "2026-06-15"
    },
    {
      "name": "robots.txt",
      "author": "IETF / community",
      "url": "https://datatracker.ietf.org/doc/html/rfc9309",
      "lastChecked": "2026-06-15"
    },
    {
      "name": "ACP",
      "author": "OpenAI + Stripe",
      "url": "https://github.com/agentic-commerce-protocol/agentic-commerce-protocol",
      "lastChecked": "2026-06-15"
    },
    {
      "name": "AP2",
      "author": "Google + community",
      "url": "https://ap2-protocol.org/",
      "lastChecked": "2026-06-15"
    },
    {
      "name": "x402",
      "author": "Coinbase + community",
      "url": "https://www.x402.org/",
      "lastChecked": "2026-06-15"
    }
  ],
  "comparison": {
    "rows": [
      {
        "axis": "Lock-in",
        "studio": "Code in your repo. Cancel anytime — the work survives.",
        "saas": "Runtime layer served from vendor infrastructure. Cancel and it disappears."
      },
      {
        "axis": "Third-party JS on your domain",
        "studio": "None. Zero third-party scripts — no checkout, no analytics, no CDN fonts.",
        "saas": "Tracking script + dashboard auth iframe required."
      },
      {
        "axis": "Code ownership",
        "studio": "You own the PRs after the engagement. No license, no SaaS layer.",
        "saas": "Methodology is proprietary. The \"AI layer\" is not in your repo."
      },
      {
        "axis": "Methodology transparency",
        "studio": "Standards-only: schema.org, llms.txt, OpenAPI 3.1, MCP, ACP, AP2, x402, ...",
        "saas": "Closed dashboard. Trademarked \"AI Position Intelligence™\"-style scoring."
      },
      {
        "axis": "Recommendations",
        "studio": "Deterministic — top-3 fixes from a fixed table, not LLM-generated. Never contradicts the evidence panel.",
        "saas": "LLM-generated. Frequently recommends fixes the evidence panel shows are already in place."
      },
      {
        "axis": "Transactability (buyer agents)",
        "studio": "Commerce group graded: ACP feed, AP2 mandates, x402 challenge, schema.org Offer.",
        "saas": "AEO discoverability only. Buyer-agent commerce layer ungraded."
      },
      {
        "axis": "How you pay",
        "studio": "A one-time Setup, then an optional monthly retainer you can cancel after 3 months.",
        "saas": "An indefinite subscription billed from day one. Stop paying and the layer goes dark."
      }
    ],
    "footer": "A studio, not a platform. Your repo, not our domain. A retainer you can cancel, not a subscription you cannot."
  },
  "signals": [
    {
      "id": 1,
      "group": "discovery",
      "weight": 2,
      "name": "/robots.txt exists",
      "preview": false
    },
    {
      "id": 2,
      "group": "discovery",
      "weight": 5,
      "name": "AI bot policy explicit per UA (GPTBot, ClaudeBot, OAI-SearchBot, Google-Extended, PerplexityBot, Bingbot, Applebot-Extended, CCBot)",
      "preview": false
    },
    {
      "id": 3,
      "group": "discovery",
      "weight": 4,
      "name": "/sitemap.xml valid",
      "preview": false
    },
    {
      "id": 5,
      "group": "discovery",
      "weight": 3,
      "name": "/llms.txt parseable",
      "preview": false
    },
    {
      "id": 6,
      "group": "discovery",
      "weight": 1,
      "name": "/llms-full.txt extended summary",
      "preview": false
    },
    {
      "id": 7,
      "group": "discovery",
      "weight": 3,
      "name": "IndexNow key file present",
      "preview": false
    },
    {
      "id": 8,
      "group": "discovery",
      "weight": 2,
      "name": "Markdown variant for AI UAs (<route>.md) on every route",
      "preview": false
    },
    {
      "id": 9,
      "group": "identity",
      "weight": 6,
      "name": "JSON-LD parses cleanly via ajv",
      "preview": false
    },
    {
      "id": 10,
      "group": "identity",
      "weight": 5,
      "name": "Organization complete",
      "preview": false
    },
    {
      "id": 11,
      "group": "identity",
      "weight": 2,
      "name": "Person (founder) linked from Organization.founder",
      "preview": false
    },
    {
      "id": 12,
      "group": "identity",
      "weight": 3,
      "name": "Reciprocal sameAs verification cross-domain",
      "preview": false
    },
    {
      "id": 13,
      "group": "identity",
      "weight": 2,
      "name": "WebSite schema present",
      "preview": false
    },
    {
      "id": 14,
      "group": "identity",
      "weight": 2,
      "name": "BreadcrumbList on inner pages",
      "preview": false
    },
    {
      "id": 15,
      "group": "identity",
      "weight": 1,
      "name": "OG + Twitter card present",
      "preview": false
    },
    {
      "id": 16,
      "group": "identity",
      "weight": 1,
      "name": "Favicon SVG variant + hreflang where multilingual",
      "preview": false
    },
    {
      "id": 18,
      "group": "agent-contracts",
      "weight": 5,
      "name": "OpenAPI 3.1 document valid",
      "preview": false
    },
    {
      "id": 21,
      "group": "agent-contracts",
      "weight": 5,
      "name": "MCP discoverable at /.well-known/mcp.json",
      "preview": false
    },
    {
      "id": 22,
      "group": "agent-contracts",
      "weight": 6,
      "name": "MCP initialize handshake completes + tools/list returns ≥1 tool",
      "preview": false
    },
    {
      "id": 23,
      "group": "agent-contracts",
      "weight": 2,
      "name": "OpenAPI server URLs respond",
      "preview": false
    },
    {
      "id": 24,
      "group": "rendering",
      "weight": 1,
      "name": "SSR detection — raw fetch vs. headless DOM diff acceptable",
      "preview": false
    },
    {
      "id": 25,
      "group": "rendering",
      "weight": 3,
      "name": "Canonical consistent",
      "preview": false
    },
    {
      "id": 26,
      "group": "rendering",
      "weight": 1,
      "name": "Strong ETag / Last-Modified headers",
      "preview": false
    },
    {
      "id": 27,
      "group": "rendering",
      "weight": 1,
      "name": "Brotli on machine-readable resources",
      "preview": false
    },
    {
      "id": 28,
      "group": "rendering",
      "weight": 1,
      "name": "HTTP/2 or HTTP/3",
      "preview": false
    },
    {
      "id": 29,
      "group": "rendering",
      "weight": 1,
      "name": "No JS-required navigation",
      "preview": false
    },
    {
      "id": 30,
      "group": "citation",
      "weight": 1,
      "name": "Definitional sentence density",
      "preview": false
    },
    {
      "id": 31,
      "group": "citation",
      "weight": 1,
      "name": "Stable claim anchors",
      "preview": false
    },
    {
      "id": 32,
      "group": "citation",
      "weight": 1,
      "name": "Fact card block",
      "preview": false
    },
    {
      "id": 33,
      "group": "citation",
      "weight": 1,
      "name": "Heading hierarchy clean",
      "preview": false
    },
    {
      "id": 34,
      "group": "citation",
      "weight": 1,
      "name": "Image alt density ≥85%",
      "preview": false
    },
    {
      "id": 35,
      "group": "citation",
      "weight": 1,
      "name": "FAQPage schema if FAQ detected",
      "preview": false
    },
    {
      "id": 36,
      "group": "citation",
      "weight": 1,
      "name": "Article + dateline on blog",
      "preview": false
    },
    {
      "id": 37,
      "group": "citation",
      "weight": 1,
      "name": "Statistics tables annotated",
      "preview": false
    },
    {
      "id": 38,
      "group": "hygiene",
      "weight": 4,
      "name": "HTTPS + HSTS, no mixed content",
      "preview": false
    },
    {
      "id": 39,
      "group": "hygiene",
      "weight": 2,
      "name": "Last-Modified within 12 months",
      "preview": false
    },
    {
      "id": 40,
      "group": "hygiene",
      "weight": 2,
      "name": "No noindex on root + privacy policy present",
      "preview": false
    },
    {
      "id": 41,
      "group": "hygiene",
      "weight": 2,
      "name": "security.txt present",
      "preview": false
    },
    {
      "id": 42,
      "group": "hygiene",
      "weight": 2,
      "name": "Robots.txt does not unintentionally block AI bots needed for discoverability",
      "preview": false
    },
    {
      "id": 43,
      "group": "commerce",
      "weight": 2,
      "name": "ACP feed valid (/sitesfor.acp.json or claimed in OpenAPI servers)",
      "preview": false
    },
    {
      "id": 44,
      "group": "commerce",
      "weight": 2,
      "name": "ACP checkout endpoint reachable + capability-negotiated",
      "preview": false
    },
    {
      "id": 45,
      "group": "commerce",
      "weight": 2,
      "name": "AP2 mandate-verifier endpoint resolves a test Intent Mandate",
      "preview": false
    },
    {
      "id": 46,
      "group": "commerce",
      "weight": 2,
      "name": "x402 challenge on at least one paid endpoint",
      "preview": false
    },
    {
      "id": 47,
      "group": "commerce",
      "weight": 4,
      "name": "schema.org Offer with price/currency/availability on commercial pages",
      "preview": false
    },
    {
      "id": 49,
      "group": "commerce",
      "weight": 1,
      "name": "WebMCP manifest present (W3C Web Machine Learning CG draft)",
      "preview": true
    },
    {
      "id": 49,
      "group": "commerce",
      "weight": 1,
      "name": "Google WebMCP manifest present",
      "preview": true
    }
  ],
  "posts": [
    {
      "url": "https://sitesfor.ai/blog/ai-readiness-score-is-not-enough",
      "title": "An AI-readiness score is not the point. Fixing it is.",
      "description": "Free AI-readiness scanners are everywhere now. We scanned 97 leading B2B SaaS sites — 84 of them (87%) scored an F. The score was never the hard part. Shipping the fix into your codebase is.",
      "author": "Alexander Poplavsky",
      "datePublished": "2026-06-07T00:00:00.000Z",
      "dateModified": "2026-06-07T00:00:00.000Z",
      "tags": [
        "essay"
      ],
      "wordCount": 780
    },
    {
      "url": "https://sitesfor.ai/blog/build-time-vs-runtime-jsonld",
      "title": "Build-time JSON-LD vs. runtime JSON-LD",
      "description": "Three failure modes of hand-rolled structured data — and the build-time fix that ships in your repo, not someone else's.",
      "author": "Alexander Poplavsky",
      "datePublished": "2026-05-14T00:00:00.000Z",
      "dateModified": "2026-05-25T00:00:00.000Z",
      "tags": [
        "essay"
      ],
      "wordCount": 1750
    },
    {
      "url": "https://sitesfor.ai/blog/studio-not-platform",
      "title": "Studio, not platform",
      "description": "Why the GEO layer should ship into the customer's repository, not run on someone else's domain — and why a retainer can stay on the right side of that line.",
      "author": "Alexander Poplavsky",
      "datePublished": "2026-05-13T00:00:00.000Z",
      "dateModified": "2026-05-25T00:00:00.000Z",
      "tags": [
        "essay"
      ],
      "wordCount": 1300
    },
    {
      "url": "https://sitesfor.ai/blog/what-does-ai-agent-ready-mean",
      "title": "What does \"AI-agent-ready\" mean?",
      "description": "A website is AI-agent-ready when crawlers, assistants, and buyer agents can each use it fluently against published, vendor-neutral standards.",
      "author": "Alexander Poplavsky",
      "datePublished": "2026-05-13T00:00:00.000Z",
      "dateModified": "2026-05-25T00:00:00.000Z",
      "tags": [
        "explainer"
      ],
      "wordCount": 1850
    }
  ],
  "faq": [
    {
      "question": "What is \"AI-agent readiness\"?",
      "answer": "It is the property of a website that allows three distinct kinds of\nsoftware readers — crawlers, assistants, and buyer agents — to use it\nfluently against published, vendor-neutral standards. The Checker grades\na catalog of deterministic signals across seven groups and returns a\nletter grade plus a global percentile."
    },
    {
      "question": "How is this different from SEO?",
      "answer": "SEO grades pages against ranking signals for Google's index. AI-agent\nreadiness grades pages against the standards three different software\naudiences need: crawlers (`/robots.txt`, `/llms.txt`, sitemaps), assistants\n(JSON-LD identity, OpenAPI 3.1, MCP handshake), and buyer agents (ACP, AP2,\nx402, schema.org Offer). The overlap with SEO is in the Hygiene group and\nparts of Citation — perhaps a third of the catalogue. The rest is new\nsurface area."
    },
    {
      "question": "What does a Setup engagement include?",
      "answer": "Setup is the studio's one-time engagement. We adapt your site so AI agents\n— crawlers, assistants, and buyer agents — can use it fluently. Scope is\nagreed on the discovery call; the engagement fixes every failing Checker\nsignal and builds out the signal coverage your site is missing (Discovery,\nIdentity, Agent Contracts, Citation, Rendering, Hygiene, Commerce),\nincluding multi-page template audits (catalog, blog, docs) where they\napply. It also includes a baseline citation report, server-log crawler\nanalysis installed, GA4 AI-source segmentation configured, and a\nbefore/after Checker grade. Fixed-price scope agreed up front, 30 days of\npost-launch support, and a validation re-scan after launch. Deliverables\nare pull requests or commits into your repository — the code is yours\nafter the engagement, no runtime dependency on the studio. Afterwards, an\noptional monthly Retainer keeps the score from decaying as the standards\nmove. The studio adapts existing websites only in v1 (no greenfield\nbuilds) and works with whatever your site is built on (Next, Astro, Nuxt,\nHugo, WordPress, custom)."
    },
    {
      "question": "Is the AI-bot markdown variant cloaking?",
      "answer": "No. Cloaking is serving substantively different content to bots versus\nhumans to manipulate ranking. We serve the same content to both, in two\nencodings: HTML for humans, a denser markdown variant for AI bots that\nbenefit from it. The text, claims, and structure are identical; only the\nencoding differs. This is documented on `/policy.txt`, and the markdown\nvariant is grepped on every build to verify content parity."
    },
    {
      "question": "Do you grade on a curve, or compare me against my industry?",
      "answer": "No curve. The Checker grades against universal published standards, so your\nletter grade is absolute — it never softens because your industry's average\nis also low. But the report does show you a map. Alongside the absolute\ngrade you get a global percentile against the whole corpus, a vertical\npercentile against your self-classified peers (\"among SaaS sites, your 67 is\nthe median\"), and a per-signal corpus-wide pass rate. The vertical number is\na sales and prioritisation map, not a comfort blanket: it tells you how far\nthe realistic frontier is, while the per-signal rarity tells you which fixes\nare table-stakes and which are genuine competitive moats."
    },
    {
      "question": "What data do you store about my site?",
      "answer": "One row per scan in a SQLite corpus on a single VPS — the URL, scan mode,\nscore, signal results, and timestamp. No PII (websites are public\ninformation; the privacy framework that applies to user data does not\napply to scan inputs). No cookies set on visitors. Reports themselves are\nephemeral — returned inline as the HTTP response body and discarded after\nthe request."
    },
    {
      "question": "Can AI agents call the Checker themselves?",
      "answer": "Yes. The site is itself agent-callable. The Checker is exposed as a tool\nvia an MCP server at `/.well-known/mcp.json` and `/api/mcp`. The studio's\ncatalogue is published as an ACP feed at `/sitesfor.acp.json` so buyer\nagents can discover purchasable SKUs and complete a Stripe Checkout flow\non a user's behalf. The reference implementation is the proof."
    }
  ],
  "machineReadable": {
    "llmsTxt": "https://sitesfor.ai/llms.txt",
    "llmsFullTxt": "https://sitesfor.ai/llms-full.txt",
    "siteTwin": "https://sitesfor.ai/sitesfor.content.json",
    "openApi": "https://sitesfor.ai/sitesfor.openapi.json",
    "acp": "https://sitesfor.ai/sitesfor.acp.json",
    "mcp": "https://sitesfor.ai/.well-known/mcp.json",
    "sitemap": "https://sitesfor.ai/sitemap.xml",
    "aiSitemap": "https://sitesfor.ai/sitemap-ai.xml",
    "robots": "https://sitesfor.ai/robots.txt",
    "securityTxt": "https://sitesfor.ai/.well-known/security.txt"
  },
  "generatedAt": "2026-06-23T20:21:50.942Z"
}