Skip to content

срезAI — MCP-сервер и поисковый API для ИИ-агентов

by srezai.ru · remote · no sign-in to list tools · v1.1.2 · published by ru.srezai

срезAI: веб-поиск, страницы и субтитры видео — 13 инструментов. Thirteen web tools for AI agents

Final · 1Changes · 5

13 tools: 1 do something that can't be undone, 5 change things and 7 only read.

Scanned Oct 21, 2026

9 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http search https://srezai.ru/api/mcp --header 'Authorization: <your-authorization>'

Findings

Matches of fixed checks, with the text they matched.

1 warn8 info
  • Warnyt_srt

    The server marks "yt_srt" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for
  • The description is 2,975 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...live, so repeating the same query returns different results and is billed again."

    What this check looks for
  • The description is 2,875 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...PIC (a new query) is a new job and a new charge, while polling by ticket is free."

    What this check looks for
  • The description is 2,554 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...rmat. Cost: 1 credit - the cheapest way to get page content (fetch_page costs 3)."

    What this check looks for
  • Infoyt_srt

    The description is 2,199 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...rack, rate limiting, unavailable video) are not charged. Up to 5 videos per call."

    What this check looks for
  • The description is 2,777 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...Time: 15-60 с / 15-60 s. Cost: 8 credits (search, source reading and model work)."

    What this check looks for
Show 3 more findings
  • The description is 2,225 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...Cost: free - this call consumes neither quota nor rate limit, so call it freely."

    What this check looks for
  • Infomap

    The description is 2,338 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...200 URLs - 20 credits). A site that blocks us is not charged: there is no result."

    What this check looks for
  • Infocrawl

    The description is 2,140 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...inimum 1) plus 1 credit per page read. A page that failed to read is not counted."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

13 tools

Can't be undone 1Claude Code: ask
  • yt_srtЗабирает текстовую дорожку ролика YouTube - ручные субтитры или авто - по ссылке или 11-символьному id.2 findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description is 2,199 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...rack, rate limiting, unavailable video) are not charged. Up to 5 videos per call."

      What this check looks for
    • Warn

      The server marks "yt_srt" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Забирает текстовую дорожку ролика YouTube - ручные субтитры или авто - по ссылке или 11-символьному id. Видео и звук не скачиваются: это дешёвый способ получить содержание ролика в контекст агента. Когда: нужен текст видео - конспект, цитата, проверка сказанного, поиск по содержанию лекции; ролик уже известен или найден через web_search. Для поиска видео используйте web_search (например, site:youtube.com), а не этот тул. Когда не: нужен текст страницы - read_url; нужна картинка/вёрстка - fetch_page; не YouTube (VK, Rutube, Дзен) - не работает. Плейлист не разбирается, нужен ролик. Возвращает по каждому ролику: название, канал, длительность, дату, язык, вид дорожки (ручные/авто), текст и ссылки на ролик и канал. Если дорожки нет - статус и список доступных языков: повторите с существующим. Длинный текст приходит окном maxChars; в конце указано from, с которым надо вызвать тул, чтобы получить продолжение без повторной оплаты. Цена: 1 кредит за ролик, у которого субтитры получены; неудачи (нет дорожки, ограничение частоты, недоступный ролик) не списываются. До 5 роликов за вызов. Fetches a YouTube video's text track - manual captions or auto - by URL or 11-char id. No video or audio is downloaded: this is the cheap way to bring video content into the agent's context. Use when: you need the text of a video - a summary, a quote, checking what was said, searching a lecture; the video is known or was found via web_search. To find videos use web_search (e.g. site:youtube.com), not this tool. Do not use when: you need page text - read_url; you need layout or a screenshot - fetch_page; the video is not on YouTube. Playlists are not expanded, pass a video. Returns per video: title, channel, duration, date, language, track kind (manual/auto), the text and links to the video and channel. If no track exists - a status plus the list of available languages, so you can retry with a real one. Long text arrives in windows of maxChars; the end states the from value for the continuation call, already-read text is not charged again. Cost: 1 credit per video whose captions were fetched; failures (no track, rate limiting, unavailable video) are not charged. Up to 5 videos per call.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
