Skip to main content
Glama

avito-mcp

MCP-сервер, через который LLM работает на Авито как человек: ищет и разбирает объявления, читает личный кабинет и статистику, переключает профили, кликает, заполняет формы. Необратимые действия выполняются только после явного подтверждения.

Сервер управляет отдельным окном Google Chrome по протоколу CDP. В этом окне вы один раз входите в свой аккаунт, и сессия сохраняется между перезапусками. Ключи API Авито и платный тариф не нужны. Подтверждать каждый клик, как в браузерных расширениях, тоже не нужно.

Неофициальный проект, с Авито не связан. Используйте его для своего аккаунта и в рамках правил Авито. Подробнее — в разделе «Ограничения и ответственность».

English summary at the end of this file.


Содержание


Related MCP server: chrome-agent-mcp

Зачем это нужно

Дать LLM доступ к Авито можно несколькими способами, и у каждого есть недостатки:

Способ

Проблема

Официальное API Авито

Нужен активный платный тариф и ключи client_id/client_secret. Поиска по чужим объявлениям в API нет

Браузерные расширения (Claude in Chrome и др.)

Просят подтверждение почти на каждое действие, долгие сценарии становятся мучительными

Встроенные браузеры агентов, headless-скрейперы

Авито быстро показывает «Доступ ограничен: проблема с IP»

Готовые MCP с жёсткими парсерами

Ломаются при любом изменении вёрстки и не видят кабинет Авито Pro

avito-mcp выбирает середину:

  • Живой браузер с вашим входом. Это обычный Chrome со своим профилем, а не headless-скрейпер.

  • Универсальные инструменты: открыть, прочитать, кликнуть, ввести текст. Агент справится, даже если Авито поменяет вёрстку.

  • Готовые извлекатели данных поверх них: выдача, объявление, кабинет, профили. Это экономит токены и время.

  • Защитный слой: только домен avito.ru, подтверждение необратимых действий, передача капчи человеку.

Что умеет

  • Поиск. Выдача по запросу, городу, разделу, цене и сортировке. По каждой карточке: позиция, цена, строка прайса, продавец, рейтинг, число отзывов, бейджи, признак платного продвижения.

  • Разбор объявления. Заголовок, цена, прайс-лист, параметры («Подробности»), описание, адрес, продавец, бейджи, отрывок отзывов. Фото в полном размере: сервер проходит по миниатюрам галереи. Если объявление ваше, ещё и статистика за 7 дней: показы, просмотры, избранное, контакты, расходы.

  • Личный кабинет. Свои объявления во всех вкладках (активные, с ошибками, архив и т. д.) со строкой статистики. Работает и в обычном кабинете, и в Авито Pro.

  • Профили аккаунта. Список профилей из меню аватара и переключение между ними, например между обычным профилем и профилем Pro.

  • Любая страница Авито: сообщения, избранное, настройки продвижения, форма редактирования. Через снимок кликабельных элементов со стабильными ссылками ref.

  • Редактирование форм. Ввод в поля с масками (цены), выпадающие списки, точечная замена фраз в описании. Описание на Авито сделано на Draft.js, и сервер сверяет итоговый текст, а не перезаписывает его целиком.

  • Фото. Скачивание фото объявлений с avito.st в папку, снимки экрана страницы.

Как это устроено

 LLM-клиент (Claude Code, Claude Desktop, Codex, Cursor…)
        │  MCP по stdio
        ▼
 avito-mcp (Python, FastMCP + Playwright)
   ├─ браузер: запуск Chrome, подключение по CDP, паузы между переходами
   ├─ извлекатели: JS по атрибутам data-marker с запасным вариантом «текст страницы»
   ├─ защита: белый список доменов, confirm=true для рискованных кнопок, детектор капчи
   └─ инструменты: 20 штук (см. справочник)
        │  CDP только на 127.0.0.1:9333
        ▼
 Google Chrome со своим профилем ~/.avito-mcp/chrome-profile  ←  вход выполняет человек
        │
        ▼
 avito.ru
  • Chrome живёт отдельно от сервера. При первом вызове сервер запускает его как обычный процесс со своим профилем и портом отладки. Окно и вход в аккаунт переживают перезапуск MCP-клиента. Если окно закрыть, сервер откроет его снова.

  • Никаких обходов защиты. Сервер не подменяет user-agent, не ставит «стелс»-патчи, не решает капчи. Между переходами по страницам держится пауза: по умолчанию 2,5 с плюс случайные 0–1,5 с.

  • Извлекатели опираются на атрибуты data-marker. Они стабильнее CSS-классов. Если разметка не распознана, инструмент возвращает текст страницы: модель продолжит работу, а не упадёт.

Установка

Требования: macOS или Linux, Python 3.12+, uv, установленный Google Chrome.

git clone https://github.com/ermizin/avito-mcp.git
cd avito-mcp
uv sync

Ставить браузеры Playwright не нужно: используется ваш Google Chrome. На Linux или при нестандартном пути к Chrome задайте AVITO_MCP_CHROME (см. настройки).

Проверка, что сервер запускается и видит Авито:

uv run python scripts/smoke.py avito_status

Откроется окно Chrome с Авито, а в терминале появится JSON: url, title, blocked, logged_in.

Подключение к клиентам MCP

Во всех примерах /ABS/PATH/avito-mcp — абсолютный путь к клонированному репозиторию.

Claude Code

