MCP-Server

Iskat — Russian-language web search for agents

io.iskat/webdex
Commerce & Retail Suche & Recherche Nicht verfügbar MCP 2025-11-25

Was dieses MCP kann

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.
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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.
Nur Lesen
Eingabeschema
{'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.
Nur Lesen
Eingabeschema
{'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.
Nur Lesen
Eingabeschema
{'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.
Nur Lesen
Eingabeschema
{'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.
Nur Lesen
Eingabeschema
{'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.
Nur Lesen
Eingabeschema
{'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.
Nur Lesen
Eingabeschema
{'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.
Nur Lesen Externer Zugriff
Eingabeschema
{'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.
Nur Lesen
Eingabeschema
{'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.
Eingabeschema
{'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.
Nur Lesen
Eingabeschema
{'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.
Idempotent
Eingabeschema
{'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}
Hinzugefügt
index_stats
17. September 2026 12:53
Hinzugefügt
list_sites
17. September 2026 12:53
Hinzugefügt
delete_watch
17. September 2026 12:53
Hinzugefügt
list_watches
17. September 2026 12:53
Hinzugefügt
check_watch
17. September 2026 12:53
Hinzugefügt
watch_query
17. September 2026 12:53
Hinzugefügt
source_profile
17. September 2026 12:53
Hinzugefügt
find_passages
17. September 2026 12:53
Hinzugefügt
search_batch
17. September 2026 12:53
Hinzugefügt
find_similar
17. September 2026 12:53
Hinzugefügt
fetch_pages
17. September 2026 12:53
Hinzugefügt
fetch_page
17. September 2026 12:53
Hinzugefügt
search_products
17. September 2026 12:53
Hinzugefügt
search
17. September 2026 12:53