Changes things 5Claude Code: ask
  • crawlЧитает разделы сайта и читает найденные страницы: сначала карта адресов (как в map), затем текст страниц.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description is 2,140 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...inimum 1) plus 1 credit per page read. A page that failed to read is not counted."

      What this check looks for
    Description, as the server wrote it
    Читает разделы сайта и читает найденные страницы: сначала карта адресов (как в map), затем текст страниц. Один вызов вместо «нашёл ссылку - прочитал - нашёл следующую»: так собирают всё содержимое раздела, а не отдельные страницы. Когда: нужно содержимое нескольких страниц одного сайта - «собери все события с этого агрегатора», «прочитай раздел документации», «что в этом каталоге». Когда не: нужен только список адресов - map (дешевле, страницы не читаются); нужна одна страница - read_url. Фильтр search у crawl сравнивается с ТЕКСТОМ прочитанных страниц (не с адресом), а selectPaths/excludePaths отбирают САМИ адреса. Порядок такой: сначала map (увидеть разделы и адреса), затем crawl с selectPaths по нужному разделу и, если надо, с search по тексту. Возвращает: pages (адрес, заголовок, текст до 20 000 символов на страницу) и skipped - адреса, которые не прочитались, с причиной. Недоступные страницы не роняют чтение: остальные отдаются, а причина названа. Цена: карта (1 кредит за 10 возвращённых адресов, минимум 1) плюс 1 кредит за каждую прочитанную страницу. Не прочиталась - не считается. Crawls a site and reads the pages it finds: first the URL map (as in map), then the page text. One call instead of "found a link - read it - found the next one": this is how you collect a whole section rather than single pages. Use when: you need the content of several pages of one site - "collect every event from this aggregator", "read this docs section". Do not use when: you only need the list of URLs - map (cheaper, no page reads); you need one page - read_url. The search filter here matches the TEXT of the pages read (not the URL): search: "conference" keeps pages that mention it. So the order is: map with a URL filter first (to see the structure), then crawl with a text filter. Returns: pages (URL, title, up to 20 000 chars of text each) and skipped - URLs that could not be read, with the reason. Unreachable pages do not break the crawl: the rest are returned and the reason is stated. Cost: the map (1 credit per 10 URLs returned, minimum 1) plus 1 credit per page read. A page that failed to read is not counted.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
  • deep_researchПроводит многошаговое исследование: сам формулирует запросы, ищет, читает источники и возвращает готовый связный ответ со ссылками на использованные страницы.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description is 2,875 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...PIC (a new query) is a new job and a new charge, while polling by ticket is free."

      What this check looks for
    Description, as the server wrote it
    Проводит многошаговое исследование: сам формулирует запросы, ищет, читает источники и возвращает готовый связный ответ со ссылками на использованные страницы. Когда: вопрос требует сопоставления нескольких источников и вывода - «сравни», «разберись», «что известно о». Когда не: нужен один факт или список ссылок - это web_search, он в 20 раз дешевле и отвечает за секунды. Как это работает: исследование идёт долго - по замерам от 13 секунд (простой факт) до 42 минут, обычно 3-10 минут, и это дольше, чем живёт одно соединение. Поэтому инструмент запускает задачу и ждёт 45 секунд. Если за это время ответ готов - возвращает его сразу. Если нет - возвращает строку с пометкой `[research_pending]` и талоном (ticket). Тогда вызовите этот же инструмент ещё раз, передав ticket (query можно не повторять), чтобы дождаться готового результата; опрашивайте с паузой в минуту-две, пока не придёт ответ. Такой дозабор по талону НЕ списывается заново - деньги берутся один раз, за саму задачу. Если незавершённая задача висит больше 90 минут, инструмент честно скажет, что она зависла, - тогда имеет смысл перезапустить вопрос или сузить его. Возвращает: текст ответа плюс список источников. Если источники не вернулись, в ответе будет предупреждение - такой вывод не считается проверенным. Цена: 20 кредитов плюс 3 за каждую 1000 токенов ответа - самый дорогой вызов. Списывается один раз за задачу; повтор ТЕМЫ (новый query) - новая задача и новое списание, а дозабор по ticket бесплатен. Runs multi-step research: forms its own queries, searches, reads sources and returns a finished answer with links to the pages it used. Use when: the question needs several sources reconciled into a conclusion - "compare", "analyse", "what is known about". Do not use when: you need a single fact or a list of links - that is web_search, 20× cheaper and seconds fast. How it works: research takes a long time - measured from 13 seconds (a simple fact) to 42 minutes, usually 3-10 minutes, which is longer than a single connection lives. So the tool starts the job and waits 45 seconds. If the answer is ready by then, it returns it. If not, it returns a string marked `[research_pending]` with a ticket. Call this same tool again passing that ticket (you may omit query) to wait for the finished result; poll with a minute or two between calls until it arrives. Polling by ticket is NOT charged again - you pay once, for the job itself. If an unfinished job has been hanging for more than 90 minutes, the tool says so honestly - then restart the question or narrow it. Returns: the answer text plus a source list. If no sources came back the response says so - treat that output as unverified. Cost: 20 credits plus 3 per 1000 output tokens - the most expensive call. Charged once per job; repeating the TOPIC (a new query) is a new job and a new charge, while polling by ticket is free.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: false
  • extractЧитает страницу и возвращает JSON строго по вашей схеме: только запрошенные поля, без текста страницы.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Читает страницу и возвращает JSON строго по вашей схеме: только запрошенные поля, без текста страницы. Чего на странице нет - приходит null, значения не домысливаются. Когда: нужны 2-5 конкретных значений - цена, характеристики, автор и дата, список вакансий. Экономит контекст: вместо всей страницы придут только поля. Когда не: нужен связный текст или вы не знаете заранее, что искать, - read_url (и в 4 раза дешевле). Схема: принимается и сокращённая форма - {"title":"string","price":"number?"}, где «?» делает поле необязательным, а «[]» - массивом; полный JSON Schema тоже работает. Описания полей заметно повышают точность разбора. Возвращает: объект по схеме на каждую ссылку. Можно передать до 10 ссылок разом (на бесплатном тарифе до 5) - одна схема применится ко всем. Цена: 2 кредита за каждую ссылку (чтение плюс разбор моделью). Reads a page and returns JSON strictly following your schema: only the requested fields, no page text. Anything absent from the page comes back as null - values are never invented. Use when: you need a handful of specific values - price, specs, author and date, a list of job openings. It saves context: you get the fields, not the page. Do not use when: you need prose, or you do not know in advance what to look for - read_url (and 4× cheaper). Schema: a shorthand form is accepted - {"title":"string","price":"number?"}, where "?" marks a field optional and "[]" an array; full JSON Schema works too. Field descriptions noticeably improve extraction accuracy. Returns: one object per link, shaped by your schema. Up to 10 links per call (5 on the free tier), one schema applied to all. Cost: 2 credits per link (page read plus model parsing).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
  • mapСобирает адреса страниц сайта: robots.txt → Sitemap:, затем /sitemap.xml и /sitemap_index.xml (включая вложенные карты), а если карт нет - ссылки со стартовой страницы.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description is 2,338 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...200 URLs - 20 credits). A site that blocks us is not charged: there is no result."

      What this check looks for
    Description, as the server wrote it
    Собирает адреса страниц сайта: robots.txt → Sitemap:, затем /sitemap.xml и /sitemap_index.xml (включая вложенные карты), а если карт нет - ссылки со стартовой страницы. Возвращает найденные адреса, их общее число и разбивку по разделам: по ней видно, где на сайте что лежит. Когда: известен сайт, а не страница - «собрать все события с агрегатора», «какие разделы есть на сайте», «дай мне список страниц для чтения». Когда не: нужен текст страниц - crawl (он читает найденное); нужен ответ по теме без привязки к сайту - web_search. Фильтр search сравнивает подстроку с АДРЕСОМ (страницы мы не читаем), поэтому для русских сайтов указывайте часть латинского пути: search: "organizers" вместо «организаторы». Один вызов читает до 8 карт сайта: если сайт отдаёт больше, в ответе это сказано, а разделы показывают, куда идти дальше. Возвращает: pages (до limit адресов), total (сколько нашлось всего), sections (разделы с числом адресов), source (sitemap или links) и outcome: ok, blocked (сайт отвечает 403 - это не «страниц нет»), unreachable, empty. Цена: 1 кредит за каждые 10 возвращённых адресов, минимум 1 (200 адресов - 20 кредитов). Сайт, который нас не пустил, не тарифицируется: результата нет. Collects a site's page URLs: robots.txt → Sitemap:, then /sitemap.xml and /sitemap_index.xml (including nested maps), and the start page's links when there are no maps. Returns the URLs, the total count, and a breakdown by section, which shows what lives where. Use when: you know the site, not the page - "collect every event from this aggregator", "what sections does this site have", "give me the URLs to walk". Do not use when: you need the page text - crawl (it reads what map found); you need an answer about a topic - web_search. The search filter matches against the URL (map does not read pages), so for Russian sites pass part of the Latin path: search: "organizers". One call reads up to 8 sitemaps: if the site offers more, the answer says so, and sections show where to go next. Returns: pages (up to limit URLs), total (all found), sections (sections with URL counts), source (sitemap or links) and outcome: ok, blocked (the site answers 403 - that is not "no pages"), unreachable, empty. Cost: 1 credit per 10 URLs returned, minimum 1 (200 URLs - 20 credits). A site that blocks us is not charged: there is no result.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
  • verify_claimПроверяет утверждение: ищет источники, читает несколько независимых страниц и возвращает вердикт с дословными цитатами.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description is 2,777 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...Time: 15-60 с / 15-60 s. Cost: 8 credits (search, source reading and model work)."

      What this check looks for
    Description, as the server wrote it
    Проверяет утверждение: ищет источники, читает несколько независимых страниц и возвращает вердикт с дословными цитатами. Каждая цитата сверена с текстом страницы - не найденная в тексте отбрасывается вместе со своим доводом. Когда: факт, который нельзя брать на веру - цифра, дата, «X поддерживает Y», утверждение из ответа пользователя или из вашей же памяти. Особенно если ваш контекст не вмещает 4-5 страниц целиком: вся черновая работа делается на нашей стороне, к вам приходят только вердикт и цитаты. Когда не: нужен обзор темы - deep_research; нужен текст конкретной страницы - read_url. Вердикт: supported - источники подтверждают; refuted - опровергают; mixed - расходятся между собой; unverified - подтверждения не нашлось. Последние два - нормальный результат, а не ошибка: значит, утверждение нельзя считать проверенным. Считает в независимых доменах: три цитаты с одного сайта - один голос. Смотрите agreeing/disagreeing и confidence, а не только вердикт. Если сайт не открылся, слот не теряется: берём следующего кандидата из выдачи, поэтому прочитанных источников обычно ровно столько, сколько вы заказали. Когда проверка всё же вышла неполной, это сказано в вердикте и в caveats. Возвращает: вердикт, уверенность, цитаты со ссылками и оговорки. Источников - 2-5. Время: 15-60 с / 15-60 s. Цена: 8 кредитов (поиск, чтение источников и работа модели). Verifies a statement: searches for sources, reads several independent pages and returns a verdict with verbatim quotes. Every quote is checked against the page text - one that is not found there is dropped along with its argument. Use when: a fact you should not take on trust - a number, a date, "X supports Y", a claim from the user or from your own memory. Especially when your context cannot hold 4-5 pages at once: the legwork happens on our side, you receive only the verdict and the quotes. Do not use when: you need an overview of a topic - deep_research; you need the text of one specific page - read_url. Verdict: supported - the sources confirm it; refuted - they contradict it; mixed - they disagree with each other; unverified - no confirmation was found. The last two are normal outcomes, not errors: they mean the claim cannot be treated as verified. Counted in independent domains: three quotes from one site are one voice. Read agreeing/disagreeing and confidence, not just the verdict. If a site does not open, the slot is not lost: the next candidate from the search results is read instead, so you usually get exactly the number of sources you asked for. When the check still came out incomplete, the verdict and the caveats say so. Returns: verdict, confidence, quotes with links and caveats. Sources: 2-5. Time: 15-60 с / 15-60 s. Cost: 8 credits (search, source reading and model work).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