claude mcp add -s user avito -- /ABS/PATH/avito-mcp/.venv/bin/python -m avito_mcp
claude mcp get avito   # Status: ✔ Connected

Claude Desktop, Cursor и другие клиенты с JSON-конфигом

{
  "mcpServers": {
    "avito": {
      "command": "/ABS/PATH/avito-mcp/.venv/bin/python",
      "args": ["-m", "avito_mcp"]
    }
  }
}

Codex (~/.codex/config.toml)

[mcp_servers.avito]
command = "/ABS/PATH/avito-mcp/.venv/bin/python"
args = ["-m", "avito_mcp"]

Через uv без активации окружения:

uv run --directory /ABS/PATH/avito-mcp avito-mcp

Первый запуск и вход в аккаунт

  1. Попросите агента вызвать avito_status или запустите scripts/smoke.py avito_status. Откроется окно Chrome с профилем ~/.avito-mcp/chrome-profile.

  2. Если logged_in: false, войдите в Авито сами в этом окне. Агент пароли и коды из СМС не вводит.

  3. Если Авито показал «Доступ ограничен» (blocked: true), пройдите проверку в окне сами. Агент вызывает avito_wait_for_user и ждёт.

  4. Готово: дальше сессия сохраняется в профиле.

Уже есть отдельный профиль Chrome, где выполнен вход в Авито? Укажите его в AVITO_MCP_PROFILE. Профиль, который сейчас открыт в другом окне Chrome, не подойдёт: Chrome блокирует профиль.

Справочник инструментов

Состояние и навигация

Инструмент

Параметры

Что делает

avito_status

—

Запускает Chrome, если нужно. Возвращает url, title, blocked, logged_in

avito_open

url — полный адрес или путь (/profile, /profile/messenger, /favorites)

Открывает страницу avito.ru, соблюдая паузу между переходами

avito_back

—

Назад по истории

avito_wait_for_user

reason: captcha / login / any; timeout_s (до 600)

Выводит окно на передний план и ждёт, пока человек пройдёт проверку или войдёт

Чтение страницы

Инструмент

Параметры

Что делает

avito_read

mode: text / snapshot; selector; offset, max_chars; viewport_only; wait_for_text

text — видимый текст по частям. snapshot — компактный список кнопок, ссылок и полей вида e12 button 'Найти' #search-form/submit-button. ref стабильны между снимками. wait_for_text ждёт до 15 с, пока на странице, которая подгружается после открытия, появится нужный текст

avito_screenshot

full_page

Снимок страницы; копия сохраняется в ~/.avito-mcp/screenshots

Действия

Инструмент

Параметры

Что делает

avito_click

ref или text; confirm

Клик. Для рискованных кнопок нужен confirm=true, см. безопасность

avito_hover

ref

Наведение курсора: открывает выпадающие меню, например меню аватара

avito_type

ref, text; clear; submit; confirm

Вставляет значение целиком, поэтому поля с масками не теряют символы, и возвращает итоговое значение поля. submit=true нажимает Enter; в сообщениях это отправка, нужен confirm=true

avito_replace_text

ref, find, replace; drop_empty_line

Меняет один точный фрагмент в поле или в редакторе описания (Draft.js), остальной текст не трогает. Ошибка, если фрагмент не найден или встречается несколько раз

avito_press

key; confirm

Клавиша (Enter, Escape, PageDown…). Enter в сообщениях — только с confirm=true

avito_scroll

direction: down / up / top / bottom; screens

Прокрутка, нужна для подгрузки лент и отзывов

Данные Авито

Инструмент

Параметры

Что возвращает

avito_search

query; city (sankt-peterburg, moskva, rossiya…); category (часть адреса раздела, например predlozheniya_uslug); page; sort: default / date / price_asc / price_desc; price_min, price_max

До 50 карточек на страницу: id, position, title, url, price, price_list, location, promoted, seller, seller_url, seller_score, seller_reviews, badges, photos_in_card

avito_listing

url (без него — текущая страница)

id, title, price, price_list, params, description, address, date, views, seller, badges, reviews_excerpt, photos (полный размер). Для своих объявлений ещё owner_stats_7d

avito_my_items

path (по умолчанию /profile; "" — текущая страница)

Свои объявления активного профиля: id, url, текст карточки со статистикой и список вкладок кабинета. Вкладку переключают через avito_click(text=…), затем вызывают avito_my_items(path="")

avito_profiles

—

Профили из меню аватара: номер, слот, текущий или нет, аватар

avito_switch_profile

index (1 — текущий)

Переключает профиль и открывает его кабинет

avito_save_images

urls, dest_dir, prefix

Скачивает фото (только с *.avito.st) в папку

avito_upload

paths, ref

Загружает фото с диска в поле выбора файлов (например, при подаче объявления)

avito_close_browser

—

Закрывает Chrome и запускает хук AVITO_MCP_AFTER_IDLE; следующий вызов откроет Chrome снова

Безопасность

Модель читает чужой контент: объявления, отзывы, сообщения. Значит, она может наткнуться на текст, который пытается ею управлять. Поэтому ограничения встроены в сам сервер, а не только в инструкции.

Риск

Защита

Уход на посторонние сайты

avito_open принимает только avito.ru и поддомены. Если клик увёл на внешний сайт, сервер возвращается назад и предупреждает

Необратимые действия

