{
    "ok": true,
    "url": "https://gosuslugi.ru/",
    "final_url": "https://gosuslugi.ru/",
    "product_url": null,
    "product_auto": false,
    "checked_at": "2026-10-24T12:00:31+00:00",
    "duration_s": 3.8,
    "engine": "agentreadyscan-check/1.3",
    "level": 0,
    "signature": {
        "title": "Портал государственных услуг Российской Федерации",
        "h1": "",
        "desc": "Проще, чем кажется",
        "site": "",
        "schema": [],
        "nav": [
            "госуслуги сейчас откроются"
        ],
        "paths": [],
        "words": [],
        "cart": false,
        "has_product": false,
        "product_urls": 0,
        "type": "undetermined"
    },
    "industry": {
        "id": "gov",
        "label": "Госсектор и крупные корпорации",
        "score": 14,
        "second": 0,
        "confident": true,
        "basis": "меню: «госуслуг»; название: «государственн»",
        "v": 2
    },
    "site": {
        "engine": "custom",
        "has_prices": false,
        "product_urls": 0
    },
    "tokens": {
        "html_bytes": 9376,
        "html_tokens": 2590,
        "text_chars": 82,
        "text_tokens": 35,
        "saving_pct": 99,
        "note": "Оценка: у каждой модели свой токенизатор, точное число отличается примерно на пятую часть."
    },
    "well_known": {
        "mcp": {
            "path": "/.well-known/mcp.json",
            "name": "Карточка MCP-сервера",
            "why": "Говорит агенту, что у сайта есть MCP-сервер и какие у него инструменты. Черновик SEP-1649.",
            "found": false
        },
        "a2a": {
            "path": "/.well-known/agent.json",
            "name": "Карточка агента A2A",
            "why": "Описание собственного агента сайта для протокола agent-to-agent (A2A v1.0).",
            "found": false
        },
        "oauth_as": {
            "path": "/.well-known/oauth-authorization-server",
            "name": "OAuth Discovery (RFC 8414)",
            "why": "Где агенту получать токен доступа, если часть данных закрыта.",
            "found": false
        },
        "oauth_pr": {
            "path": "/.well-known/oauth-protected-resource",
            "name": "OAuth Protected Resource (RFC 9728)",
            "why": "Какой сервер авторизации защищает ваш API (RFC 9728).",
            "found": false
        },
        "api_cat": {
            "path": "/.well-known/api-catalog",
            "name": "Каталог API (RFC 9727)",
            "why": "Один адрес со списком всех ваших API — агенту не нужно их угадывать.",
            "found": true
        },
        "ucp": {
            "path": "/.well-known/ucp",
            "name": "Профиль UCP",
            "found": false,
            "why": "Описание сценария покупки или заявки для агента. Один из способов закрыть уровень 4."
        },
        "openapi": {
            "path": "/openapi.json",
            "name": "Описание API (OpenAPI)",
            "found": false,
            "why": "Машинное описание API: агент понимает, какие запросы можно делать. Входит в требования уровня 3."
        }
    },
    "can_ai_buy": "Нет: Данных нет. В исходном HTML почти нет текста: содержимое появляется скриптами, а агент их не выполняет.",
    "next_level": 1,
    "type": {
        "id": "undetermined",
        "name_ru": "Не определена",
        "declared": "auto",
        "detected": "undetermined",
        "basis": [
            "на проверенных страницах почти нет текста (около 82 знаков): возможно, содержимое подгружается скриптом"
        ],
        "changed": false,
        "note": "",
        "pages_sampled": 0,
        "text_chars": 82
    },
    "verdict": {
        "label": "Что ИИ понимает про ваш сайт",
        "answer": "Нет",
        "text": "Данных нет. В исходном HTML почти нет текста: содержимое появляется скриптами, а агент их не выполняет."
    },
    "scale": {
        "version": "1.1",
        "ceiling": 1,
        "calibration": null
    },
    "blockers": [
        "f.sitemap",
        "j.present",
        "j.org"
    ],
    "summary": {
        "crit": 6,
        "high": 9,
        "med": 7,
        "pass": 16,
        "total": 38
    },
    "checks": [
        {
            "id": "s.https",
            "group": "server",
            "title": "Сайт работает по HTTPS",
            "prio": "crit",
            "status": "pass",
            "detail": "HTTPS, сертификат действителен.",
            "fix": ""
        },
        {
            "id": "s.status",
            "group": "server",
            "title": "Главная отвечает 200",
            "prio": "crit",
            "status": "pass",
            "detail": "Код ответа: 200.",
            "fix": ""
        },
        {
            "id": "s.redirects",
            "group": "server",
            "title": "Не больше одного редиректа, только 301",
            "prio": "crit",
            "status": "pass",
            "detail": "Редиректов нет.",
            "fix": ""
        },
        {
            "id": "s.noindex",
            "group": "server",
            "title": "Нет запрета индексации (noindex)",
            "prio": "crit",
            "status": "pass",
            "detail": "Запретов нет.",
            "fix": ""
        },
        {
            "id": "s.waf",
            "group": "server",
            "title": "Файрвол не блокирует ИИ-ботов",
            "prio": "crit",
            "status": "pass",
            "detail": "С User-Agent GPTBot и ClaudeBot главная отвечает 200 / 200. Приблизительно: настоящих ботов распознают ещё и по IP.",
            "fix": ""
        },
        {
            "id": "s.soft404",
            "group": "server",
            "title": "Несуществующая страница отвечает 404",
            "prio": "high",
            "status": "fail",
            "detail": "Несуществующий адрес отвечает 200 — «мягкий 404». Агент примет пустую страницу за настоящую.",
            "fix": "Настройте отдачу кода 404 для несуществующих адресов."
        },
        {
            "id": "s.ctype",
            "group": "server",
            "title": "Content-Type text/html и UTF-8",
            "prio": "high",
            "status": "pass",
            "detail": "text/html",
            "fix": ""
        },
        {
            "id": "s.ttfb",
            "group": "server",
            "title": "Время до первого байта до 600 мс",
            "prio": "high",
            "status": "pass",
            "detail": "TTFB 9 мс (из дата-центра в России, один замер).",
            "fix": ""
        },
        {
            "id": "f.robots",
            "group": "files",
            "title": "Файл robots.txt",
            "prio": "crit",
            "status": "pass",
            "detail": "Найден, групп правил: 3.",
            "fix": ""
        },
        {
            "id": "f.robots_ai",
            "group": "files",
            "title": "robots.txt пускает ИИ-ботов",
            "prio": "crit",
            "status": "pass",
            "detail": "GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, CCBot — разрешены.",
            "fix": ""
        },
        {
            "id": "f.robots_yandex",
            "group": "files",
            "title": "robots.txt пускает YandexBot и YandexAdditional",
            "prio": "crit",
            "status": "pass",
            "detail": "Разрешены. Подтверждение в Яндекс.Вебмастере снаружи не видно — проверьте сами.",
            "fix": ""
        },
        {
            "id": "f.robots_sitemap",
            "group": "files",
            "title": "В robots.txt есть строка Sitemap",
            "prio": "high",
            "status": "pass",
            "detail": "Sitemap: https:/www.gosuslugi.ru/sitemap/all-sitemap.xml",
            "fix": ""
        },
        {
            "id": "f.sitemap",
            "group": "files",
            "title": "sitemap.xml с реальными датами lastmod",
            "prio": "crit",
            "status": "fail",
            "detail": "Файл не разбирается как XML-карта сайта.",
            "fix": "Проверьте sitemap.xml валидатором."
        },
        {
            "id": "f.llms",
            "group": "files",
            "title": "Файл /llms.txt",
            "prio": "high",
            "status": "fail",
            "detail": "Вместо файла сервер отдаёт HTML-страницу.",
            "fix": "Создайте llms.txt: кто вы, что продаёте, ссылки на ключевые разделы и данные. Это соглашение, а не стандарт, но пункт дешёвый."
        },
        {
            "id": "f.llms_full",
            "group": "files",
            "title": "Файл /llms-full.txt",
            "prio": "high",
            "status": "warn",
            "detail": "Вместо файла сервер отдаёт HTML-страницу.",
            "fix": "Выложите полный Markdown-каталог: линейки, характеристики, применение."
        },
        {
            "id": "f.agents",
            "group": "files",
            "title": "Инструкция для агентов /AGENTS.md",
            "prio": "med",
            "status": "warn",
            "detail": "Вместо файла сервер отдаёт HTML-страницу.",
            "fix": "Опишите точки входа, как получить цену, единицы измерения и оговорки о достоверности."
        },
        {
            "id": "f.sitemap_md",
            "group": "files",
            "title": "Markdown-карта сайта /sitemap.md",
            "prio": "med",
            "status": "warn",
            "detail": "Вместо файла сервер отдаёт HTML-страницу.",
            "fix": "Выложите карту сайта в Markdown для агентов."
        },
        {
            "id": "f.yml",
            "group": "files",
            "title": "Товарный фид YML для Яндекс Товаров",
            "prio": "high",
            "status": "na",
            "detail": "Товаров на сайте не найдено — фид не требуется.",
            "fix": ""
        },
        {
            "id": "f.ucp",
            "group": "files",
            "title": "Профиль /.well-known/ucp",
            "prio": "med",
            "status": "na",
            "detail": "Нет. Нужен только при онлайн-оплате на сайте.",
            "fix": ""
        },
        {
            "id": "h.lang",
            "group": "html",
            "title": "Атрибут lang у <html>",
            "prio": "crit",
            "status": "pass",
            "detail": "lang=\"ru\"",
            "fix": ""
        },
        {
            "id": "h.title",
            "group": "html",
            "title": "Уникальный <title> до ~60 символов",
            "prio": "crit",
            "status": "pass",
            "detail": "«Портал государственных услуг Российской Федерации» — 49 симв.",
            "fix": ""
        },
        {
            "id": "h.canonical",
            "group": "html",
            "title": "rel=\"canonical\"",
            "prio": "crit",
            "status": "fail",
            "detail": "Не найден.",
            "fix": "Добавьте <link rel=\"canonical\"> на каждую страницу."
        },
        {
            "id": "h.desc",
            "group": "html",
            "title": "meta description 120–160 символов",
            "prio": "high",
            "status": "fail",
            "detail": "Нет.",
            "fix": "Опишите страницу в 120–160 символах."
        },
        {
            "id": "h.og",
            "group": "html",
            "title": "Open Graph: 6 основных тегов",
            "prio": "high",
            "status": "pass",
            "detail": "Найдено 6 из 6: og:title, og:description, og:image, og:url, og:type, og:locale.",
            "fix": ""
        },
        {
            "id": "h.h1",
            "group": "html",
            "title": "Ровно один <h1>",
            "prio": "high",
            "status": "fail",
            "detail": "Найдено: 0.",
            "fix": "На странице должен быть один главный заголовок."
        },
        {
            "id": "h.headings",
            "group": "html",
            "title": "Иерархия h2–h3 (не меньше 3)",
            "prio": "high",
            "status": "warn",
            "detail": "Заголовков h2–h3: 1.",
            "fix": "Разбейте содержание на разделы с заголовками."
        },
        {
            "id": "h.semantic",
            "group": "html",
            "title": "Семантические теги main, header, nav, footer",
            "prio": "high",
            "status": "warn",
            "detail": "Есть: main, header.",
            "fix": "Разметьте страницу семантическими тегами."
        },
        {
            "id": "h.alt",
            "group": "html",
            "title": "У изображений есть alt",
            "prio": "high",
            "status": "pass",
            "detail": "Изображений в HTML нет.",
            "fix": ""
        },
        {
            "id": "h.ratio",
            "group": "html",
            "title": "Доля текста в HTML больше 15%",
            "prio": "med",
            "status": "warn",
            "detail": "Текст — 1,6% от объёма HTML.",
            "fix": "Страница — в основном код. Проверьте, что содержание есть в HTML, а не подгружается скриптами."
        },
        {
            "id": "j.present",
            "group": "jsonld",
            "title": "JSON-LD есть в исходном HTML",
            "prio": "crit",
            "status": "fail",
            "detail": "Разметки JSON-LD в HTML первого ответа нет. Если она добавляется скриптом — бот её не увидит.",
            "fix": "Выводите <script type=\"application/ld+json\"> на сервере."
        },
        {
            "id": "j.nomicro",
            "group": "jsonld",
            "title": "Только JSON-LD, без Microdata и RDFa",
            "prio": "crit",
            "status": "pass",
            "detail": "Лишней разметки нет.",
            "fix": ""
        },
        {
            "id": "j.org",
            "group": "jsonld",
            "title": "Organization с реквизитами",
            "prio": "crit",
            "status": "fail",
            "detail": "Сущности Organization нет.",
            "fix": "Опишите компанию: legalName, logo, address, contactPoint, sameAs, ИНН и ОГРН через identifier."
        },
        {
            "id": "j.ids",
            "group": "jsonld",
            "title": "Связный граф через @id",
            "prio": "crit",
            "status": "na",
            "detail": "Сущности не связаны через @id.",
            "fix": "Дайте сущностям @id и ссылайтесь на них вместо повторов."
        },
        {
            "id": "j.product",
            "group": "jsonld",
            "title": "Товары или услуги размечены (Product / Service)",
            "prio": "crit",
            "status": "warn",
            "detail": "Ни на главной, ни на страницах из карты сайта нет разметки Product/Service. Если карточки есть — укажите одну вручную.",
            "fix": "Разметьте карточки товаров типом Product с Offer."
        },
        {
            "id": "j.service",
            "group": "jsonld",
            "title": "Услуги размечены (Service)",
            "prio": "crit",
            "status": "na",
            "detail": "К группе «Не определена» не применимо.",
            "fix": ""
        },
        {
            "id": "j.offer",
            "group": "jsonld",
            "title": "Цена в Offer, без нулевых цен",
            "prio": "crit",
            "status": "na",
            "detail": "Товаров с Offer не найдено.",
            "fix": "Добавьте Offer с price и priceCurrency или QuoteAction для товаров под заказ."
        },
        {
            "id": "j.avail",
            "group": "jsonld",
            "title": "Наличие через availability",
            "prio": "crit",
            "status": "na",
            "detail": "Предложений по товарам нет.",
            "fix": ""
        },
        {
            "id": "j.props",
            "group": "jsonld",
            "title": "Характеристики: additionalProperty с unitCode",
            "prio": "crit",
            "status": "na",
            "detail": "Проверяется на странице товара.",
            "fix": "Каждый параметр — PropertyValue: полное имя, число в value, unitCode по UN/CEFACT (MMT, KGM, CEL…)."
        },
        {
            "id": "j.action",
            "group": "jsonld",
            "title": "potentialAction: что агент может сделать",
            "prio": "crit",
            "status": "warn",
            "detail": "Действий не объявлено.",
            "fix": "Объявите BuyAction, QuoteAction или SearchAction с адресом."
        },
        {
            "id": "j.validuntil",
            "group": "jsonld",
            "title": "Срок действия цены priceValidUntil",
            "prio": "med",
            "status": "na",
            "detail": "Цен на товары нет.",
            "fix": ""
        },
        {
            "id": "j.terms",
            "group": "jsonld",
            "title": "Условия возврата и доставки в разметке",
            "prio": "high",
            "status": "na",
            "detail": "Товаров с ценой нет — не требуется.",
            "fix": ""
        },
        {
            "id": "j.faq",
            "group": "jsonld",
            "title": "FAQ, глоссарий или инструкции размечены",
            "prio": "med",
            "status": "warn",
            "detail": "Не найдено на проверенных страницах.",
            "fix": "Разметьте FAQ, глоссарий терминов (DefinedTermSet) и инструкции."
        },
        {
            "id": "j.article",
            "group": "jsonld",
            "title": "Материалы размечены (Article)",
            "prio": "crit",
            "status": "na",
            "detail": "К группе «Не определена» не применимо.",
            "fix": ""
        },
        {
            "id": "j.author",
            "group": "jsonld",
            "title": "Автор указан со ссылкой",
            "prio": "high",
            "status": "na",
            "detail": "К группе «Не определена» не применимо.",
            "fix": ""
        },
        {
            "id": "a.md_link",
            "group": "api",
            "title": "Markdown-зеркало страницы (link rel=\"alternate\")",
            "prio": "med",
            "status": "warn",
            "detail": "Ссылки на Markdown-версию нет.",
            "fix": "Добавьте <link rel=\"alternate\" type=\"text/markdown\" href=\"…\">."
        },
        {
            "id": "a.md_accept",
            "group": "api",
            "title": "Ответ в Markdown по Accept: text/markdown",
            "prio": "med",
            "status": "warn",
            "detail": "На запрос с Accept: text/markdown сервер ответил text/html.",
            "fix": "Отдавайте Markdown-версию по заголовку Accept (content negotiation)."
        },
        {
            "id": "a.openapi",
            "group": "api",
            "title": "Описание API (OpenAPI)",
            "prio": "med",
            "status": "warn",
            "detail": "Открытого API с описанием OpenAPI не найдено.",
            "fix": "Опубликуйте JSON-API товаров и цены с OpenAPI-схемой и сошлитесь на неё из AGENTS.md."
        },
        {
            "id": "t.requisites",
            "group": "trust",
            "title": "Реквизиты юрлица: ИНН и ОГРН",
            "prio": "high",
            "status": "fail",
            "detail": "ИНН: нет, ОГРН: нет (на главной и в разметке).",
            "fix": "Покажите полное наименование, ИНН, ОГРН и юридический адрес — хотя бы в подвале. Для англоязычного сайта подойдут метки INN и OGRN либо поля taxID и identifier в разметке Organization."
        },
        {
            "id": "t.privacy",
            "group": "trust",
            "title": "Политика обработки персональных данных",
            "prio": "crit",
            "status": "na",
            "detail": "Форм сбора данных на проверенной странице нет — политика не требуется.",
            "fix": ""
        },
        {
            "id": "t.contacts",
            "group": "trust",
            "title": "Контакты: e-mail или телефон ссылкой",
            "prio": "high",
            "status": "warn",
            "detail": "Нет ссылок mailto: или tel:.",
            "fix": "Сделайте почту и телефон ссылками — агент распознает их однозначно."
        },
        {
            "id": "k.license",
            "group": "files",
            "title": "Условия использования материалов объявлены",
            "prio": "high",
            "status": "na",
            "detail": "К группе «Не определена» не применимо.",
            "fix": ""
        }
    ],
    "method_note": "Оценка по внешним признакам: сайт запрашивается по HTTP без выполнения JavaScript. Проверка файрвола приблизительная: настоящих ИИ-ботов сайты распознают также по IP-адресам, а мы можем подставить только User-Agent. Достоверность данных, методы испытаний и логи сервера снаружи проверить нельзя.",
    "cached": false,
    "scan_record": {
        "id": "ARS-20261024-000016",
        "signed_at": "2026-10-24T12:00:31Z",
        "checked_at": "2026-10-24T12:00:31Z",
        "level": 0,
        "url": "https://agentreadyscan.ru/api/v1/scan-record?id=ARS-20261024-000016",
        "verify": "https://agentreadyscan.ru/proverka-zapisi/?id=ARS-20261024-000016"
    },
    "estimate": {
        "inputs": {
            "engine": "custom",
            "vat": "vat5",
            "base": true,
            "skus": 0,
            "templates": 2,
            "feeds": false,
            "hours": 1,
            "calc_params": 0,
            "ycp": "none"
        },
        "why": {
            "base": [
                "sitemap.xml с реальными датами lastmod",
                "Файл /llms.txt",
                "Файл /llms-full.txt",
                "Инструкция для агентов /AGENTS.md",
                "Markdown-карта сайта /sitemap.md",
                "Organization с реквизитами",
                "Markdown-зеркало страницы (link rel=\"alternate\")",
                "Ответ в Markdown по Accept: text/markdown",
                "Реквизиты юрлица: ИНН и ОГРН",
                "Контакты: e-mail или телефон ссылкой"
            ],
            "template": [
                "rel=\"canonical\"",
                "meta description 120–160 символов",
                "Ровно один <h1>",
                "Иерархия h2–h3 (не меньше 3)",
                "Семантические теги main, header, nav, footer",
                "JSON-LD есть в исходном HTML",
                "FAQ, глоссарий или инструкции размечены",
                "Товары или услуги размечены (Product / Service)"
            ],
            "hour": [
                "Несуществующая страница отвечает 404 (1 ч)"
            ]
        },
        "quote": {
            "ok": true,
            "price_list_version": "2.0",
            "currency": "RUB",
            "input": {
                "engine": "custom",
                "skus": 0,
                "ycp": "none",
                "vat": "vat5"
            },
            "lines": [
                {
                    "id": "base",
                    "name": "Базовый слой для агентов",
                    "qty": 1,
                    "unit": "сайт",
                    "price": 20000,
                    "coef": 1,
                    "sum": 20000,
                    "desc": "robots.txt для ИИ-ботов, sitemap с датами, llms.txt, AGENTS.md, Markdown-версии страниц, разметка компании с ИНН и ОГРН.",
                    "term": "1 неделя"
                },
                {
                    "id": "template",
                    "name": "Разметка типа страницы",
                    "qty": 2,
                    "unit": "тип шаблона",
                    "price": 7500,
                    "coef": 1,
                    "sum": 15000,
                    "desc": "JSON-LD и таблица характеристик для одного типа страниц: карточка товара, категория, статья.",
                    "term": "2–3 дня на тип"
                },
                {
                    "id": "hour",
                    "name": "Нестандартная работа",
                    "qty": 1,
                    "unit": "час",
                    "price": 3000,
                    "coef": 1,
                    "sum": 3000,
                    "desc": "То, чего нет в прайсе. Количество часов называем и согласуем до начала работ.",
                    "term": "по оценке"
                }
            ],
            "subtotal": 38000,
            "urgency_coef": 1,
            "after_urgency": 38000,
            "discount_rate": 0,
            "discount": 0,
            "net": 38000,
            "vat_rate": 0.05,
            "vat": 1900,
            "total": 39900,
            "vat_name": "НДС 5%",
            "monthly": {
                "net": 0,
                "vat": 0,
                "total": 0
            },
            "binding": true,
            "binding_note": "Смета по формуле прайс-листа v2.0. Сумма окончательная при подтверждении объёмов (число товаров, типов страниц, параметров); нестандартные часы согласуются до начала работ.",
            "price_list": "https://aid2c.ru/price.json"
        },
        "optional": [
            {
                "id": "calc",
                "title": "API расчёта цены",
                "why": "Нужно для уровня 3, если цена зависит от размера или опций.",
                "price": "10 000 ₽ + 5 000 ₽ за параметр"
            },
            {
                "id": "ycp",
                "title": "Подключение к «Купить в 1 клик» в Алисе AI (YCP)",
                "why": "Для уровня 4 в рознице. Для B2B вместо этого — документированный запрос расчёта.",
                "price": "60 000 ₽ (по API)"
            }
        ],
        "skus_found": 0,
        "calculator_url": "https://aid2c.ru/uslugi/?engine=custom&skus=0&templates=2&hours=1&base=1&ycp=none&calc_params=0&vat=vat5#calc",
        "quote_url": "https://aid2c.ru/api/v1/quote?engine=custom&skus=0&templates=2&hours=1&base=1&ycp=none&calc_params=0&vat=vat5",
        "note": "Оценка по отчёту: движок и число товаров определены автоматически, часы на проблемы сервера — средние. Точная сумма фиксируется в договоре по формуле прайс-листа после подтверждения объёмов."
    },
    "report_url": "https://agentreadyscan.ru/check/?url=gosuslugi.ru",
    "levels": "https://agentreadyscan.ru/levels.json",
    "site_page": "https://agentreadyscan.ru/site/gosuslugi.ru"
}