Only reads 7Claude Code: allow
  • fetch_pageОткрывает страницу полноценным браузером и возвращает скриншот картинкой прямо в ответе, ссылку на полноразмерный файл и текст страницы в markdown.No findings

    Why it is in this group

    • The name "fetch_page" says "fetch": a word for reading.
    Description, as the server wrote it
    Открывает страницу полноценным браузером и возвращает скриншот картинкой прямо в ответе, ссылку на полноразмерный файл и текст страницы в markdown. Когда: нужно УВИДЕТЬ страницу - раскладку, цвета, типографику, визуальную иерархию: «повтори дизайн как здесь», «что не так с вёрсткой». Когда не: нужен только текст - read_url (1 кредит против 3, и быстрее); нужны отдельные значения - extract. Возвращает: изображение плюс текст. Картинка занимает много контекста, поэтому для чтения этот инструмент избыточен. Если браузер не успел отрендерить страницу, вернём её текст (то же, что даёт read_url), скажем об этом прямо и спишем 1 кредит вместо 3. Цена: 3 кредита (1, если скриншот не получился). Opens the page in a full browser and returns a screenshot as an inline image, a link to the full-size file, and the page text in markdown. Use when: you need to SEE the page - layout, colours, typography, visual hierarchy: "match this design", "what looks broken here". Do not use when: you only need text - read_url (1 credit vs 3, and faster); you need specific values - extract. Returns: an image plus text. The image consumes a lot of context, which makes this tool overkill for reading. If the browser fails to render the page, its text is returned instead (the same as read_url), the reply says so, and 1 credit is charged instead of 3. Cost: 3 credits (1 if the screenshot could not be captured).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
  • get_usageБаланс, остаток суточной квоты, время сброса окна, burst-лимит и расход за последние сутки и неделю - по услугам, в кредитах.1 finding

    Why it is in this group

    • The name "get_usage" says "get": a word for reading.

    Findings

    • Info

      The description is 2,225 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...Cost: free - this call consumes neither quota nor rate limit, so call it freely."

      What this check looks for
    Description, as the server wrote it
    Баланс, остаток суточной квоты, время сброса окна, burst-лимит и расход за последние сутки и неделю - по услугам, в кредитах. Ответ - компактный JSON (машиночитаемые поля первыми). verbose: true - тот же отчёт человеческим текстом вместе с полным прайс-листом. Когда: вызов упал с [rate_limited] и надо понять, ждать секунды или до следующих суток; пользователь спрашивает про баланс и расходы; надо сверить свой лог вызовов с нашими списаниями; планируется большой батч. Возвращает: balance_credits, план, quota (used/limit/remaining/reset_min), burst, last24h (calls/credits/free и разбивка by_service) и week_credits. Без verbose прайс-листа в ответе нет - цены каждой услуги описаны у самой услуги, а здесь только то, что меняется от вызова к вызову. Тарификация: платите только за результат - ошибка и вызов, не принёсший ничего (пустая выдача, проверка без прочитанных источников), не списываются. Квота считает ВЫЗОВЫ, а не кредиты: 10 за 10 с и 200 в сутки на ключ. Цена: бесплатно, квоту и лимит запросов этот вызов не расходует - его можно звать без опасений. Balance, remaining daily quota, window reset time, burst limit and spending for the last 24 hours and the last week, per service, in credits. The answer is compact JSON (machine-readable fields first). verbose: true gives the same report as human-readable text together with the full price list. Use when: a call failed with [rate_limited] and you need to know whether to wait seconds or until tomorrow; the user asks about balance or spending; you need to reconcile your own call log with our charges; you are about to run a large batch. Returns: balance_credits, plan, quota (used/limit/remaining/reset_min), burst, last24h (calls/credits/free plus a by_service breakdown) and week_credits. Without verbose there is no price list: each service's price is described with that service, and this answer carries only what changes between calls. Billing: you pay for results only - an error, or a call that returned nothing (empty search results, a verification that read no sources), is not charged. The quota counts CALLS, not credits: 10 per 10 s and 200 per day per key. Cost: free - this call consumes neither quota nor rate limit, so call it freely.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • idempotentHint: true
  • read_urlОткрывает одну страницу по известному адресу и возвращает её текст чистым markdown - без навигации, рекламы, скриптов и HTML.1 finding

    Why it is in this group

    • The name "read_url" says "read": a word for reading.

    Findings

    • Info

      The description is 2,554 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...rmat. Cost: 1 credit - the cheapest way to get page content (fetch_page costs 3)."

      What this check looks for
    Description, as the server wrote it
    Открывает одну страницу по известному адресу и возвращает её текст чистым markdown - без навигации, рекламы, скриптов и HTML. JavaScript выполняется на нашей стороне, поэтому SPA тоже читаются. Когда: адрес известен и нужен текст - статья, документация, карточка товара. Когда не: адреса нет - сначала web_search; страниц несколько - read_urls (один вызов вместо пяти); нужны 2-5 конкретных полей - extract (в контекст придут только они); нужно увидеть вёрстку - fetch_page. Возвращает: заголовок и текст, по умолчанию первые 4000 символов. Длинная страница приходит по частям: в конце ответа указано значение offset, с которым надо вызвать тул повторно, чтобы получить продолжение. Так документ любого объёма читается окнами под ваш контекст, без повторной оплаты уже прочитанного. Читает и файлы, а не только страницы: PDF (включая сканы - распознаём текст), Word (docx), Excel (xlsx), PowerPoint (pptx), OpenDocument (odt/ods/odp/odg), RTF, EPUB и текстовые (txt/md/csv/json/xml). Адрес документа передавайте как есть: https://site.ru/otchet.docx. Старые двоичные .doc/.xls/.ppt не читаются - их отдаёт только LibreOffice, у нас его нет; нужен файл в новом формате. Цена: 1 кредит, самый дешёвый способ получить содержимое страницы (fetch_page - 3). Opens a single page by a known URL and returns its text as clean markdown - no navigation, ads, scripts or HTML. JavaScript is executed on our side, so SPAs read fine too. Use when: you have the URL and need the text - an article, documentation, a product page. Do not use when: you have no URL - start with web_search; you have several pages - read_urls (one call instead of five); you need a handful of specific fields - extract (only those reach your context); you need to see the layout - fetch_page. Returns: title and text, the first 4000 characters by default. A long page arrives in windows: the end of the response states the offset to call the tool with again to get the continuation. That way a document of any size is read in windows sized to your context, without paying twice for what you already read. Reads files too, not only pages: PDF (scans included - we recognise the text), Word (docx), Excel (xlsx), PowerPoint (pptx), OpenDocument (odt/ods/odp/odg), RTF, EPUB and text formats (txt/md/csv/json/xml). Pass the document URL as it is: https://site.ru/report.docx. Legacy binary .doc/.xls/.ppt are not readable - only LibreOffice can open them and we do not run it; re-save the file in a modern format. Cost: 1 credit - the cheapest way to get page content (fetch_page costs 3).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
  • read_urlsЧитает пачку страниц (до 10 за вызов; на бесплатном тарифе до 5) параллельно и возвращает текст каждой чистым markdown.No findings

    Why it is in this group

    • The name "read_urls" says "read": a word for reading.
    Description, as the server wrote it
    Читает пачку страниц (до 10 за вызов; на бесплатном тарифе до 5) параллельно и возвращает текст каждой чистым markdown. То же, что read_url, но одним вызовом вместо нескольких - заметно быстрее по общему времени. Когда: на руках список ссылок, например топ выдачи web_search. Когда не: страница одна - read_url; нужны отдельные поля, а не текст, - extract (он тоже принимает список). Возвращает: текст по каждой странице. Частичный успех - норма: упавшие ссылки не рвут вызов, а перечисляются отдельным блоком «Не прочитано» с кодом ошибки. Дубликаты и ссылки сверх лимита отбрасываются, их число указано в ответе. Длинные страницы обрезаются по maxChars; дочитывать их удобнее по одной через read_url с offset - в батче offset один на все ссылки. Цена: 1 кредит за каждую ссылку - пять страниц стоят пять кредитов. Не отправляйте ссылки «на всякий случай». Reads a batch of pages (up to 5 per call) in parallel and returns each one's text as clean markdown. Same as read_url but in a single call - markedly faster in total wall-clock. Use when: you have a list of links, e.g. the top web_search results. Do not use when: there is only one page - read_url; you need specific fields rather than text - extract (it also accepts a list). Returns: text per page. Partial success is normal: failed links do not fail the call, they are listed in a separate "not read" block with an error code. Duplicates and links beyond the limit are dropped and the count is reported. Long pages are cut at maxChars; finish reading them one at a time via read_url with offset - in a batch the offset applies to every link at once. Cost: 1 credit per link - five pages cost five credits. Do not pad the list.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.1.2. Values in angle brackets are yours to fill in.

claude mcp add --transport http search https://srezai.ru/api/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__search__web_search",
      "mcp__search__image_search",
      "mcp__search__read_url",
      "mcp__search__read_urls",
      "mcp__search__fetch_page",
      "mcp__search__answer_search",
      "mcp__search__get_usage"
    ],
    "ask": [
      "mcp__search__deep_research",
      "mcp__search__yt_srt",
      "mcp__search__extract",
      "mcp__search__verify_claim",
      "mcp__search__map",
      "mcp__search__crawl"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as search. Review it before you use it.