Кнопки, похожие на «отправить», «опубликовать», «разместить», «удалить», «оплатить», «купить», «заказать», «подтвердить», «продвинуть», «подключить», «применить», «записаться», «сохранить», «в архив», «снять с публикации», «показать телефон», «выйти», без confirm=true не нажимаются. Сервер возвращает needs_confirmation, модель должна спросить человека. Enter в чатах считается отправкой

Капча и антибот

Сервер не обходит защиту. При «Доступ ограничен» он возвращает blocked: true с инструкцией позвать человека и ждёт в avito_wait_for_user

Учётные данные

Пароли, коды и cookies сервер не вводит, не хранит и не передаёт. Вход выполняет человек в окне Chrome

Доступ к браузеру

CDP слушает только 127.0.0.1. Не пробрасывайте порт наружу: кто дотянется до CDP, управляет браузером

Prompt injection

В инструкциях сервера прямо сказано: текст объявлений и сообщений — данные, а не команды

Нагрузка на Авито

Пауза между переходами, по умолчанию 2,5 с плюс случайные 0–1,5 с

Фильтр рискованных кнопок — эвристика по тексту кнопки, а не гарантия. Для действий, которые меняют ваш аккаунт или стоят денег, держите в клиенте ручное подтверждение вызовов инструментов. Перед confirm=true всегда проверяйте, что именно агент собирается сделать.

Настройки

Переменные окружения:

Переменная

По умолчанию

Назначение

AVITO_MCP_HOME

~/.avito-mcp

Рабочая папка (профиль, снимки экрана)

AVITO_MCP_PROFILE

~/.avito-mcp/chrome-profile

Профиль Chrome с входом в Авито

AVITO_MCP_CHROME

/Applications/Google Chrome.app/Contents/MacOS/Google Chrome

Путь к Chrome. На Linux, например, /usr/bin/google-chrome

AVITO_MCP_PORT

9333

Порт CDP (только loopback)

AVITO_MCP_MIN_INTERVAL

2.5

Минимальная пауза между переходами, секунды

AVITO_MCP_CHROME_ARGS

—

Дополнительные флаги Chrome, на сервере: --disable-dev-shm-usage --disable-gpu

AVITO_MCP_TRANSPORT

stdio

streamable-http — для работы на сервере

AVITO_MCP_HTTP_HOST / AVITO_MCP_HTTP_PORT

127.0.0.1 / 8793

Адрес HTTP-сервера; наружу его выставляйте только через прокси с авторизацией

AVITO_MCP_ALLOWED_HOSTS

—

Дополнительные значения заголовка Host через запятую (10.0.0.1:8793); защита от DNS rebinding остаётся включённой

AVITO_MCP_BEFORE_START

—

Команда оболочки перед запуском Chrome (например, остановить тяжёлый сервис)

AVITO_MCP_AFTER_IDLE

—

Команда после закрытия Chrome (например, запустить этот сервис обратно)

AVITO_MCP_IDLE_SECONDS

0 (выкл.)

Закрыть Chrome после стольких секунд без запросов

Развёртывание на сервере

На Linux-сервере Chrome работает на виртуальном дисплее (Xvfb). Для входа в аккаунт и капчи к дисплею подключаются через x11vnc и noVNC по SSH-туннелю. Пример юнита systemd:

[Service]
User=ubuntu
Environment=DISPLAY=:91
Environment=AVITO_MCP_TRANSPORT=streamable-http
Environment=AVITO_MCP_CHROME=/opt/google/chrome/chrome
Environment="AVITO_MCP_CHROME_ARGS=--disable-dev-shm-usage --disable-gpu --window-size=1100,800"
Environment="AVITO_MCP_BEFORE_START=sudo -n /usr/bin/systemctl stop game-server"
Environment="AVITO_MCP_AFTER_IDLE=sudo -n /usr/bin/systemctl start game-server"
Environment=AVITO_MCP_IDLE_SECONDS=900
ExecStart=/home/ubuntu/avito-mcp/.venv/bin/python -m avito_mcp

Хуки нужны, если серверу не хватает ресурсов. На время работы с Авито они освобождают процессор от другого сервиса, а после простоя возвращают его. Инструмент avito_close_browser освобождает ресурсы сразу, не дожидаясь простоя. HTTP-порт держите на 127.0.0.1 и выставляйте наружу только через обратный прокси с OAuth или токеном: этот сервер управляет вашим аккаунтом.

Вспомогательные скрипты

Все скрипты запускают сервер по stdio и вызывают его инструменты, как это делал бы MCP-клиент. Они удобны для отладки и пакетных задач.

Скрипт

Назначение

scripts/smoke.py 'tool:{json}' …

Вызвать любые инструменты по очереди и напечатать ответы (SMOKE_LIMIT — сколько символов показывать)

scripts/collect.py <папка> <url…>

Сохранить полные карточки объявлений в listings.json и скачать фото

scripts/serp.py <out.json> <запрос…>

Сохранить выдачу (2 страницы) по нескольким запросам

scripts/verify.py <url…>

Напечатать прайс и статистику объявлений со страниц

scripts/promo_read.py <id…>

Прочитать (не меняя) настройки цены просмотра у объявлений

scripts/fill_pricelist.py plan.json

Заполнить прайс-лист объявления по плану, без сохранения

scripts/apply_edits.py plan.json

Внести правки в заголовок и описание и сверить итоговый текст с ожидаемым, без сохранения

scripts/save_listing.py [--stay]

