MCPサーバー

Iskat — Russian-language web search for agents

io.iskat/webdex

このMCPでできること

Searches a Russian-language indexed web corpus, extracts passages and pages, monitors queries, and finds product offers and prices.

check_watch
What is new for a tracked query
Return pages matching a watched query that were indexed since the last check, then advance the cursor. Call with no id to check all of your watches at once.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'integer', 'description': 'Watch id; omit to check all.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 30, 'minimum': 1}}, 'additionalProperties': False}
delete_watch
Stop tracking a query
Remove a watch. Pass its id (from list_watches) or the exact query text. Watches accumulated with no way to remove them; this closes that.
冪等
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'integer', 'description': 'Watch id from list_watches.', 'exclusiveMinimum': 0}, 'query': {'type': 'string', 'maxLength': 500, 'description': 'Exact watched query, as an alternative to id.'}}, 'additionalProperties': False}
fetch_page
Read an indexed page
Return the full extracted text of a page already in the index. This serves stored content and does not hit the live site, so it is fast and cannot be blocked. Use it after search to read a result.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'URL of an indexed page.'}, 'maxChars': {'type': 'integer', 'default': 20000, 'maximum': 100000, 'minimum': 200, 'description': 'Truncate the body to this many characters.'}}, 'additionalProperties': False}
fetch_pages
Read several indexed pages at once
Like fetch_page but for up to 20 URLs in one call — the bulk-read counterpart to search_batch, so reading a page of results is one round trip instead of ten. Each page comes back with its cleaned text from the index; URLs not in the index are marked, not fatal.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['urls'], 'properties': {'urls': {'type': 'array', 'items': {'type': 'string', 'format': 'uri'}, 'maxItems': 20, 'minItems': 1, 'description': 'URLs of indexed pages.'}, 'maxChars': {'type': 'integer', 'default': 8000, 'maximum': 50000, 'minimum': 200, 'description': 'Truncate each body to this many characters.'}}, 'additionalProperties': False}
find_passages
Get quotable passages, not just links
Return the specific passages that answer a question, each with the URL and title it came from. Use this when you intend to cite or summarise rather than browse: it skips the step of fetching pages and hunting for the relevant paragraph, and the attribution is exact.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 8, 'maximum': 20, 'minimum': 1, 'description': 'Number of passages.'}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'category': {'type': 'string'}}, 'additionalProperties': False}
find_similar
Find pages similar to a page
Given an indexed URL, return other indexed pages with similar content, compared by meaning rather than shared keywords.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'URL of an indexed page.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 30, 'minimum': 1}}, 'additionalProperties': False}
index_stats
Index statistics
Size and freshness of the corpus: sites, pages, passages, languages.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
list_sites
List indexed sites
Show which sites the index covers, with page counts. Use this to understand coverage before concluding that something is missing.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1}, 'search': {'type': 'string', 'description': 'Filter by substring of the host.'}, 'status': {'enum': ['active', 'pending', 'paused', 'rejected', 'blocked', 'all'], 'type': 'string', 'default': 'active'}}, 'additionalProperties': False}
list_watches
List tracked queries
Show the queries you are watching and when each was last checked.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
search
Search the web index
Search the Webdex index of crawled websites. Combines keyword (BM25) and semantic (vector) retrieval. Supports "quoted phrases" for exact matches and -term to exclude a term. Works across languages: a query in one language can retrieve pages written in another.
読み取り専用 外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'lang': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'Restrict to a two-letter language code, e.g. "ru".'}, 'mode': {'enum': ['hybrid', 'keyword', 'semantic'], 'type': 'string', 'default': 'hybrid', 'description': 'hybrid = both arms fused (best general choice); keyword = exact terms only, for names, codes and error strings; semantic = meaning-based, for vague or descriptive questions.'}, 'site': {'type': 'string', 'description': 'Restrict to one host, e.g. "example.com".'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of results.'}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'The search query.'}, 'expand': {'type': 'boolean', 'default': True, 'description': 'Widen the query with synonyms and acronym expansions (грм → газораспределительный механизм, НДФЛ → налог на доходы). On by default; set false for an exact-terms search. The terms actually added come back in expandedWith.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 200, 'minimum': 0, 'description': 'Skip this many results — for a second page.'}, 'category': {'type': 'string', 'description': 'Restrict to a task category, e.g. "news", "legal", "forum-it". See list_sites.'}, 'sinceDays': {'type': 'integer', 'maximum': 3650, 'minimum': 1, 'description': 'Only pages published within this many days. Use for anything time-sensitive.'}}, 'additionalProperties': False}
search_batch
Run several searches at once
Execute up to 10 queries in one call. Answering a real question usually takes several related searches, and doing them one at a time spends a round trip on each; this runs them together and returns the results grouped by query.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queries'], 'properties': {'lang': {'type': 'string', 'maxLength': 2, 'minLength': 2}, 'limit': {'type': 'integer', 'default': 5, 'maximum': 20, 'minimum': 1, 'description': 'Results per query.'}, 'queries': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 10, 'minItems': 1}, 'category': {'type': 'string'}}, 'additionalProperties': False}
search_products
Find products with prices
Search shop catalogues by name and specification, filter by price and availability, and sort by price. Use this rather than `search` whenever the question is what something costs or where to buy it: `search` returns pages that mention a product, this returns the offer itself — price, stock, specifications and a link straight to the product page. Specifications are searchable, so a query like "ноутбук 16 гб 512 ссд" or "холодильник samsung no frost" matches on capacity and features, not just the model name. Coverage is whatever has been crawled: an exact model, colour and size that no indexed shop stocks returns nothing rather than the wrong colour — an empty result means not indexed, not nonexistent.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'shop': {'type': 'string', 'description': 'Restrict to one shop by host, e.g. citilink.ru.'}, 'sort': {'enum': ['relevance', 'price_asc', 'price_desc', 'updated'], 'type': 'string', 'default': 'relevance'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'query': {'type': 'string', 'maxLength': 300, 'minLength': 1, 'description': 'What to find, in words a shopper would use.'}, 'vendor': {'type': 'string', 'description': 'Manufacturer, exact match.'}, 'in_stock': {'type': 'boolean', 'default': False, 'description': 'Only offers the shop states are in stock. Off by default: many shops never say.'}, 'max_price': {'type': 'number', 'minimum': 0, 'description': 'Upper bound.'}, 'min_price': {'type': 'number', 'minimum': 0, 'description': "Lower bound, in the shop's currency."}, 'best_per_product': {'type': 'boolean', 'default': True, 'description': 'Collapse the same product across shops to its cheapest offer.'}}, 'additionalProperties': False}
source_profile
What kind of source is this
Describe a site in the index: what type of source it is (official, media, reference, forum, shop), how much of it we hold, how trusted it is by the link graph, and how fresh the copy is. Use this before relying on a result. A ministry's own page and a forum post repeating it are both 'a URL', and the difference decides how much weight the claim deserves.
読み取り専用
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['host'], 'properties': {'host': {'type': 'string', 'description': 'Domain, e.g. cbr.ru'}}, 'additionalProperties': False}
watch_query
Track a query for new results
Save a query and later ask what has appeared since you last checked. Pull-based: nothing is pushed to you, you call check_watch when you want to know — which fits an agent that runs on its own schedule. Use for monitoring: a topic, a competitor, a regulation, a product.
冪等
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'lang': {'type': 'string', 'maxLength': 2, 'minLength': 2}, 'label': {'type': 'string', 'maxLength': 100}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'category': {'type': 'string'}}, 'additionalProperties': False}
追加
index_stats
2026年9月17日12:53
追加
list_sites
2026年9月17日12:53
追加
delete_watch
2026年9月17日12:53
追加
list_watches
2026年9月17日12:53
追加
check_watch
2026年9月17日12:53
追加
watch_query
2026年9月17日12:53
追加
source_profile
2026年9月17日12:53
追加
find_passages
2026年9月17日12:53
追加
search_batch
2026年9月17日12:53
追加
find_similar
2026年9月17日12:53
追加
fetch_pages
2026年9月17日12:53
追加
fetch_page
2026年9月17日12:53
追加
search_products
2026年9月17日12:53
追加
search
2026年9月17日12:53