{
    "version": "1.0",
    "serverInfo": {
        "name": "zorkolos-find",
        "title": "Zorkolos Data: .ru sites that take payments online",
        "version": "0.1.0",
        "description": "Index of the Russian .ru zone: which live websites accept payments online, what they sell, in which niche and at what prices.",
        "websiteUrl": "https://zorkolos.ru/agents"
    },
    "description": "Index of the Russian .ru zone: which live websites accept payments online, what they sell, in which niche and at what prices.",
    "documentationUrl": "https://zorkolos.ru/agents",
    "protocolVersion": "2026-07-28",
    "supportedProtocolVersions": [
        "2026-07-28",
        "2025-11-25",
        "2025-06-18",
        "2025-03-26"
    ],
    "transport": {
        "type": "streamable-http",
        "endpoint": "https://mcp.zorkolos.ru/mcp"
    },
    "capabilities": {
        "tools": {}
    },
    "authentication": {
        "required": false,
        "schemes": [
            "bearer"
        ],
        "description": "Free tier needs no key (rate limited per IP). Optional API key as Authorization: Bearer <key> raises the limits."
    },
    "instructions": "Zorkolos Data is an index of the Russian .ru zone built by crawling public pages of all registered domains: which live websites accept payments online, what they sell, in which niche and at what prices. Every classified site carries a verdict pays_online (yes / no / unclear) and its basis: \"kassa\" = a payment provider is embedded in the page code, \"link\" = a link to a payment page, \"intent\" = indirect signals only (prices, public offer, account). Prefer verified_only=true when the answer must be provable. Workflow: list_niches to learn canonical niche names, find_sites to search (Russian query words, 2-3 words), domain_card or check_domains for specific domains. Data and niche names are in Russian. Results are paginated with an opaque cursor; keep pages small. Freshness is the freshness of the crawl: check classified_at.",
    "tools": [
        {
            "name": "find_sites",
            "title": "Find .ru sites by what they sell",
            "description": "Search the Zorkolos index of Russian .ru websites that accept payments online. Each site comes with its niche and rubric, the verdict pays_online (yes/no/unclear) and its basis (kassa = a payment provider is embedded in the page code, link = a link to a payment page, intent = indirect signals only such as prices, offer and account), what it sells, the entry price in RUB, platform and payment providers. The free-text \"query\" matches what sites sell and their niche names; all words must match (Russian stemming), so use 2-3 words in Russian, e.g. \"корм для собак\", \"проверка уникальности\", \"курсы английского\". Combine with filters (verified_only, price_from, kind, platform). The first page also returns a breakdown of the matched sites by niche: pass a niche name back as \"niche\" to narrow down. Results are paginated: pass next_cursor back as \"cursor\". At most 50 sites per call. Call list_niches first when you need canonical niche names.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string",
                        "description": "Free-text search, 1-10 words, Russian works best (e.g. \"корм для собак\"). Matches what the site sells and its niche name; all words must match.",
                        "maxLength": 200
                    },
                    "niche": {
                        "type": "string",
                        "description": "Exact niche name (as returned by list_niches or in the niche breakdown) or its numeric id. Narrows results to that niche.",
                        "maxLength": 120
                    },
                    "rubric": {
                        "type": "string",
                        "description": "Top-level rubric code, name or id from list_niches (e.g. \"education\").",
                        "maxLength": 80
                    },
                    "online_payment": {
                        "type": "string",
                        "description": "Verdict filter: yes (default) - sites that take payments online, no, unclear, any.",
                        "enum": [
                            "yes",
                            "no",
                            "unclear",
                            "any"
                        ],
                        "default": "yes"
                    },
                    "verified_only": {
                        "type": "boolean",
                        "description": "true - only sites where a payment provider or a payment link was found in the page code (basis kassa or link); excludes verdicts based on indirect signals.",
                        "default": false
                    },
                    "gateway": {
                        "type": "string",
                        "description": "Payment provider code, e.g. yookassa, cloudpayments, robokassa, prodamus, unitpay, paykeeper, tinkoff_pay, sber_pay, sbp_qr, dolyame.",
                        "maxLength": 32
                    },
                    "kind": {
                        "type": "string",
                        "description": "Business type: shop (goods), service, selfserve (SaaS, online tools, subscriptions), infobiz (courses), content, landing, other.",
                        "enum": [
                            "shop",
                            "service",
                            "selfserve",
                            "infobiz",
                            "content",
                            "landing",
                            "other"
                        ]
                    },
                    "platform": {
                        "type": "string",
                        "description": "Site platform code: tilda, bitrix, wordpress, insales, ecwid, getcourse, nethouse, wfolio.",
                        "maxLength": 32
                    },
                    "price_from": {
                        "type": "integer",
                        "description": "Minimum entry price in RUB (the cheapest offer on the site).",
                        "minimum": 0
                    },
                    "price_to": {
                        "type": "integer",
                        "description": "Maximum entry price in RUB.",
                        "minimum": 0
                    },
                    "has_price": {
                        "type": "boolean",
                        "description": "true - only sites where a price was found."
                    },
                    "classified_days": {
                        "type": "integer",
                        "description": "Only sites classified within the last N days (\"what is new since last time\").",
                        "minimum": 1,
                        "maximum": 365
                    },
                    "sort": {
                        "type": "string",
                        "description": "default (verified payment first) | fresh (recently classified) | price_asc | price_desc (sites with a price only) | domain.",
                        "enum": [
                            "default",
                            "fresh",
                            "price_asc",
                            "price_desc",
                            "domain"
                        ],
                        "default": "default"
                    },
                    "limit": {
                        "type": "integer",
                        "description": "Sites per page, 1-50 (default 20). Keep it small: every row costs tokens.",
                        "minimum": 1,
                        "maximum": 50,
                        "default": 20
                    },
                    "cursor": {
                        "type": "string",
                        "description": "Opaque cursor from next_cursor of the previous page.",
                        "maxLength": 400
                    }
                },
                "additionalProperties": false
            },
            "annotations": {
                "title": "Find .ru sites by what they sell",
                "readOnlyHint": true,
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "list_niches",
            "title": "List niches with online-payment counters",
            "description": "List niches (business categories) of the Zorkolos index with counters: how many classified .ru sites each niche has and how many of them accept payments online (share in percent). Use it to learn canonical niche names before calling find_sites with \"niche\", or to answer questions like \"which niches have the highest share of online payments\". Without arguments it also returns the top-level rubrics. Niche names are in Russian; \"query\" is a substring match, so one Russian word is enough (e.g. \"юрид\", \"корм\", \"английск\").",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string",
                        "description": "Substring of the niche name, Russian (e.g. \"мебел\").",
                        "maxLength": 100
                    },
                    "rubric": {
                        "type": "string",
                        "description": "Top-level rubric code, name or id; lists niches of that rubric only.",
                        "maxLength": 80
                    },
                    "min_sites": {
                        "type": "integer",
                        "description": "Only niches with at least N classified sites (default 1).",
                        "minimum": 1
                    },
                    "min_share": {
                        "type": "number",
                        "description": "Only niches where at least this percent of sites accept payments online (0-100).",
                        "minimum": 0,
                        "maximum": 100
                    },
                    "sort": {
                        "type": "string",
                        "description": "paying (default, by number of paying sites) | sites | share | name.",
                        "enum": [
                            "paying",
                            "sites",
                            "share",
                            "name"
                        ],
                        "default": "paying"
                    },
                    "limit": {
                        "type": "integer",
                        "description": "Niches to return, 1-100 (default 30).",
                        "minimum": 1,
                        "maximum": 100,
                        "default": 30
                    },
                    "offset": {
                        "type": "integer",
                        "description": "Skip the first N niches (paging).",
                        "minimum": 0,
                        "default": 0
                    }
                },
                "additionalProperties": false
            },
            "annotations": {
                "title": "List niches with online-payment counters",
                "readOnlyHint": true,
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "domain_card",
            "title": "Everything about one .ru domain",
            "description": "Everything Zorkolos knows about one .ru domain. Always answers with a \"state\" that explains why data may be missing: not in the zone, does not resolve, waiting for the crawler, parking page, server refused the crawler, excluded topic, or classified. For classified sites returns the niche and rubric, the verdict pays_online with its basis, what the site sells, prices in RUB, payment providers, platform, the target pages the classifier read (payment and price pages) and hosting facts (ip_kind: own server, shared hosting or cdn; how many other .ru domains sit on the same IP). Pass a bare domain like \"example.ru\"; scheme, www and path are stripped.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "domain": {
                        "type": "string",
                        "description": "Domain name in the .ru zone, e.g. \"anexp.ru\".",
                        "maxLength": 253
                    }
                },
                "required": [
                    "domain"
                ],
                "additionalProperties": false
            },
            "annotations": {
                "title": "Everything about one .ru domain",
                "readOnlyHint": true,
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "check_domains",
            "title": "Check a list of .ru domains",
            "description": "Check up to 200 .ru domains in one call. For each domain returns its state (classified, unknown, parked, refused, ...) and, for classified sites, the niche and rubric, the verdict pays_online with its basis, business kind, price range in RUB and a one-line summary. Use it for a customer base or a list of competitors. The answer keeps the input order; unknown domains come back with state \"unknown\" instead of being dropped. Scheme, www and paths are stripped, duplicates are merged.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "domains": {
                        "type": "array",
                        "description": "Domain names, up to 200. A single string with domains separated by commas or newlines is accepted too.",
                        "items": {
                            "type": "string",
                            "maxLength": 253
                        },
                        "minItems": 1,
                        "maxItems": 200
                    }
                },
                "required": [
                    "domains"
                ],
                "additionalProperties": false
            },
            "annotations": {
                "title": "Check a list of .ru domains",
                "readOnlyHint": true,
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false
            }
        }
    ],
    "llms": "https://zorkolos.ru/llms.txt"
}