Нажать «Сохранить изменения» на открытой форме; без --stay пропускает следующий шаг с продвижением

examples/brand_prices.py

Пример анализа рынка: цены конкретных препаратов в объявлениях конкурентов

Скрипты правок нарочно разделены на «заполнить» и «сохранить»: сначала человек проверяет результат, потом сохраняет.

Примеры запросов к агенту

  • «Найди на Авито в Москве объявления по запросу „ремонт iPhone“, отсортируй по цене и покажи топ-10 с рейтингом продавцов».

  • «Открой мои объявления, переключись на профиль Pro и сведи в таблицу просмотры, контакты и конверсию по каждому».

  • «Разбери 15 первых объявлений конкурентов по запросу „увеличение губ“: цены, длина описаний, сколько отзывов, у кого продвижение».

  • «Посмотри, что во вкладке „С ошибками“, и объясни, почему объявление отклонено».

  • «Подготовь новый прайс-лист для объявления X, заполни форму, но не сохраняй — покажи, что получилось».

Решение проблем

Симптом

Что делать

Chrome не открыл порт отладки за 30 с

Профиль уже открыт в другом окне Chrome без отладки. Закройте это окно или укажите другой AVITO_MCP_PROFILE

blocked: true / «Доступ ограничен: проблема с IP»

Пройдите проверку в окне сами. Помогает отключить VPN и реже открывать страницы (увеличьте AVITO_MCP_MIN_INTERVAL)

logged_in: false

Войдите в Авито в окне Chrome сервера

В кабинете «Ошибка. Попробуйте обновить страницу»

Это сбой на стороне Авито. Нажмите «Обновить» через avito_click(text="Обновить") или повторите позже

avito_my_items вернул пустой список и page_text

Вкладка кабинета ещё грузится. Повторите avito_my_items(path="")

Элемент не найден: обновите snapshot

Страница перерисовалась. Снова вызовите avito_read(mode="snapshot")

Список вариантов в выпадающем меню не виден

Откройте меню кликом, затем avito_read(mode="snapshot", viewport_only=true): варианты появляются как …/custom-option(…)

В клиенте не видно инструментов

Перезапустите клиент или проверьте claude mcp get avito. Новые MCP-серверы подключаются к новой сессии

Разработка

uv sync
uv run pytest -q                       # тесты логики без браузера
uvx ruff check --select E,F,B,I src    # линтер

Код:

  • src/avito_mcp/browser.py — запуск Chrome, CDP, паузы, белый список доменов, детектор капчи и входа;

  • src/avito_mcp/extract.py — JS-извлекатели, снимок элементов со стабильными ref, замена фрагмента в Draft.js;

  • src/avito_mcp/server.py — инструменты MCP и защитный слой.

Авито регулярно меняет вёрстку. Если извлекатель сломался, начните с avito_read(mode="snapshot") и avito_read(mode="text") на нужной странице: найдите новые data-marker и обновите JS в extract.py.

Ограничения и ответственность

  • Проект неофициальный. Он работает через веб-интерфейс, поэтому может сломаться при изменениях на Авито.

  • Вы отвечаете за соблюдение правил Авито. Правила запрещают автоматизированный массовый сбор данных и рассылки. Используйте сервер для своего аккаунта и разумных объёмов, не убирайте паузы и не пытайтесь обходить капчу или ограничения.

  • Персональные данные. Сообщения и данные чужих объявлений — персональные данные. Не сохраняйте и не публикуйте их без необходимости.

  • Проверено на macOS с Google Chrome на страницах avito.ru (выдача услуг, объявления, кабинет и кабинет Pro, форма редактирования, настройки цены просмотра) в октябре 2026. Мобильная версия и приложение не поддерживаются.

Лицензия — MIT.


English summary

avito-mcp is an unofficial MCP server that lets an LLM operate Avito (Russia's largest classifieds site) the way a person would. It drives a dedicated Google Chrome window over CDP. You sign in once yourself and the session persists. No Avito API keys or paid plan are needed, and the agent doesn't need click-by-click approval.

  • 20 tools. Generic ones: open, read (text or a compact snapshot with stable refs), click, hover, type, replace_text, press, scroll, screenshot. Avito-specific ones: search results with positions and promotion flags, full listing parsing including full-size photos and owner stats, your own listings across cabinet tabs (incl. Avito Pro), and account profile switching.

  • Safety built into the server:

    • navigation is limited to avito.ru;

    • irreversible controls (send, publish, delete, pay, save…) require confirm=true;

    • CAPTCHAs are handed to the human, never bypassed;

    • no credential handling; CDP stays on loopback;

    • every page navigation is rate-limited.

  • Install: uv sync, then register /ABS/PATH/avito-mcp/.venv/bin/python -m avito_mcp as a stdio MCP server.

MIT licensed. Use it with your own account and within Avito's terms of service.

Available Tools

18 tools
avito_backB

Возвращается на предыдущую страницу.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden, yet it only restates the action. It says nothing about what happens when there is no history to go back to, whether it errors, or how it interacts with the browser session.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short, front-loaded sentence with no wasted words. It is efficient, though minimal enough that it borders on under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless navigation tool with no output schema, the description is minimally adequate, but it omits error/edge-case behavior that an agent would need to invoke it reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description adds no parameter detail, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action and target: returning to the previous page in a browser-navigation context. An agent can distinguish it from forward-navigation siblings like avito_open, though it does not explicitly name an alternative or contrast itself with siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus siblings such as avito_open, avito_click, or avito_scroll. No prerequisites (e.g. needing prior navigation history) are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_clickA

Кликает по элементу: ref из snapshot (надёжнее) или видимый текст. Необратимые кнопки — только с confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
textNo
confirmNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does disclose one key behavioral trait: irreversible actions need confirm=true. It stops short of explaining what happens if confirm is omitted, whether refs can go stale, or any auth/permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler; the primary targeting mechanism (ref, marked as more reliable) is front-loaded ahead of the safety caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param action tool with no annotations and no output schema, the description covers the essentials but omits failure behavior, return value, and ref invalidation, leaving meaningful gaps an agent would want.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: ref is tied to snapshot output, text to visible labels, and confirm to irreversible actions. The only gap is the precedence when both ref and text are supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('кликает') and resource (element) plus the two targeting mechanisms (ref from snapshot or visible text), which distinguishes it from siblings like avito_press and avito_hover. It does not explicitly contrast itself with those siblings, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives useful intra-tool guidance — prefer ref over text because it is more reliable, and irreversible buttons require confirm=true. However, it never says when to use this tool versus avito_press or avito_hover, which is the more important routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_hoverA

Наводит курсор на элемент (ref из snapshot): так открываются выпадающие меню, например меню профиля.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the behavioral consequence (dropdowns appear) and that ref comes from a snapshot, but says nothing about failure modes, whether the element must be visible, or any wait/hover-duration semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tightly packed sentence: the action, the parameter source, and the payoff case are all front-loaded with zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-param action tool with no output schema, the description covers purpose, the parameter's origin, and the typical use case. Only edge-case behavior (missing element, timing) is absent, which is minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single 'ref' param has no schema description, so the description must compensate. It does partly by identifying ref as coming from the snapshot, but adds no format, syntax, or example for the ref value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('наводит курсор на элемент') and even cites the parameter's origin ('ref из snapshot'). It reads clearly as distinct from the click/press siblings, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage context: hover is how dropdown menus get opened, with the profile menu as an example. No explicit when-not-to-use or named alternatives against siblings like avito_click, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_listingA

Разбирает объявление: заголовок, цена, прайс, описание, адрес, просмотры, продавец, бейджи, ссылки на фото. Без url — текущая страница.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implicitly signals a read/extraction operation and discloses the current-page default, which is genuinely useful. It stops short of stating read-only safety, behavior on non-listing pages, or how extraction failures surface.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the extracted-field list followed by the default-page rule. No filler, though the long enumeration could read as a list rather than prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only one parameter and no output schema, the enumerated field list effectively doubles as a return-value description, which is what an agent needs. The main omission is any guidance on when this tool beats the neighboring read/navigation tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'url' parameter is undocumented in the schema, so the description must compensate. 'Без url — текущая страница' fully explains the parameter's nullable default semantics, which is exactly the missing information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (разбирает/parses) and resource (объявление/listing) and enumerates the exact fields extracted (заголовок, цена, прайс, описание, адрес, просмотры, продавец, бейджи, ссылки на фото). This clearly separates it from the generic avito_read sibling, though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'Без url — текущая страница' gives a useful usage hint about default behavior when no URL is passed. However, it never says when to prefer this over avito_read, avito_search, or avito_open, so the agent must infer the routing from the field list alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_my_itemsA

Свои объявления в активном профиле (обычном или Pro). Возвращает карточки и названия вкладок; другую вкладку откройте через avito_click(text=...) и вызовите avito_my_items(path="") для текущей страницы.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo/profile

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the return content (cards and tab names) and the special path="" current-page behavior, which is genuinely useful. However, it is silent on auth/profile requirements, whether the call has side effects, and rate limits, leaving gaps for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the purpose followed by the navigation workflow. No filler. Efficient for the amount of information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a browser-automation read tool with no output schema, the description covers purpose, returned content, and the tab-navigation workflow, which is most of what an agent needs. The residual gap is that no structured fields cover safety or the meaning of the 'path' values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema documents nothing about 'path'. The description partially compensates by explaining that path="" targets the current page, but it never explains the default '/profile' or what other valid values mean. It adds some meaning but leaves the parameter under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource and scope: the caller's own listings ('Свои объявления') in the active profile, distinguishing it from generic listing siblings like avito_listing. It also states what is returned (cards and tab names). Clear verb+resource, though sibling differentiation is by implication rather than explicit contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete routing guidance: to open a different tab use avito_click(text=...), and to load the current page call avito_my_items(path=""). This names an alternative sibling and the condition that selects each path. It stops short of stating when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_openA

Открывает страницу avito.ru: полный адрес или путь вроде "/profile". Возвращает состояние страницы.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses only that it 'returns page state' (Возвращает состояние страницы), but says nothing about load-waiting, navigation failures, redirects, or whether existing page state is preserved. That is thin for a navigation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource, then the input format and return value. Nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter navigation tool with no output schema, the description covers the action, input format, and a rough return. Only navigation/waiting behavior is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema only labels the field 'Url', so the description adds real value by specifying it accepts a full address or a path like '/profile'. This meaningfully compensates for the empty schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Открывает' / opens) and resource ('страницу avito.ru'), and the path example clarifies the navigation scope. It is clearly distinguishable from siblings like avito_click or avito_press, though it does not name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — you open a page to begin interacting with it — but there is no explicit statement of when to use this versus alternatives such as avito_back or avito_search. No prerequisites or conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_pressA

Нажимает клавишу (Enter, Escape, Tab, ArrowDown, PageDown…). Enter в сообщениях — только с confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
confirmNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It usefully flags that Enter in a messaging context is gated behind confirm=true, but it does not say what a keypress triggers generally (navigation, submission, potential side effects) or how the call behaves outside that one special case.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no filler; the core action leads and the caveat follows. The trailing ellipsis in the key list makes the enumeration slightly loose but costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter, no-annotation, no-output-schema keypress tool, the description covers the action, example inputs, and the one safety-relevant constraint. A note on return value or general side effects would make it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and largely does: it illustrates valid values for 'key' and explains the meaning and default behavior of 'confirm' via the messaging-Enter rule. It does not, however, clarify confirm's scope for keys other than Enter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (presses) and resource (a keyboard key) and enumerates concrete examples (Enter, Escape, Tab, ArrowDown, PageDown). This implicitly separates it from typing/submitting siblings like avito_type, but it never explicitly names an alternative, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one conditional rule: 'Enter in messages — only with confirm=true', which tells the agent when confirm is mandatory. However, it offers no general when-to-use guidance versus siblings such as avito_type for text entry, leaving the primary routing decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_profilesA

Профили аккаунта из меню аватара (обычный, Pro и др.). Первый — активный. Переключение: avito_switch_profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose useful behavior — the source of the list (avatar menu) and that the first entry is the active profile — and implies a read-only listing, but never states that it makes no changes, nor anything about failure modes or return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, front-loaded with what the tool returns, then the ordering fact, then the alternative. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameter-less read tool with no annotations and no output schema, the description covers what is returned and the meaningful ordering property, which is enough to call it correctly. Slightly richer detail (e.g. whether names/identifiers come back) would make it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters (schema coverage 100% on an empty property set), so there is no parameter semantics to explain. Baseline 4 applies; nothing is missing that the description could reasonably add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the concrete resource (account profiles taken from the avatar menu), enumerates their kinds (regular, Pro, etc.), and explicitly disambiguates from the sibling avito_switch_profile, which handles switching. An agent can pick between the two without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final clause routes the agent to avito_switch_profile for the switching action, which is clear contextual guidance. It stops short of an explicit 'when to use this instead' statement for read/refresh scenarios, but the boundary is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_readA

Читает текущую страницу. wait_for_text — подождать до 15 с, пока на странице появится этот текст (для разделов, которые подгружаются после открытия).

mode="text" — видимый текст (по частям: offset/max_chars; selector — CSS-область).
mode="snapshot" — список кнопок, ссылок и полей с ref (e1, e2…) для avito_click и avito_type.
ParametersJSON Schema
NameRequiredDescriptionDefault
modeNotext
offsetNo
selectorNo
max_charsNo
viewport_onlyNo
wait_for_textNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose useful behavior: wait_for_text blocks up to 15 s, text is returned in chunks via offset/max_chars, and snapshot yields refs (e1, e2…) for later interactions. However, it never covers viewport_only, nor what happens at end-of-page/chunk boundaries, leaving meaningful behavioral gaps for an annotation-free tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, purpose front-loaded, then mode-specific behavior, each sentence earning its place with no filler. The structure maps cleanly to how an agent would decide between modes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter, annotation-free read tool with no output schema, the description covers modes, chunking, refs, and the wait timeout, which is close to sufficient. The unexplained viewport_only parameter and the absence of any return-shape or end-of-content note leave it short of fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does explain five of six parameters meaningfully (mode semantics, offset/max_chars chunking, selector as a CSS scope, wait_for_text with its timeout). Only viewport_only is left completely undefined, which is the one gap in otherwise strong parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Читает текущую страницу') and clearly distinguishes its two output modes, text vs snapshot. It even names the downstream consumers (avito_click, avito_type) of the snapshot refs, which helps an agent place it in the workflow. It does not, however, explicitly contrast itself against non-read siblings like avito_screenshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when each mode applies (visible text vs interactive refs) and when wait_for_text is needed (sections that load after opening), which is real invocation guidance. It stops short of saying when to prefer this tool over alternatives such as avito_screenshot or avito_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_replace_textA

Заменяет один точный фрагмент текста в поле или редакторе описания (ref из snapshot), не трогая остальное. replace="" удаляет фрагмент; drop_empty_line=true затем убирает опустевшую строку.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
findYes
replaceYes
drop_empty_lineNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses two edge cases – replace="" deletes the fragment and drop_empty_line=true removes the emptied line – but omits what happens when 'find' matches nothing (error vs no-op) and whether the target must be focused/active.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler; the core replacement behavior is front-loaded, followed immediately by the edge-case semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the operation and parameter edge cases but leaves out failure behavior (no match found) and interaction prerequisites (focus/click), which an agent would need to invoke it reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description effectively covers all four parameters: ref is tied to a snapshot, find is the exact fragment, replace documents the empty-string deletion case, and drop_empty_line documents its effect. Only finer details like occurrence matching are left unstated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it replaces one exact text fragment in a field or description editor, explicitly noting it does not touch the rest of the text. This implicitly distinguishes it from the typing-oriented sibling avito_type, though no sibling is named directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the semantics ('one exact fragment... without touching the rest'), but there is no explicit when-to-use guidance or exclusion versus the closest sibling avito_type, nor any stated precondition such as the field needing focus.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_save_imagesB

Скачивает фото объявлений (адреса с avito.st из avito_listing) в папку на диске — для разбора обложек и галерей.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes
prefixNo
dest_dirYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the key side effect: files are downloaded into a folder on disk. However, it omits overwrite behavior, naming/format handling, and any failure or permission caveats, so the behavioral picture is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with no filler, front-loading the action and resource. The trailing purpose clause adds some value but is the least essential part.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with no annotations and no output schema, the description covers the core action and two of three parameters but leaves 'prefix' and return/error behavior unexplained, so it is adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It adds real meaning for 'urls' (avito.st addresses from avito_listing) and 'dest_dir' (a disk folder), but the 'prefix' parameter is never mentioned, leaving one of three parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: downloads listing photos to a disk folder, and identifies the input source (avito.st URLs from avito_listing). This clearly separates it from siblings like avito_screenshot or avito_listing itself, though the phrase 'для разбора обложек и галерей' is more intent than scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The mention of 'из avito_listing' implies the tool should be used downstream of avito_listing, which is useful routing context, but there is no explicit when-to-use vs when-not or any stated prerequisite beyond that inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_screenshotB

Снимок текущей страницы — когда важно, как она выглядит (обложки, вёрстка).

ParametersJSON Schema
NameRequiredDescriptionDefault
full_pageNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It does not disclose the return format (image data, URL, or file path), default capture behavior, required permissions, or any side effects. For a screenshot tool with zero annotation coverage and no output schema, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, dense sentence front-loads the core action ('Снимок текущей страницы') followed by the selection condition. No words are wasted, and the structure is appropriately sized for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter screenshot tool with no annotations and no output schema, the description should at minimum clarify what the tool returns (e.g., image blob vs. saved file) and how full_page changes behavior. Neither is covered, leaving key gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter, full_page, with 0% description coverage. The description never mentions this parameter or explains what toggling it does (viewport vs. entire page). With schema descriptions absent, the description fails to compensate, leaving the parameter's effect undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb+resource: 'Снимок текущей страницы' (snapshot of current page). It also hints at differentiation from text-oriented siblings by noting it is for when visual appearance matters ('когда важно, как она выглядит'). However, no sibling is named, so it falls short of the 5-level clarity seen in definitions that explicitly route to alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear selection condition: use when the visual appearance of the page matters, with concrete examples like covers and layout ('обложки, вёрстка'). It lacks explicit when-not guidance or named alternatives, but the context is sufficient for an agent to decide it is the visual capture tool rather than a text-reading tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_scrollB

Прокручивает страницу; нужно для подгрузки ленты и отзывов.

ParametersJSON Schema
NameRequiredDescriptionDefault
screensNo
directionNodown

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose one meaningful behavior: the scroll exists to trigger lazy content loading. That said, it says nothing about side effects, whether the viewport state persists, or what happens at the top/bottom boundaries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that front-loads the action before its motivation, with no filler. It is perhaps slightly under-specified rather than padded, but structurally clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description covers purpose but leaves the agent guessing about direction/screens semantics and behavior at scroll limits. Adequate but with visible gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Two parameters (screens, direction) with 0% schema description coverage, and the description explains neither the magnitude semantics of 'screens' nor the enum values 'top'/'bottom'. With only 50% of parameters even having an enum and no defaults surfaced in the text, the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Прокручивает страницу') plus its purpose ('подгрузки ленты и отзывов'), so an agent can distinguish it from sibling actions like avito_press or avito_click. It does not explicitly name a sibling alternative, which keeps it just below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'нужно для подгрузки ленты и отзывов' gives an implicit use condition (call it to lazy-load more feed/review content), which points an agent in the right direction. However, it offers no exclusions, no guidance on when to prefer avito_wait_for_user or repeated scrolling, and no mention of how many scrolls are needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_statusA

Запускает окно Chrome для Авито (если не запущено) и сообщает текущую страницу, вход и блокировку.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses a side effect (launching Chrome if needed) and the status fields returned (current page, login, blocking), which is useful. It lacks details on timing, authentication requirements, or what 'blocking' entails, so it is partially transparent but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence that front-loads the launch behavior and then the reporting behavior. It is appropriately sized with no filler, though the combined actions make it slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity, empty schema, and no output schema, the description adequately covers the essential behavior and the main status fields the agent will receive. It could be more explicit about output format or error conditions, but it is largely complete for this simple status tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to convey. The baseline for zero parameters is 4; the description does not need to add parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'launches Chrome window for Avito (if not running)' and 'reports current page, login and blocking'. This distinguishes it from action-oriented siblings like avito_click or avito_open, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: the tool can be called to check status or to ensure the browser is running before other actions. However, there is no explicit guidance on when to prefer this over avito_open or avito_listing, nor any when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_switch_profileA

Переключает аккаунт на профиль с номером index из avito_profiles (1 — текущий) и открывает его кабинет.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the two visible effects (account switch + cabinet opened), but says nothing about whether the switch persists across other tool calls, what happens to concurrent state, or what occurs on an invalid index. Useful but incomplete for a state-changing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and resource, with the parameter's meaning and source tucked into a parenthetical. Zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, no-annotation, no-output-schema tool, the description covers the essentials (what it does, how to obtain the index). It omits error/out-of-range behavior and whether the account switch affects subsequent tool calls, which matters for an agent operating a browser session.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single 'index' parameter is undocumented in the schema, so the description must compensate — and it does, defining the index as the profile number from avito_profiles with 1 meaning the current profile. It does not state valid bounds or behavior for out-of-range values, so not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('switches account to profile ... and opens its cabinet') and ties the operand to a sibling tool, avito_profiles, so it is distinguishable from navigation siblings like avito_open. It stops short of 5 only because the effect on the session vs. just the view is not fully disambiguated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage by stating the index comes from avito_profiles and that 1 is the current profile, which tells the agent where to source the value. It never says when this tool should be preferred over simply opening a page, nor any preconditions or when not to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_typeB

Вводит текст в поле (ref из snapshot). submit=true нажимает Enter; в сообщениях это отправка — нужен confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
textYes
clearNo
submitNo
confirmNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose real behavioral traits: submit=true presses Enter and sending a message requires confirm=true, which functions as a safety gate. However, it omits that clear defaults to true (the field is wiped before typing) and says nothing about permissions or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very compact and front-loaded: the core action comes first, then the two behavioral caveats. Nothing is padded, though the fragmentary style loses a little clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param, 0%-coverage tool with no annotations and no output schema, the description covers the most consequential flags (submit, confirm) but leaves clear and text unexplained and does not describe the return state, so it is only adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there are 5 parameters, so the description must compensate. It explains ref (a snapshot reference), submit, and confirm, but leaves text and clear undocumented, so compensation is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: types text into a field, with ref coming from a snapshot. An agent can distinguish this from avito_press and avito_click. It stops short of explicitly naming those siblings as alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than spelled out: the messaging scenario ('в сообщениях это отправка') tells the agent when confirm is needed, but there is no explicit guidance on when to choose this over avito_press or avito_replace_text.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_wait_for_userB

Ждёт, пока пользователь пройдёт проверку или войдёт в аккаунт в окне Chrome. Окно выводится на передний план.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoany
timeout_sNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose two behavioral traits beyond the schema: the call blocks until the user acts, and it has a visible side effect of bringing the window to the foreground. It does not disclose what is returned on success vs. timeout, whether the call errors on expiry, or whether the flow state is preserved across the wait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, correctly front-loaded with the blocking wait and followed by the foreground side effect. Nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A blocking, human-in-the-loop tool with two undocumented parameters, no annotations and no output schema should say more. Timeout behavior, return/error semantics, and the meaning of the reason modes are all missing, leaving the agent unable to reason about failure or to choose the right reason value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description never mentions either parameter. Its wording ('verification or login') loosely maps onto the 'captcha'/'login' values of the reason enum, but the multi-value default of 'any' and the entire timeout_s parameter (including units and default) are left unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it waits until the user completes verification or logs in, in a Chrome window. That is unambiguous and clearly unlike the other avito_* interaction tools (click, type, press), but it never names or contrasts an alternative, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the scenario it describes ('passes verification or logs into the account'), which tells the agent this is the tool to call when a captcha or login blocks the flow. There is no explicit when-not guidance, no mention of what a caller should do instead, and no statement of what happens if the user never acts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updatesv0.1.0
    • First observedavito_back
    • First observedavito_click
    • First observedavito_hover
    • First observedavito_listing
    • First observedavito_my_items
    • First observedavito_open
    • First observedavito_press
    • First observedavito_profiles
    • First observedavito_read
    • First observedavito_replace_text
    • First observedavito_save_images
    • First observedavito_screenshot
    • First observedavito_scroll
    • First observedavito_search
    • First observedavito_status
    • First observedavito_switch_profile
    • First observedavito_type
    • First observedavito_wait_for_user

TDQS

B3.4/5.0

Scored across 18 tools

Disambiguation4/5

Tools largely target distinct browser actions (click, type, press, scroll, hover), page extraction (read, listing, search), and account/profile management. Some potential overlap exists between avito_type vs avito_replace_text and avito_status vs avito_read, but descriptions clarify boundaries well enough.

Naming Consistency4/5

All names use the avito_ prefix and snake_case, which is consistent and predictable. Most are verb-based, though a few noun-based names (avito_listing, avito_my_items, avito_profiles) are minor deviations that remain readable.

Tool Count4/5

18 tools is slightly above the typical 3-15 range but reasonable for a browser-automation server with both low-level primitives and Avito-specific helpers. Each tool appears to serve a distinct role rather than being redundant.

Completeness3/5

The surface covers browsing, searching, listing parsing, own items, profiles, and image saving. However, there are no dedicated high-level tools for posting/editing/deleting listings or managing messages, so core transactional Avito workflows rely on manual click/type/press workarounds.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to control and automate your Chrome browser directly, leveraging existing login states and configurations for tasks like content analysis, semantic search across tabs, screenshots, network monitoring, and interactive operations.
    11
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to fully control Google Chrome: navigate, click, fill forms, inspect DevTools, and manage tabs with parallel execution and session isolation.
    24
    7 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables local-first, read-only interaction with Avito through your own authenticated Chrome session, without sharing credentials with the MCP client. Provides tools for searching listings, viewing your listings, favorites, chats, and messages.
    2
    2
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables browser automation through a persistent Chrome instance exposed via HTTP, including navigation, screenshots, clicks, typing, multi-tab and multi-profile management, proxy switching, login state export, and AI-driven task execution.
    -