# io.github.elchin92/avito-mcp (npm · avito-mcp)

An AI agent that runs your Avito account — 148 tools for chats, listings, promotion, orders.

- Trust score: 79/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- npm · `avito-mcp`: 79/100 (this document), [markdown](https://verifymcp.io/servers/elchin92-avito-mcp/avito-mcp.md), [page](https://verifymcp.io/servers/elchin92-avito-mcp/avito-mcp)

## Channel facts

- Registry: `npm`
- Package: `avito-mcp`
- Version: `2.0.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects @hono/node-server 1.19.17, reached via @modelcontextprotocol/node > @hono/node-server. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (96 of 97), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to elchin92/avito-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 77/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 29600 tokens (~176/item across 168 items; 144 tools + 24 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 25/100
  - Stability check failed: the tool surface changed between 1.1.1 and 2.0.0: 0 tool removals, 14 breaking changes, 0 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (2% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add elchin92-avito-mcp -- npx -y avito-mcp
```

### Codex

```bash
codex mcp add elchin92-avito-mcp -- npx -y avito-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "elchin92-avito-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "avito-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add elchin92-avito-mcp --command npx --arg -y --arg avito-mcp
```

### Hermes

```yaml
mcp_servers:
  elchin92-avito-mcp:
    command: "npx"
    args: ["-y", "avito-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "elchin92-avito-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "avito-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 79, 0)

- [security regression] GHSA-frvp-7c67-39w9 affects this package: medium
- [security regression] Known CVEs: partial → fail
- [functional] Package version: 1.3.3 → 2.0.0

### 2026-08-02 (score 79, +23)

- [security regression] Provenance: pass → unverified
- [security regression] Install scripts: pass → unverified
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] The attested source repository moved: elchin92/avito-mcp
- [functional regression] Maintenance: pass → unverified
- [functional regression] License: pass → unverified
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: MIT

### 2026-08-01 (score 56, +51)

- [security regression] Stability: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security] The attested source repository moved: elchin92/avito-mcp
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: MIT

### 2026-07-31 (score 5, −35)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 40, −35)

- [security regression] Install scripts: pass → unverified
- [security regression] Provenance: pass → unverified
- [security regression] Known CVEs: partial → unverified
- [security] The attested source repository moved: elchin92/avito-mcp
- [functional regression] License: pass → unverified
- [functional regression] Dependency health: partial → unverified
- [functional regression] Maintenance: pass → unverified
- [functional] Licence: MIT

### 2026-07-28 (score 75, +42)

- [security improvement] Known CVEs: unverified → partial
- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security] The attested source repository moved: elchin92/avito-mcp
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: MIT

### 2026-07-27 (score 33)

First indexed and scored.

## MCP tools (144)

### `meta_get_rate_limits` (~81 tokens)

Rate-limit status

Returns the most recently observed X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset values, grouped by logical API domain (core, messenger, items, etc.) across all processes in the current account namespace. Useful for diagnosing "why am I being throttled" — Avito enforces a per-minute limit.

### `meta_health` (~53 tokens)

Health: overall server status

Universal health-check: package version, active capabilities, rate-limit status, idempotency ledger size, pending actions count, dryRun default. Does not call the Avito API. Safe to call as often as you like.

Output parameters:

- `capabilities` (object)
- `counters` (object)
- `name` (string)
- `ok` (boolean)
- `safety` (object)
- `timestamp` (string)
- `uptimeSec` (number)
- `version` (string)

### `meta_auth_status` (~112 tokens)

Auth: OAuth token status (no secrets)

Reports only token METADATA: present/absent, expiresInSec, last refresh error. The token itself is NEVER returned — for that use the auth_* tools under AVITO_MCP_EXPOSE_AUTH_TOOLS=1 (hidden by default). By default it does not force a refresh — if probe=true, it will attempt getToken() (which may trigger a refresh).

Input parameters:

- `probe` (boolean): If true, attempt getToken(), which may trigger a refresh when the token has expired. Default false.

Output parameters:

- `configured` (boolean)
- `expiresInSec`
- `lastError`
- `probeOk`
- `tokenFile` (string)
- `tokenPresent` (boolean)

### `meta_capabilities` (~56 tokens)

Capabilities: what is enabled in this run

Returns a machine-readable description of the current configuration: mode, allow/deny lists, confirmation, dry-run, idempotency, local file access. Useful for an agent to understand which operations are fundamentally available before attempting to call tools.

Output parameters:

- `account` (object)
- `allowToolsCount` (integer)
- `approvalMode` (string)
- `confirmationMode` (string)
- `denyToolsCount` (integer)
- `dryRunDefault` (boolean)
- `features` (object)
- `idempotencyTtlSec` (integer)
- `mode` (string)
- `moneyUnits` (object)
- `name` (string)
- `schemaHash`
- `tools` (array)
- `version` (string)

### `meta_confirm_action` (~145 tokens)

✓ Confirm a pending action

⚠️ Executes a previously deferred action by its confirmation_id. Use ONLY after explicit human confirmation — the flow is designed as a server-side two-step guard against accidental one-shot execution, not as cryptographic protection against an autonomous agent. Confirmation is single-use: the id is deleted after a successful call. AVITO_MCP_CONFIRMATION_SECRET is not set — soft-confirmation is in effect. Set the env variable to switch to hard-confirmation.

Input parameters:

- `confirmation_id` (string, required): ID of the pending action (returned in the confirmation_id field on the first tool call).
- `confirmation_secret` (string): Not used when AVITO_MCP_CONFIRMATION_SECRET is not set.

### `meta_cancel_action` (~41 tokens)

✗ Cancel a pending action

Cancels a previously deferred action. After cancellation the confirmation_id is no longer valid.

Input parameters:

- `confirmation_id` (string, required): ID of the pending action to cancel.

### `meta_list_pending_actions` (~53 tokens)

Pending actions: list

Lists the current pending actions awaiting confirmation. Args are not shown — only tool name, risk, a brief summary, and the creation and expiration times. Use it to diagnose "what did I just ask to confirm".

### `user_get_user_info_self` (~87 tokens)

User profile

Returns the profile of the currently authorized account (get_user_info_self): numeric id (this is the Profile_id), email, name, verified phone numbers, and profile_url. Read-only, no parameters. Handy for finding out the Profile_id and checking which account the server is running under; for the balance use get_user_balance, for the list of operations use post_operations_history.

### `user_get_user_balance` (~136 tokens)

Wallet balance

Reads the account wallet balance (get_user_balance): the amount of real money (real) and the amount of bonus funds (bonus) in rubles. Read-only, a point-in-time snapshot. This is the Personal Account wallet, not the CPA balance (for CPA see the cpa domain). For the history of charges/top-ups use post_operations_history.

Input parameters:

- `user_id` (integer): Account number (Profile_id) in the Avito Personal Account, format int64. Optional: by default the Profile_id from .env (your own account) is substituted. You can find out the id via get_user_info_sel…

### `user_post_operations_history` (~223 tokens)

Operations history

Returns the list of account wallet operations for a period (post_operations_history): charges and top-ups in money and bonuses, with amountRub, amountBonus, amountTotal, operation type/name, service type (vas, cpa, tariff, etc.), itemId, and dates for each operation. Read-only. These are Personal Account wallet movements, not the CPA balance. Constraints: dateTimeFrom no more than a year ago, the range between from/to no more than one week; for the current balance use get_user_balance.

Input parameters:

- `dateTimeFrom` (string, required): Start of the selection period, required. Format date-time ISO 8601, for example "2026-05-01T00:00:00". No more than one year ago from the current moment.
- `dateTimeTo` (string, required): End of the selection period, required. Format date-time ISO 8601, for example "2026-05-08T00:00:00". The range from dateTimeFrom is no more than one week (7 days).

### `items_get_items_info` (~249 tokens)

List listings

Returns a LIST of the authenticated user's listings (get_items_info) — id, status, category, link on the site. Read-only, changes nothing. Use it to find listing ids and get an overview; for details on a single listing, use items_get_item_info. Supports pagination (page + per_page) and filters (status, category, updatedAtFrom). Limit: 25 requests/min. Does not work with employees' listings — for those (under the main account or as an authenticated employee) it returns an empty list.

Input parameters:

- `category` (integer): Numeric Avito category ID to filter listings by category.
- `page` (integer): Pagination page number, starting from 1.
- `per_page` (integer): Page size: how many listings to return per request (1–100). If omitted, the server picks a default value.
- `status` (string): One status or a comma-separated list: active, removed, old, blocked, rejected. Example: "active,old".
- `updatedAtFrom` (string): Filter: return only listings updated no earlier than this date (ISO 8601, e.g. "2026-05-01").

### `items_get_item_info` (~133 tokens)

Listing details

Returns detailed information about a SINGLE listing (get_item_info) — status, price, address, list of applied VAS services, etc. Read-only. Use it when the item_id is already known; for a list of listings, use items_get_items_info, and for view/contact statistics, use items_post_item_stats_shallow (this method does not return statistics). Limit: 500 requests/min.

Input parameters:

- `item_id` (integer, required): ID of the Avito listing to get details for.
- `user_id` (integer): ID of the user who owns the listing. Defaults to Profile_id from .env.

### `items_post_calls_stats` (~169 tokens)

Call statistics

Returns aggregated CALL statistics for listings over a period (post_calls_stats) — total/new/answered/new answered, broken down by day. Read-only analytics, changes nothing and spends nothing. The period is set by dateFrom..dateTo (YYYY-MM-DD). Without itemIds — across all of the user's listings. For views/contacts, use items_post_item_stats_shallow.

Input parameters:

- `dateFrom` (string, required): Start of the period, inclusive (YYYY-MM-DD).
- `dateTo` (string, required): End of the period, inclusive (YYYY-MM-DD).
- `itemIds` (array): List of listing IDs to filter by. Without it — statistics across all of the user's listings.
- `user_id` (integer): ID of the owner user. Defaults to Profile_id from .env.

### `items_post_vas_prices` (~127 tokens)

VAS service prices

Returns the cost of promotion services (VAS), available packages and stickers for the given listings (post_vas_prices). Read-only — does NOT purchase and does NOT spend money, only a price reference. Always call it BEFORE purchasing via items_apply_vas / items_put_item_vas to learn the current service slugs and their prices.

Input parameters:

- `itemIds` (array, required): List of listing IDs to get VAS prices and available services/stickers for (at least 1).
- `userId` (integer): ID of the owner user. Defaults to Profile_id from .env.

### `items_post_item_stats_shallow` (~282 tokens)

Listing statistics

Returns counters (shallow statistics) for a list of listings over a period (post_item_stats_shallow / itemStatsShallow): unique views, contacts, favorites added. Read-only analytics. Use it for metrics on specific item_ids grouped by day/week/month; for extended profile analytics with filters and sorting, use items_post_item_analytics, and for calls, use items_post_calls_stats. Limits: no more than 200 listings per request, depth no more than 270 days back.

Input parameters:

- `dateFrom` (string, required): Start of the period, inclusive (YYYY-MM-DD); no more than 270 days back.
- `dateTo` (string, required): End of the period, inclusive (YYYY-MM-DD).
- `fields` (array): Which metrics to return: views, uniqViews, contacts, uniqContacts, favorites, uniqFavorites. Calls are not supported here; use items_post_calls_stats. If omitted, all supported counters are returned.
- `itemIds` (array, required): List of listing IDs to get counters for (from 1 to 200 per request).
- `periodGrouping` (string): Group counters by period: day, week (by the first day of the week), month (by the first day of the month).
- `user_id` (integer): ID of the owner user. Defaults to Profile_id from .env.

### `items_post_item_analytics` (~300 tokens)

Listing analytics

Returns EXTENDED statistical metrics for the profile/listings over a period (post_item_analytics, stats v2): views, contacts, presenceSpending, etc. with flexible grouping, filters and sorting. Read-only analytics. Choose it over items_post_item_stats_shallow when you need filters by category/employee, sorting by a metric, or presence-spending metrics. limit ≤ 1000.

Input parameters:

- `dateFrom` (string, required): Start of the period, inclusive (YYYY-MM-DD).
- `dateTo` (string, required): End of the period, inclusive (YYYY-MM-DD).
- `filter` (object): Selection filters: categoryIDs — an array of category IDs, employeeIDs — an array of employee IDs. Without the filter — the entire profile.
- `grouping` (string, required): How to group metrics: day, week, month, item, or totals.
- `limit` (integer, required): Maximum number of rows in the response (0..1000) for pagination.
- `metrics` (array, required): List of requested metrics (at least 1): views, contacts, presenceSpending, etc.
- `offset` (integer, required): Offset from the start of the selection for pagination (>= 0).
- `sort` (object): Sorting of results: key — the metric name, order — asc (ascending) or desc (descending).
- `user_id` (integer): ID of the owner user. Defaults to Profile_id from .env.

### `items_post_account_spendings` (~297 tokens)

Profile spendings

Returns a REPORT of the profile's spendings over a period by Avito spending category: all, promotion, presence, commission, or rest. Read-only, spends no money (only shows already incurred spending). Period dateFrom..dateTo (YYYY-MM-DD). Note: grouping here is a STRING "day"|"week"|"month" (NOT an object, unlike items_post_item_analytics). Data depth no more than 270 days, no more than 1 request per minute. Required: dateFrom, dateTo, spendingTypes, grouping.

Input parameters:

- `dateFrom` (string, required): Start of the period, inclusive (YYYY-MM-DD); no more than 270 days back.
- `dateTo` (string, required): End of the period, inclusive (YYYY-MM-DD).
- `filter` (object): Optional selection filters: categoryIDs — category IDs, itemIDs — listing IDs, locationIDs — location IDs. employeeIDs is NOT supported here. Without the filter — spendings of the entire profile.
- `grouping` (string, required): Group spendings by period — a string (required): day (by day), week (by week), month (by month).
- `spendingTypes` (array, required): Spending categories from the Avito contract (at least 1): all, promotion, presence, commission, rest.
- `user_id` (integer): ID of the owner user. Defaults to Profile_id from .env.

### `items_update_price` (~269 tokens)

⚠️ Change price

Changes a listing's price (update_price). ⚠️ PUBLIC: the new price is immediately visible to buyers on the site. Requires item_id and price (integer, in rubles). Available only for the Goods, Spare Parts, Auto and Real Estate categories (except short-term rentals); other categories return an error. Spends no money, but this is a live change to a public listing — confirm with the user. Limit: 150 requests/min.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `item_id` (integer, required): ID of the listing whose price needs to be changed.
- `price` (integer, required): New price in rubles, an integer (>= 0). Becomes visible to buyers immediately.

### `items_put_item_vas` (~309 tokens)

⚠️ Apply VAS

Applies ONE additional promotion service (VAS) to a listing (put_item_vas). ⚠️ MONEY: charges money from the balance; irreversible. The response contains service data and the charged amount. DEPRECATED: for one or more services, prefer items_apply_vas (v2); for a package of services, use items_put_item_vas_package_v2. First call items_post_vas_prices for the current slug and price. Confirm with the user. Note: an error does not guarantee the service was not purchased — check again in a few minutes.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `item_id` (integer, required): ID of the listing the service is applied to.
- `user_id` (integer): ID of the owner user. Defaults to Profile_id from .env.
- `vas_id` (string, required): Slug of a single VAS service: "highlight" or "xl".

### `items_put_item_vas_package_v2` (~328 tokens)

⚠️ Apply VAS package

Applies a PACKAGE of promotion services (VAS) to a listing (put_item_vas_package_v2). ⚠️ MONEY: charges money from the balance; irreversible. The response contains the charged amount. Unlike items_put_item_vas (a single service by slug) and items_apply_vas (an arbitrary set of services/stickers), this method purchases a pre-assembled package by its package_id. DEPRECATED, the recommended replacement is items_apply_vas (v2). First check the price via items_post_vas_prices and confirm with the user. An error does not guarantee the package was not purchased — check again in a few minutes.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `item_id` (integer, required): ID of the listing the service package is applied to.
- `package_id` (string, required): Identifier of the VAS service package from items_post_vas_prices.
- `user_id` (integer): ID of the owner user. Defaults to Profile_id from .env.

### `items_apply_vas` (~350 tokens)

⚠️ Apply VAS services

Applies ONE OR MORE promotion services (slugs) and/or stickers to a published listing (apply_vas, v2 — the current method). ⚠️ MONEY: charges money; irreversible. The response contains the IDs of the purchase operations for status tracking. The preferred replacement for the deprecated items_put_item_vas (a single service) and items_put_item_vas_package_v2 (a package). Within one request each service is applied only once; stickers are available only with the "XL listing" service, no more than three. First check the available slugs/stickers and price via items_post_vas_prices, and confirm with the user.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `itemId` (integer, required): ID of the published listing the services are applied to.
- `slugs` (array, required): Slugs of the promotion services to apply, e.g. ["highlight","xl"] (at least 1; available ones from items_post_vas_prices).
- `stickers` (array): Sticker IDs (integers), no more than 3; available only with the "XL listing" service.

### `messenger_get_chats_v2` (~260 tokens)

List chats

Returns a LIST of the account's chats (conversations with buyers) with a preview of the last message and an unread counter. Read-only — sends nothing and does not mark anything as read. Use it to find the needed chat_id before messenger_get_messages_v3, messenger_post_send_message or messenger_chat_read. To get the details of a single known chat, use messenger_get_chat_by_id_v2. Supports filters (items, types, unread) and offset-based pagination via limit/offset.

Input parameters:

- `chat_types`: Filter by chat types: u2i, u2u, or a2u. Prefer an array; a legacy CSV string remains accepted.
- `item_ids`: Filter by item IDs. Prefer an array (encoded as repeated query parameters); a legacy CSV string remains accepted.
- `limit` (integer): How many chats to return per page (1–100, default 100).
- `offset` (integer): Pagination offset: skip N chats (default 0).
- `unread_only` (boolean): true — return only chats with unread messages; false/omitted — all chats.
- `user_id` (integer): Avito account ID whose chats are requested. Defaults to Profile_id from .env.

### `messenger_get_chat_by_id_v2` (~129 tokens)

Chat by ID

Returns the details of a SINGLE chat by a known chat_id: participants, linked item, context, and the last message. Read-only. Use it when the chat_id is already known; to find a chat_id or get a list of conversations, use messenger_get_chats_v2. The conversation messages themselves are returned by messenger_get_messages_v3.

Input parameters:

- `chat_id` (string, required): Chat identifier (string) obtained from messenger_get_chats_v2.
- `user_id` (integer): Avito account ID that owns the chat. Defaults to Profile_id from .env.

### `messenger_get_messages_v3` (~180 tokens)

Chat messages

Returns the MESSAGES of a specific chat (V3), sorted newest to oldest: text, images, voice, links, date, and author. Read-only — does not mark the chat as read (use messenger_chat_read for that). Requires chat_id (from messenger_get_chats_v2). Page through a long conversation via limit/offset. For download URLs of voice files in messages, use messenger_get_voice_files.

Input parameters:

- `chat_id` (string, required): Chat identifier (string) from messenger_get_chats_v2.
- `limit` (integer): How many messages to return per page (1–100, default 100).
- `offset` (integer): Pagination offset: skip N messages (default 0).
- `user_id` (integer): Avito account ID that participates in the chat. Defaults to Profile_id from .env.

### `messenger_get_voice_files` (~106 tokens)

Voice messages

Returns temporary download URLs for voice messages by their voice_id. Read-only. voice_id values come from voice messages obtained via messenger_get_messages_v3 (the voice/voice_id field). The links are temporary — download immediately.

Input parameters:

- `user_id` (integer): Avito account ID that participates in the chats. Defaults to Profile_id from .env.
- `voice_ids` (required): Voice message identifiers from messenger_get_messages_v3. Prefer an array; a legacy CSV string remains accepted.

### `messenger_get_subscriptions` (~75 tokens)

Webhook subscriptions

Returns a LIST of the account's active webhook subscriptions: notification URLs and their versions/status. Read-only (despite the POST method — no body is required); creates and deletes nothing. Use it to check which URLs are subscribed before messenger_post_webhook_v3 (subscribe) or messenger_post_webhook_unsubscribe (unsubscribe).

### `messenger_post_send_message` (~291 tokens)

⚠️ Send message

Sends a TEXT message to a chat on behalf of the account. WARNING: the message is immediately and PUBLICLY visible to the other party (the buyer) and is not removed automatically (you can delete it via messenger_delete_message). Confirm the text with the user before calling. Requires chat_id (from messenger_get_chats_v2) and text up to 1000 characters. To send an image, use messenger_post_send_image_message.

Input parameters:

- `chat_id` (string, required): Recipient chat identifier (string) from messenger_get_chats_v2.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `text` (string, required): Message text, 1–1000 characters. Will be publicly visible to the other party.
- `user_id` (integer): Avito account ID of the sender. Defaults to Profile_id from .env.

### `messenger_post_send_image_message` (~273 tokens)

⚠️ Send image

Sends an IMAGE (by an already-uploaded image_id) to a chat on behalf of the account. WARNING: the image is immediately and PUBLICLY visible to the other party. Two-step process: first upload the file via messenger_upload_images and obtain an image_id, then call this tool. For text, use messenger_post_send_message. Confirm sending with the user.

Input parameters:

- `chat_id` (string, required): Recipient chat identifier (string) from messenger_get_chats_v2.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `image_id` (string, required): ID of a previously uploaded image, returned by messenger_upload_images.
- `user_id` (integer): Avito account ID of the sender. Defaults to Profile_id from .env.

### `messenger_delete_message` (~277 tokens)

⚠️ Delete message

Deletes a SINGLE message from a chat by message_id. WARNING: IRREVERSIBLE — the message cannot be restored; the deletion is visible to the other party (a "deleted" marker remains in place of the message). You can usually delete only your own messages. Requires chat_id and message_id (from messenger_get_messages_v3). Always confirm with the user before calling.

Input parameters:

- `chat_id` (string, required): Chat identifier (string) from messenger_get_chats_v2.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `message_id` (string, required): Identifier (string) of the message to delete, from messenger_get_messages_v3.
- `user_id` (integer): Avito account ID that owns the message. Defaults to Profile_id from .env.

### `messenger_chat_read` (~246 tokens)

Mark chat as read

Marks the unread messages of the specified chat as read, recording a read receipt and clearing the unread counter. Sends NOTHING to the other party and is not visible to them; does not modify or delete any message. Idempotent: calling it again on an already-read chat is safe. Requires chat_id (from messenger_get_chats_v2).

Input parameters:

- `chat_id` (string, required): Chat identifier (string) from messenger_get_chats_v2.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `user_id` (integer): Avito account ID that owns the chat. Defaults to Profile_id from .env.

### `messenger_post_blacklist_v2` (~275 tokens)

⚠️ Block users

Adds one or more users to the account's BLACKLIST. WARNING: a blocked user will no longer be able to message you in the messenger; this immediately affects a third party and requires confirmation. Accepts an array of users with a user_id and an optional context (item_id and reason). reason_id: 1=spam, 2=fraud, 3=insults and rudeness, 4=other reason.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `user_id` (integer): Avito account ID that maintains the blacklist. Defaults to Profile_id from .env.
- `users` (array, required): List of users to block (at least one), each as { user_id, context? }.

### `messenger_post_webhook_v3` (~250 tokens)

⚠️ Enable webhook

SUBSCRIBES THIS server's operator-configured receiver URL to webhook notifications (V3) about new messenger events. For security, the URL must exactly match AVITO_MCP_WEBHOOK_PUBLIC_URL + path + secret; arbitrary destinations are rejected. Changes account settings and causes Avito to send future events externally, so confirmation is required by default. You can check current subscriptions via messenger_get_subscriptions and disable them via messenger_post_webhook_unsubscribe.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `url` (string, required): Operator-configured public HTTPS receiver URL. It must exactly match this server webhook configuration.

### `messenger_post_webhook_unsubscribe` (~223 tokens)

Disable webhook

UNSUBSCRIBES the specified URL from messenger webhook notifications — Avito will stop sending events to this address. Changes account settings; to resume notifications you will have to subscribe again via messenger_post_webhook_v3. Specify exactly the URL that was subscribed (see the list in messenger_get_subscriptions).

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `url` (string, required): URL of the subscription to disable (must match the one previously subscribed; see messenger_get_subscriptions).

### `autoload_get_profile` (~84 tokens)

Autoload: get profile (v1, deprecated)

Returns the autoload profile settings (v1): autoload_enabled, report_email, the schedule, and the deprecated upload_url field. Read-only, no parameters. DEPRECATED: since 2024-12-23 the upload_url field has been replaced by feeds_data — use autoload_get_profile_v2, which returns an array of feeds. Prefer v2.

### `autoload_create_or_update_profile` (~400 tokens)

Autoload: save profile (v1, deprecated)

Creates or updates (upsert) a v1 autoload profile with a single URL feed. Overwrites the existing profile settings on the Avito side; if no profile exists, it creates one. DEPRECATED: since 2024-12-23 the single upload_url has been replaced by the feeds_data array — use autoload_create_or_update_profile_v2 (supports multiple feeds). Prefer v2.

Input parameters:

- `agreement` (boolean): Acceptance of the Avito Autoload terms of use. Required only when first creating a profile; can be omitted on update.
- `autoload_enabled` (boolean, required): Autoload status: true — enabled, false — disabled. Required.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `report_email` (string, required): Email address to which Avito will send upload reports. Required.
- `schedule` (array, required): Schedule of regular uploads (array of periods): each element = {rate: number of listings per period, weekdays: [0-6, where 0=Monday], time_slots: [0-23, where 0 = the 00:00-01:00 interval]}. Moscow t…
- `upload_url` (string, required): URL of the XML/YML feed of listings for regular uploads. Must start with http or https. Required.

### `autoload_upload` (~255 tokens)

⚠️ Autoload: launch upload

⚠️ Immediately LAUNCHES an unscheduled upload of listings from the feed at the URL specified in the profile settings (autoload_create_or_update_profile_v2). Side effect: publishes/updates/activates listings on Avito; the publication limits from the settings do NOT apply to this upload — all listings from the file will be processed. Limit: one upload per hour. Takes no business inputs — only the optional dryRun (preview without calling Avito) and idempotencyKey (duplicate protection). Returns only a launch confirmation; poll the result later via autoload_get_last_completed_report_v3.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…

### `autoload_user_docs_tree` (~81 tokens)

Autoload: category tree

Returns the full Avito category tree (an array of nodes with name, slug/id and nested children) for preparing an autoload feed. Read-only, no parameters. Use it to find the slug of the category you need, then pass it to autoload_user_docs_node_fields to get the fields. The reference is cacheable and changes rarely.

### `autoload_user_docs_node_fields` (~126 tokens)

Autoload: category fields

Returns the fields (tags) of a specific category for filling out the feed: their types (input/select/checkbox), whether they are required, dependencies between fields, allowed values, and references to catalogs. Read-only. First find the category slug via autoload_user_docs_tree, then call this method. Use it when preparing the XML/Excel file to know which tags are required for a category.

Input parameters:

- `node_slug` (string, required): Slug (unique identifier) of the category from the autoload_user_docs_tree tree, e.g. "remont". Required.

### `autoload_get_ad_ids_by_avito_ids` (~115 tokens)

Autoload: Ad ID by Avito ID

Returns the listing identifiers from the autoload file (ad_id) by their Avito identifiers (avito_id) — an avito_id → ad_id mapping. Read-only. Use it when you have Avito IDs and need to find the corresponding ID from the source feed. The reverse direction is autoload_get_avito_ids_by_ad_ids.

Input parameters:

- `query` (string, required): List of listing Avito IDs separated by "," or "|" (e.g. "12345,6789"). Required.

### `autoload_get_avito_ids_by_ad_ids` (~113 tokens)

Autoload: Avito ID by Ad ID

Returns the Avito listing identifiers (avito_id) by their identifiers from the autoload file (ad_id) — an ad_id → avito_id mapping. Read-only. Use it when you have an ID from the feed and need to find the published listing on Avito. The reverse direction is autoload_get_ad_ids_by_avito_ids.

Input parameters:

- `query` (string, required): List of listing IDs from the file (the feed Id parameter), separated by "," or "|". Required.

### `autoload_get_profile_v2` (~79 tokens)

Autoload: profile

Returns the autoload profile settings (v2, current version): autoload_enabled, report_email, the schedule, and the feeds_data array of feeds (name + file link). Read-only, no parameters. Prefer this method over autoload_get_profile (v1): v2 returns feeds_data instead of the deprecated single upload_url.

### `autoload_create_or_update_profile_v2` (~425 tokens)

Autoload: save profile

Creates or updates (upsert) an autoload profile (v2, current version). Overwrites the existing profile settings on the Avito side; if no profile exists, it creates one. Supports multiple feeds via feeds_data (unlike v1 with a single upload_url) — prefer this method. The uploads themselves run on the schedule, or manually via autoload_upload.

Input parameters:

- `agreement` (boolean): Acceptance of the Avito Autoload terms of use. Required only when first creating a profile; can be omitted on update.
- `autoload_enabled` (boolean, required): Autoload status: true — enabled, false — disabled. Required.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `feeds_data` (array, required): Array of feeds (at least one). Each element = {feed_name: feed name for the report, feed_url: URL of the file with listings, starts with http/https}. Required. See the FeedsData schema in swagger aut…
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `report_email` (string, required): Email address to which Avito will send upload reports. Required.
- `schedule` (array, required): Schedule of regular uploads (array of periods): each element = {rate: number of listings per period, weekdays: [0-6, where 0=Monday], time_slots: [0-23, where 0 = the 00:00-01:00 interval]}. Moscow t…

### `autoload_get_reports_v2` (~233 tokens)

Autoload: report list

Returns a list of autoload reports (id, started_at, finished_at, status) with pagination and a filter by creation date. Sorted in descending order: the most recent report first. Read-only; the response contains a meta block with total/pages. Use it to find a report_id, then fetch details via autoload_get_report_by_id_v3 / autoload_get_report_items_by_id.

Input parameters:

- `date_from` (string): Filter by report creation date "from" (inclusive), RFC3339 format, e.g. "2022-05-27T14:48:50.52Z".
- `date_to` (string): Filter by report creation date "to" (inclusive), RFC3339 format, e.g. "2022-05-27T14:48:50.52Z".
- `page` (integer): Page number (integer ≥ 1). Defaults to the first page.
- `per_page` (integer): Number of reports per page. Defaults to 50; the API allows up to 200, but it is capped at 100 here.

### `autoload_get_autoload_items_info_v2` (~117 tokens)

Autoload: listing info

Returns the current state of listings in autoload by their IDs from the file: avito_id, avito_status, report section, errors/warnings (messages), charge information, and processing date. Read-only, not tied to a specific report — returns the current status. Use it for targeted checks of selected listings (1-100 per request).

Input parameters:

- `query` (string, required): Listing identifiers from the file (the feed Id parameter): from 1 to 100, separated by "," or "|". Required.

### `autoload_get_last_completed_report` (~88 tokens)

Autoload: last report (v1, deprecated)

Returns summary statistics of the last completed upload (v2 format): per-section counters (section_stats), charges (listing_fees), events, and the feed_url link. Read-only, no parameters. DEPRECATED: since 2024-12-23 the single feed_url has been replaced by feeds_urls — use autoload_get_last_completed_report_v3. Prefer v3.

### `autoload_get_report_by_id_v2` (~122 tokens)

Autoload: report by ID (v2, deprecated)

Returns summary statistics of a specific upload by its report_id (v2 format): section_stats, listing_fees, events, status, and the feed_url link. Read-only. Get the report_id from autoload_get_reports_v2. DEPRECATED: since 2024-12-23 feed_url has been replaced by feeds_urls — use autoload_get_report_by_id_v3. Prefer v3.

Input parameters:

- `report_id` (integer, required): Autoload report identifier (ID); obtain it via autoload_get_reports_v2. Required.

### `autoload_get_report_items_by_id` (~262 tokens)

Autoload: upload listings

Returns the processing result of each listing in a specific upload (by report_id): ad_id, avito_id, avito_status, report section, errors/warnings, and a link. Read-only, with pagination (the response contains meta with total/pages). Use it for a line-by-line breakdown of an upload; for an upload summary see autoload_get_report_by_id_v3. Get the list of available sections for the sections filter from the report's section_stats.

Input parameters:

- `page` (integer): Page number (integer ≥ 1). Defaults to the first page.
- `per_page` (integer): Number of listings per page. Defaults to 50; the API allows up to 200, but it is capped at 100 here.
- `query` (string): Filter by listing ID: one or more IDs from the file or Avito IDs, separated by "," or "|".
- `report_id` (integer, required): Autoload report identifier (ID); obtain it via autoload_get_reports_v2. Required.
- `sections` (string): Filter by report sections: section slug identifiers separated by "," or "|" (get the slugs from the report's section_stats, e.g. via autoload_get_report_by_id_v3).

### `autoload_get_report_items_fees_by_id` (~215 tokens)

Autoload: upload charges

Returns the placement charges for each listing in a specific upload (by report_id): ad_id, avito_id, charge type (single — from the wallet / package — from a package), and the amount or package ID. Read-only, with pagination (meta with total/pages). Use it to break down the cost of an upload; for listing processing/statuses use autoload_get_report_items_by_id.

Input parameters:

- `ad_ids` (string): Filter by listing IDs from the file (the feed Id parameter), separated by "," or "|".
- `avito_ids` (string): Filter by listing Avito IDs, separated by "," or "|".
- `page` (integer): Page number (integer ≥ 1). Defaults to the first page.
- `per_page` (integer): Number of charges per page. Defaults to 100 (the API allows up to 200).
- `report_id` (integer, required): Autoload report identifier (ID); obtain it via autoload_get_reports_v2. Required.

### `autoload_get_last_completed_report_v3` (~113 tokens)

Autoload: last report

Returns summary statistics of the last completed upload (v3, current format): per-section counters (section_stats), charges (listing_fees), events, and the feeds_urls array of links. Read-only, no parameters. Use it after an upload has been processed (status success/success_warning/error); for a specific report use autoload_get_report_by_id_v3. v3 differs from v2 by supporting multiple feeds (feeds_urls instead of a single feed_url) — prefer v3.

### `autoload_get_report_by_id_v3` (~134 tokens)

Autoload: report by ID

Returns summary statistics of a specific upload by its report_id (v3, current format): section_stats, listing_fees, events, status, and the feeds_urls array of links. Read-only. Get the report_id from autoload_get_reports_v2; for a line-by-line breakdown of listings use autoload_get_report_items_by_id. v3 differs from v2 by supporting multiple feeds (feeds_urls instead of a single feed_url) — prefer v3.

Input parameters:

- `report_id` (integer, required): Autoload report identifier (ID); obtain it via autoload_get_reports_v2. Required.

### `orders_get_orders` (~250 tokens)

Orders: list

Returns a list of delivery orders (get_orders) with filters by ID, status, and creation date. Read-only, changes nothing. Use it as a starting point: take the available actions from the response (availableActions: confirm/reject/perform/receive/setMarkings/setTrackNumber/setCNCDetails, etc.) for subsequent write operations. Available only to B2C sellers. The response includes a hasMore flag for pagination.

Input parameters:

- `dateFrom` (integer): Unix timestamp in seconds. Returns only orders created no earlier than this moment.
- `ids` (array): Filter by Avito order IDs (array of strings). If omitted, all orders matching the other filters are returned.
- `limit` (integer): Maximum orders per page, from 0 to 20.
- `page` (integer): Page number for pagination (starting from 1).
- `statuses` (array): Filter by statuses (array). Allowed values: on_confirmation (awaiting confirmation), ready_to_ship (awaiting shipment), in_transit (in transit), canceled (canceled), delivered (delivered to the buyer…

### `orders_get_courier_delivery_range` (~131 tokens)

Orders: courier time slots

Returns the available time slots for a courier to pick up the item (get_courier_delivery_range), for seller-courier delivery (RDBS/Courier). Read-only. Call it BEFORE orders_set_courier_delivery_range — a specific slot is chosen from the response (dateOptions with intervals and intervalType). Do not confuse it with the set version: this one only reads the available intervals, it does not book them.

Input parameters:

- `address` (string, required): Seller's address where the courier picks up the item.
- `orderId` (string, required): Avito order ID.

### `orders_download_label` (~130 tokens)

Orders: download label

Downloads the generated PDF file with labels by taskID (download_label). Read-only, changes nothing. Call it AFTER orders_generate_labels or orders_generate_labels_extended, once the generation task is complete — the taskID comes from their response. Returns a structured binary response {mimeType: "application/pdf", sizeBytes, base64}; decode the base64 to save or print the file. If the task is not ready yet or the taskID is wrong, a 404 is returned.

Input parameters:

- `taskID` (string, required): ID of the label-generation task (document) obtained from orders_generate_labels(_extended).

### `orders_markings` (~299 tokens)

⚠️ Orders: Chestny Znak codes

⚠️ Submits "Chestny Znak" marking codes (DataMatrix) for the items in an order (markings). Write operation: stores the codes on the Avito side; required when the order has a setMarkings action (see availableActions in orders_get_orders). Maximum 50 marking records per request; the response contains an array of per-item results (success/error). Do not confuse it with status transitions (orders_apply_transition) — this method only attaches codes, it does not change the order status.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `markings` (array, required): Array of marking records (max 50). Each record: itemId (Avito item ID), orderId (Avito order ID) and markings — an array of DataMatrix codes (up to 10 codes, each a string of 29–129 characters).

### `orders_accept_return_order` (~282 tokens)

⚠️ Orders: accept return

⚠️ Confirms the buyer's return of an item and selects the Russian Post office the return parcel will be sent to (accept_return_order). Write/public operation for courier delivery (Courier): the confirmation is visible to the buyer and irreversibly starts the return process. Call it when the order has an available acceptReturnOrder action. The response contains a success flag.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `orderId` (string, required): Avito order ID.
- `recipient` (object): Details of the person who will collect the return: name (full name) and phone (phone, format "+79999999999").
- `terminalNumber` (string, required): Number of the Russian Post office the return parcel will be sent to (e.g. "141138").

### `orders_apply_transition` (~312 tokens)

⚠️ Orders: change status

⚠️ Applies an order status transition (apply_transition), such as confirmation or cancellation. WARNING: the new status is visible to the buyer and affects the deal; the transition is irreversible. The allowed transitions depend on the current status — see the list of available actions in availableActions from orders_get_orders. The response contains a success flag.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `orderId` (string, required): Avito order ID.
- `params` (object): Additional delivery parameters. For click-and-collect (CNC), a cnc object with the fields confirmCode (the code the buyer shows the seller) and marketplaceId (order number in the new system).
- `transition` (string, required): Transition name. Allowed values: confirm (confirm the order), reject (cancel the order), perform (confirm shipment, RDBS), receive (confirm delivery, RDBS/CNC). The set depends on the current status.

### `orders_check_confirmation_code` (~142 tokens)

Orders: verify code

Verifies the confirmation code for handing over an order at a pickup point (check_confirmation_code): the buyer states the code from the app and the method validates it. Effectively a read check, it does not change the order. The response contains status: success (code valid), fail (invalid), expired (expired), or attempts (attempts exhausted). Do not confuse it with delivery_check_confirmation_code from the delivery domain — this method belongs to order management.

Input parameters:

- `confirmCode` (string, required): The confirmation code the buyer showed/stated upon receipt.
- `parcelID` (string, required): Avito parcel ID (e.g. "P00081306679").

### `orders_cnc_set_details` (~334 tokens)

⚠️ Orders: click-and-collect (details)

⚠️ Prepares a click-and-collect order and sends the details to the buyer (cnc_set_details, CNC = click-and-collect). Write operation: the seller sets the pickup address, the booking period, and a comment the buyer will see. Call it when the order has an available setCNCDetails action. After handover, confirmation is done via orders_apply_transition (receive) with the buyer's code.

Input parameters:

- `address` (string): Address where the buyer picks up the item (e.g. "Tverskaya Street 3, Moscow").
- `bookingPeriod` (integer, required): Item booking period in hours (e.g. 4).
- `details` (string): A comment the buyer will receive (e.g. "I can hand over the item from 13:00 to 18:00").
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `id` (string, required): Avito order ID.
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `marketplaceId` (string, required): Order number in the new Avito system (marketplace).

### `orders_set_courier_delivery_range` (~393 tokens)

⚠️ Orders: select courier slot

⚠️ Selects (books) a specific time slot for a courier to pick up the item (set_courier_delivery_range), for seller-courier delivery. A write operation, unlike the read method orders_get_courier_delivery_range, which only shows the available slots — call it first and take the interval and intervalType from the response. Can be called again to change the time while the courier has not yet picked up the parcel. The response contains a success flag.

Input parameters:

- `address` (string, required): Seller's address where the courier picks up the item.
- `addressDetails` (string): Seller address details (entrance, floor, apartment, etc.).
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `endDate` (string, required): End date/time of the courier arrival in date-time format (ISO 8601); taken from the get method response.
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `intervalType` (string, required): Interval type from orders_get_courier_delivery_range.
- `name` (string, required): Full name of the seller's contact person.
- `orderId` (string, required): Avito order ID.
- `phone` (string, required): Phone of the seller's contact person.
- `startDate` (string, required): Start date/time of the courier arrival in date-time format (ISO 8601); taken from the get method response.

### `orders_set_tracking_number` (~262 tokens)

⚠️ Orders: tracking number

⚠️ Submits the parcel tracking number for delivery by the seller's partners (set_tracking_number, DBS). Write/public operation: the tracking number is visible to the buyer for tracking. Call it when the order has an available setTrackNumber action (or fixTrackNumber to correct it). The response contains a success flag; on error, code: incorrect_number (invalid number) or already_set (the number is already attached to another order).

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `orderId` (string, required): Avito order ID.
- `trackingNumber` (string, required): Parcel tracking number from the delivery service (e.g. "01-01031002199").

### `orders_generate_labels` (~240 tokens)

Orders: create labels

Creates a task to generate PDF labels for orders (generate_labels, up to 100 orders at a time). Available only for pickup-point orders. Returns a taskID; wait for it to be ready and download the file via orders_download_label. For large batches (up to 1000 orders) use orders_generate_labels_extended — it has a higher limit but a strict rate limit (1 request/min).

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `orderIDs` (array, required): Array of order IDs in the deals service (marketplace), from 1 to 100.

### `orders_generate_labels_extended` (~245 tokens)

Orders: create labels (up to 1000)

Creates a task to generate PDF labels for a large batch of orders (generate_labels_extended, up to 1000 orders at a time). Available only for pickup-point orders. Difference from orders_generate_labels: a higher order limit (1000 vs 100), but a strict rate limit — 1 request per minute. Returns a taskID; wait for it to be ready and download the file via orders_download_label.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `orderIDs` (array, required): Array of order IDs in the deals service (marketplace), from 1 to 1000.

### `delivery_create_announcement_3pl` (~326 tokens)

Delivery: create announcement [3PL]

[3PL] Creates an announcement of a planned shipment from one delivery service (sender) to another (receiver). The method is implemented on the delivery-service side — on a regular seller account it returns 403/404. Use it when you need to notify the receiving party about an upcoming parcel handover; unlike delivery_create_parcel this is a shipment announcement, not the creation of the parcel itself.

Input parameters:

- `announcementID` (string, required): Announcement identifier (required).
- `announcementType` (string, required): Announcement type.
- `barcode` (string, required): Unique announcement barcode, printed on the acceptance/handover act. Example: 000987654321.
- `date` (string, required): Announcement creation date and time in RFC 3339 format, UTC.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `packages` (array, required): List of cargo units (at least one).
- `receiver` (object, required): Receiving party and sorting center.
- `sender` (object, required): Sending party and sorting center.

### `delivery_cancel_announcement_3pl` (~220 tokens)

Delivery: cancel announcement [3PL]

[3PL] Cancels a previously created shipment announcement in the delivery service. Irreversibly cancels an announcement created via delivery_create_announcement_3pl. The method is implemented on the delivery-service side — on a regular seller account it returns 403/404.

Input parameters:

- `announcementID` (string, required): Identifier of the announcement to cancel (required).
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `reason` (string): Cancellation reason (optional).

### `delivery_create_parcel` (~354 tokens)

⚠️ Delivery: create parcel [3PL]

[3PL] Production creation of a parcel on the delivery-service side (CreateParcelRequest). The method is implemented by the delivery-service partner — on a regular seller account it returns 403/404. orderID, parcelID, items, sender, receiver, payment are required. Unlike delivery_create_sandbox_parcel_v2 ([SANDBOX v2]), this is production, the creation of a real parcel.

Input parameters:

- `barcodes` (array): Parcel barcodes (optional).
- `directOrderID` (string): Direct order identifier at the delivery service (optional).
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `items` (array, required): Parcel contents (items); at least one element.
- `options` (object): Return and parcel-tag options (optional).
- `orderID` (string, required): Avito order identifier.
- `package` (object): Packaging dimensions and weight (optional).
- `parcelID` (string, required): Parcel identifier on the delivery-service side.
- `payment` (object, required): Payment parameters for items and delivery.
- `receiver` (object, required): Receiver and delivery point.
- `sender` (object, required): Sender and delivery point.

### `delivery_sandbox_create_announcement` (~297 tokens)

Delivery: create announcement [sandbox]

[SANDBOX] Creates an announcement of a planned shipment to Avito in the test environment; after creation the announcement is routed to the delivery service specified in receiver. For delivery-service partners only. Unlike delivery_create_announcement_3pl (production /createAnnouncement), this is a sandbox, with no consequences.

Input parameters:

- `announcementID` (string, required): Announcement identifier (required).
- `announcementType` (string, required): Announcement type.
- `barcode` (string, required): Unique announcement barcode (printed on the acceptance/handover act).
- `date` (string, required): Announcement creation date and time in RFC 3339 format, UTC.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `packages` (array, required): List of cargo units.
- `receiver` (object, required): Receiving delivery service and sorting center.
- `sender` (object, required): Sending delivery service and sorting center.

### `delivery_sandbox_track_announcement` (~275 tokens)

Delivery: push announcement tracking event [sandbox]

[SANDBOX] Appends one tracking event for an announcement from the delivery service; does not modify existing history — use it to simulate an announcement progressing (ACCEPTANCE_DONE → RECEIVED → DELIVERED, or CANCELLED). One call records one event (not idempotent — re-sending logs a duplicate). Returns an empty 200 on success. For delivery-service PARTNERS only. This is the announcement-level analogue of delivery_tracking (which reports parcel-level status events).

Input parameters:

- `announcementID` (string, required): Identifier of the tracked announcement (required).
- `date` (string, required): Event date in RFC 3339 format, UTC.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `event` (string, required): Event type.
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…

### `delivery_custom_area_schedule` (~217 tokens)

Delivery: zone schedule [sandbox]

[SANDBOX] Sets the working schedule of a delivery zone for a specific day that differs from the regular schedule (for example, holidays/weekends). Re-uploading overwrites the previous schedule for those dates. For delivery-service partners only. The body is an array of schedules directly (no wrapper).

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `schedules` (array, required): List of unique custom schedules by date (zone tag, date, working intervals).

### `delivery_sandbox_cancel_parcel` (~250 tokens)

Delivery: cancel parcel [sandbox]

[SANDBOX] Cancels a test parcel on behalf of the receiver (actor=receiver); returns a success status. Only parcels created via delivery_create_sandbox_parcel_v2 can be cancelled. Implemented on the delivery-service side, for delivery-service PARTNERS only. Unlike delivery_v1_cancel_parcel ([SANDBOX v1] with an options field), this is the base contract with an actor field.

Input parameters:

- `actor` (string, required): The recipient initiates the cancellation.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `parcelID` (string, required): Identifier of the parcel to cancel (required).

### `delivery_check_confirmation_code` (~93 tokens)

Delivery: check code [sandbox]

[SANDBOX] Verifies the confirmation code that the buyer shows at the pickup point upon handover. Returns the verification status (success / other). For delivery-service partners only; a same-named endpoint exists in the orders domain — this one applies to delivery parcels.

Input parameters:

- `confirmCode` (string, required): Confirmation code presented by the buyer at the pickup point.
- `parcelID` (string, required): Parcel identifier.

### `delivery_set_order_properties` (~252 tokens)

Delivery: set parcel properties [sandbox]

[SANDBOX] Sets a parcel's delivery parameters on Avito — e.g. the final delivery cost. Idempotent by overwrite: each call REPLACES the previous values, so always send the complete current set, not a delta. Returns an empty 200 on success. For delivery-service PARTNERS only (not regular sellers). Sibling tools: delivery_set_order_real_address sets the pickup address, delivery_tracking pushes a status event — this one only sets cost/parameters.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `orderId` (string, required): Order identifier.
- `properties` (object, required): Parcel delivery parameters.

### `delivery_set_order_real_address` (~227 tokens)

Delivery: actual address [sandbox]

[SANDBOX] Sends Avito the ACTUAL pickup point used for a parcel's acceptance/return — needed for agent and customer returns. Returns an empty 200 on success. Sibling: delivery_set_order_properties sets cost/parameters; this one only sets the address. For delivery-service PARTNERS only (not regular sellers).

Input parameters:

- `address` (object, required): Actual pickup point for parcel acceptance or return.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `orderId` (string, required): Order identifier.

### `delivery_tracking` (~463 tokens)

Delivery: push tracking event [sandbox]

[SANDBOX] Appends one parcel tracking event to Avito on behalf of the delivery service; does not modify existing history — a single status transition (e.g. RECEIVED_AT_TRANSIT_TERMINAL → IN_TRANSIT). Use this to report movement as it happens; one call records one event, and events accumulate into the parcel history (not idempotent — re-sending logs a duplicate). Returns an empty 200 on success; a 4xx means the order/status pair was rejected. Comply with Avito's retry policy on 5xx. For delivery-service PARTNERS only (not regular sellers). Sibling tools: delivery_set_order_properties sets cost/parameters, delivery_change_parcels reschedules a parcel — this one only appends a status event.

Input parameters:

- `avitoEventType` (string, required): Event code on the Avito side. Example: RECEIVED_AT_TRANSIT_TERMINAL.
- `avitoStatus` (string, required): Parcel status. Enum: CONFIRMED | IN_TRANSIT | ON_DELIVERY | DELIVERED | IN_TRANSIT_RETURN | ON_DELIVERY_RETURN | RETURNED | LOST | DESTROYED.
- `comment` (string): Comment on the status (optional).
- `date` (string, required): Event date and time in RFC 3339 format, UTC.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `location` (string, required): Event locality in the nominative case. Example: Kazan.
- `options` (object): Additional status options: parcel barcode, return numbers (optional).
- `orderId` (string, required): Order identifier.
- `providerEventCode` (string, required): Event code as defined by the delivery service.

### `delivery_prohibit_order_acceptance` (~228 tokens)

Delivery: prohibit acceptance [sandbox]

[SANDBOX] Prohibits the delivery service from accepting a parcel from the sender — the parcel will not be taken into processing. A step in the parcel-cancellation flow (pair with delivery_sandbox_cancel_parcel). Returns a success status. Implemented on the delivery-service side, for delivery-service PARTNERS only (a regular seller account gets 403/404).

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `orderId` (string, required): Identifier of the order whose acceptance is prohibited.

### `delivery_get_sorting_center` (~91 tokens)

Delivery: list sorting centers [sandbox]

[SANDBOX] Returns the sorting centers (hubs) for the specified delivery services. For delivery-service partners only. Delivery-service codes: pochta (Russian Post), exmail, bb (Boxberry), pp (PickPoint), dpd, and others.

Input parameters:

- `deliveryProviders` (string, required): Delivery-provider code list in the API string format, for example "pochta,exmail".

### `delivery_add_sorting_center` (~239 tokens)

Delivery: upload sorting centers [sandbox]

[SANDBOX] Creates a task to upload your own sorting centers (hubs) with initial validation; returns a taskID — check the status via delivery_get_task. After uploading sorting centers you must assign tags with a separate request (delivery_add_tags_to_sorting_center). For delivery-service partners only. The body is an array of sorting centers directly.

Input parameters:

- `centers` (array, required): Array of sorting centers: deliveryProviderId, name, address, phones, itinerary, photos, directionTag, schedule, restriction.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…

### `delivery_add_areas_sandbox` (~245 tokens)

Delivery: upload areas [sandbox]

[SANDBOX] Uploads the areas where courier delivery/pickup is available for the specified tariff. The address classifier is Russian Post postal codes (1 postal code = all addresses belonging to it). For delivery-service partners only. The body is an array of areas directly.

Input parameters:

- `areas` (array, required): Array of areas: directionTag, providerAreaNumber, services (intake/delivery), utcTimezone, zipCodes, restrictions.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `tariff_id` (required): Tariff identifier (int32, in path); legacy decimal strings remain accepted.

### `delivery_add_tags_to_sorting_center` (~255 tokens)

Delivery: sorting center tags [sandbox]

[SANDBOX] Creates a task to assign direction tags to your own and/or third-party sorting centers within a tariff; returns a taskID — status via delivery_get_task. Within a single tariff each sorting center maps to exactly one tag, and re-binding is not possible. For delivery-service partners only. The body is an array directly.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `tagged` (array, required): Array of bindings: deliveryProviderId (sorting-center ID at the provider) + directionTag (direction tag).
- `tariff_id` (required): Tariff identifier (int32, in path); legacy decimal strings remain accepted.

### `delivery_add_terminals_sandbox` (~277 tokens)

Delivery: upload pickup points [sandbox]

Replaces the tariff's terminal set. [SANDBOX] Uploads terminals (pickup points / parcel lockers) for one tariff. Auto-approves on accept (200); when a high share of the changes are critical the upload is queued for manual review instead. For delivery-service PARTNERS only. The request body is the terminals array directly (the tool wraps it for you).

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `tariff_id` (required): Tariff identifier (int32, in path); legacy decimal strings remain accepted.
- `terminals` (array, required): Array of pickup points: deliveryProviderId, name, address, phones, services (intake/delivery), schedule, type (PVZ|POSTAMAT, default PVZ).

### `delivery_update_terms` (~244 tokens)

Delivery: delivery-term zones [sandbox]

[SANDBOX] Creates a task to update the delivery-term zones in a tariff; returns a taskID — status via delivery_get_task. Important: the list of new terms must fully match the tariff's deliveryProviderZoneId values. For delivery-service partners only. The body is an array of zones directly.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `tariff_id` (required): Tariff identifier (int32, in path); legacy decimal strings remain accepted.
- `zones` (array, required): Array of delivery-term zones: deliveryProviderZoneId, name, minTerm/maxTerm (business days).

### `delivery_add_tariff_sandbox_v2` (~362 tokens)

Delivery: upload tariff [sandbox]

Creates or replaces a tariff. [SANDBOX v2] Uploads a tariff so the delivery service controls direction availability, delivery cost and terms. Returns 200 on accept. Limits: body up to 400MB, up to 1 million directions. For delivery-service PARTNERS only. Prefer this v2 over any v1 tariff endpoint. Pair with delivery_update_terms (term zones) and delivery_add_terminals_sandbox (pickup points) to complete the tariff.

Input parameters:

- `deliveryProviderTariffId` (string, required): Tariff identifier on the delivery-service side.
- `directions` (array, required): Directions: directionTagFrom→directionTagTo link, tariff zone, minTerm/maxTerm (business days).
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `name` (string, required): Human-readable tariff name (for the UI).
- `tariffType` (string): Tariff type (optional).
- `tariffZones` (array, required): Tariff zones: name, deliveryProviderTariffZoneId, items (per-service price calculation models).
- `termsZones` (array, required): Delivery-term zones: deliveryProviderZoneId, name, minTerm/maxTerm (business days).

### `delivery_get_task` (~86 tokens)

Delivery: task status [sandbox]

[SANDBOX] Returns the status of an asynchronous task by the taskID obtained from upload operations (sorting centers, tags, areas, terms, tariff). Statuses: processing | success | <error>. Processing usually takes 5–20 minutes. For delivery-service partners only.

Input parameters:

- `task_id` (required): Task identifier (int32, in path); legacy decimal strings remain accepted.

### `delivery_v1_cancel_announcement` (~251 tokens)

Delivery: cancel announcement [sandbox v1]

[SANDBOX v1] Starts the process of cancelling a test announcement; on success the response has a success status. Available only in the Sandbox, for delivery-service partners. Unlike delivery_cancel_announcement_3pl (production /cancelAnnouncement), this is the test v1 contract with a required options field.

Input parameters:

- `announcementID` (string, required): Identifier of the test announcement to cancel.
- `date` (string, required): Event date and time in ISO 8601 (RFC 3339) format.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `options` (object, required): Callback URL used to cancel the announcement.

### `delivery_v1_cancel_parcel` (~241 tokens)

Delivery: cancel parcel [sandbox v1]

[SANDBOX v1] Cancels a test parcel: initiates an acceptance prohibition at the delivery service and, if it took effect, cancels the parcel. Only parcels created via delivery_create_sandbox_parcel_v2 can be cancelled. Available only in the Sandbox. Unlike delivery_sandbox_cancel_parcel (actor field), this is the v1 contract with an options field.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `options` (object): Additional cancellation options (optional).
- `parcelID` (string, required): Identifier of the test parcel to cancel.

### `delivery_v1_change_parcel` (~273 tokens)

Delivery: change parcel [sandbox v1]

[SANDBOX v1] Creates a request to change ONE test parcel's data (e.g. the receiver's name/phone), per the type enum (changeReceiver / prohibitParcelReceive / extendParcelStorage / prohibitParcelAcceptance). The call only QUEUES the request — poll delivery_v1_get_change_parcel_info for the outcome. For bulk changes use delivery_change_parcels instead. Sandbox-only, for delivery-service PARTNERS.

Input parameters:

- `application` (object): Receiver change data (optional).
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `options` (object): Additional request options (optional).
- `parcelID` (string, required): Identifier of the test parcel to change.
- `type` (string, required): Request type.

### `delivery_v1_create_announcement` (~319 tokens)

Delivery: create announcement [sandbox v1]

[SANDBOX v1] Creates a test shipment announcement in the Sandbox (no real-world effect); returns a success status. Use the base contract delivery_sandbox_create_announcement unless you specifically need this v1 shape — the only difference is that v1 additionally requires the options field. Sandbox-only, for delivery-service PARTNERS.

Input parameters:

- `announcementID` (string, required): Identifier of the announcement to create.
- `announcementType` (string, required): Announcement type.
- `barcode` (string, required): Unique announcement barcode (printed on the acceptance/handover act).
- `date` (string, required): Announcement creation date and time in ISO 8601 (RFC 3339) format, UTC.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `options` (object, required): Announcement callback options.
- `packages` (array, required): List of cargo units.
- `receiver` (object, required): Receiving delivery service and delivery point.
- `sender` (object, required): Sending delivery service and delivery point.

### `delivery_v1_get_announcement_event` (~62 tokens)

Delivery: announcement event [sandbox v1]

[SANDBOX v1] Returns the last registered event for a test announcement — makes it easier to debug announcement-tracking integration. Available only in the Sandbox, for delivery-service partners.

Input parameters:

- `announcementID` (string, required): Test announcement identifier.

### `delivery_v1_get_change_parcel_info` (~72 tokens)

Delivery: change request info [sandbox v1]

[SANDBOX v1] Returns information about a test-parcel change request by its applicationID (the request is created via delivery_v1_change_parcel). Available only in the Sandbox, for delivery-service partners.

Input parameters:

- `applicationID` (string, required): Identifier of the parcel change request.

### `delivery_v1_get_parcel_info` (~62 tokens)

Delivery: parcel info [sandbox v1]

[SANDBOX v1] Returns information about a test parcel by parcelID. Available only in the Sandbox; works only with parcels created via delivery_create_sandbox_parcel_v2.

Input parameters:

- `parcelID` (string, required): Test parcel identifier.

### `delivery_v1_get_registered_parcel_id` (~70 tokens)

Delivery: parcel ID by orderID [sandbox v1]

[SANDBOX v1] Returns the parcelID of a registered test parcel by its orderID. Works only with parcels created via delivery_create_sandbox_parcel_v2. Available only in the Sandbox.

Input parameters:

- `orderID` (string, required): Order identifier of the test parcel.

### `delivery_create_sandbox_parcel_v2` (~299 tokens)

Delivery: create parcel [sandbox]

[SANDBOX v2] Creates a test parcel in the Sandbox (no real-world effect) and returns its parcelID — the entry point for the sandbox parcel lifecycle: feed that id into delivery_v1_get_parcel_info, delivery_v1_get_registered_parcel_id, delivery_v1_change_parcel and delivery_v1_cancel_parcel. Unlike delivery_create_parcel ([3PL] production creation), this has no consequences. For delivery-service PARTNERS testing only.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `items` (array): Parcel contents (optional).
- `options` (object): Additional test-parcel options (optional).
- `receiver` (object): Receiver delivery options (optional).
- `sender` (object): Sender and departure terminal (optional).
- `tags` (array): Test-parcel tags for Sandbox scenarios (optional).

### `delivery_change_parcel_result` (~250 tokens)

Delivery: parcel change result

[3PL] Sends Avito the outcome of a parcel change request previously sent via delivery_change_parcels: the delivery service reports whether the request was approved (approved) or rejected (declined). A production method on the delivery-service side — on a regular seller account it returns 403/404.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `id` (string, required): Identifier of the parcel change request.
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `options`: Additional result options (optional).
- `reason` (string): Rejection reason; filled in when status=declined (optional).
- `status` (string, required): Request processing status.

### `delivery_change_parcels` (~272 tokens)

Delivery: bulk update [sandbox]

[SANDBOX] Queues a BATCH of parcel-property change requests on Avito's initiative (changeReceiver / extendParcelStorage / prohibitParcelReceive / prohibitParcelAcceptance / changeReceiverTerminalOnConfirmed, per the type enum). Use it for bulk changes; for a single parcel use delivery_v1_change_parcel. The call only QUEUES the requests — the delivery service reports each outcome back via delivery_change_parcel_result. Implemented on the delivery-service side, for delivery-service PARTNERS only (a regular seller account gets 403/404).

Input parameters:

- `applications` (array, required): Array of parcel change requests (one per parcel).
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `type` (string, required): Request type.

### `promotion_get_bbip_forecasts_by_items_v1` (~193 tokens)

BBIP: forecast effect

Returns the forecast effect of BBIP promotion (listing promotion bid/budget): expected increase in views (min/max) and total cost for the period. READ-ONLY: spends NO money; use BEFORE promotion_create_bbip_order_for_items_v1 to estimate the return. For each listing pass {itemId, duration, oldPrice, price} — the same values as for create; take them from promotion_get_bbip_suggests_by_items_v1 (budgets[].{oldPrice,price} — kopecks/day, duration.recommended — days). Returns items[].{min,max,totalPrice} (kopecks) and an overall totalPrice.

Input parameters:

- `items` (array, required): 1 to 100 listings to forecast. Each element is {itemId, duration, oldPrice, price}, with values taken from promotion_get_bbip_suggests_by_items_v1.

### `promotion_get_bbip_suggests_by_items_v1` (~147 tokens)

BBIP: budget suggestions

Returns recommended BBIP promotion bid/budget options for the listings. READ-ONLY: spends NO money. This is the first step of the BBIP flow: from the response take items[].budgets[].{oldPrice,price} (kopecks/day, isRecommended flags the recommended one) and items[].duration.{from,to,recommended} (days), then pass them to promotion_get_bbip_forecasts_by_items_v1 (forecast) and promotion_create_bbip_order_for_items_v1 (paid purchase).

Input parameters:

- `itemIds` (array): Avito listing IDs (int64) for which budget options are needed. Up to 100.

### `promotion_create_bbip_order_for_items_v1` (~345 tokens)

⚠️ BBIP: buy promotion

⚠️ PAID ACTION (money): creates a BBIP order to enable promotion for listings and CHARGES the budget from the account balance. The order is created only if there are no errors across all listings; if funds are insufficient — 402. FIRST estimate the cost and return for free: promotion_get_bbip_suggests_by_items_v1 (budget options) → promotion_get_bbip_forecasts_by_items_v1 (forecast). Then for each listing pass an option from suggests as {itemId, duration, oldPrice, price} (oldPrice/price — kopecks/day, duration — days; full budget = price × duration). Returns orderId (UUID) — check its status via promotion_get_order_status_v1.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `items` (array, required): 1 to 100 listings for paid promotion. Each element is {itemId, duration, oldPrice, price} from promotion_get_bbip_suggests_by_items_v1. The whole order is rejected if any listing has an error.

### `promotion_get_dict_of_services_v1` (~72 tokens)

Promotion: service dictionary

Returns a dictionary of all Avito promotion service types: for each service — slug (type identifier), name and isDeprecated (whether it is deprecated). READ-ONLY: spends NO money and requires no parameters. Use it as a reference to resolve slugs in the responses of other promotion methods.

### `promotion_get_services_by_items_v1` (~108 tokens)

Promotion: services by listings

Returns active promotion services for the specified listings: for each listing, a list of services with slug, name and startDate/endDate dates. READ-ONLY: spends NO money. Use it to find out which promotion is already enabled and until what date it is active (not to be confused with suggests, which propose new budget options).

Input parameters:

- `itemIds` (array): Avito listing IDs (int64) for which active promotion services are needed. Up to 100.

### `promotion_list_orders_by_user_v1` (~98 tokens)

Promotion: list orders

Returns a paginated list of the current user's promotion orders: id (UUID), createdAt and status of each order. READ-ONLY: spends NO money. Use it for order history/overview; the detailed status of a specific order is available via promotion_get_order_status_v1 by its orderId.

Input parameters:

- `pagination` (object): Pagination parameters {page, perPage}. Can be omitted — the first page is returned.

### `promotion_get_order_status_v1` (~115 tokens)

Promotion: order status

Returns the status of a BBIP order by its orderId: the order's overall status (initialized/waiting/in_process/processed), totalPrice (kopecks) and a per-item status for each listing (slug, price, errorReason). READ-ONLY: spends NO money. Call it AFTER promotion_create_bbip_order_for_items_v1 to track the order's execution.

Input parameters:

- `orderId` (string, required): Promotion order identifier in UUID format, obtained from promotion_create_bbip_order_for_items_v1.

### `cpa_get_call` (~105 tokens)

CPA: call recording (v1, deprecated)

Returns the recording (audio) of a CPA call by its identifier (v1, deprecated). Read-only, spends no money. Deprecated — prefer cpa_get_call_by_id_v2 (or calltracking get_record_by_call_id), which return the full call model together with the recording. Limit: 1 request/min.

Input parameters:

- `call_id` (integer, required): CPA call identifier (call_id), obtained from cpa_get_calls_by_time_v2 or from a chat/action.

### `cpa_chat_by_action_id` (~96 tokens)

CPA: chat by actionId

Returns the CPA chat model by target-action identifier (actionId). Read-only, spends no money. Use when you already have the actionId of a specific chat (from cpa_chats_by_time_v2); not for iterating by time. Limit: 3 requests/min.

Input parameters:

- `actionId` (integer, required): CPA target-action identifier (chat actionId), obtained from cpa_chats_by_time_v2.

### `cpa_chats_by_time_v1` (~173 tokens)

CPA: chats for a period (v1, deprecated)

Returns a paginated list of target CPA chats created starting from the given moment (v1, deprecated). Read-only, spends no money. Deprecated — prefer cpa_chats_by_time_v2 (identical semantics, higher request limit: 40 vs 60/min for v1, but v2 is the current version).

Input parameters:

- `dateTimeFrom` (string, required): Moment from which to search chats by the date field, in RFC3339 format, e.g. "2021-01-02T15:04:05Z".
- `limit` (integer, required): Page size (number of chats), no more than 100.
- `offset` (integer, required): Page offset (default 0). For performance, prefer passing the maximum startTime/date of a chat from the previous page.

### `cpa_post_create_complaint` (~290 tokens)

⚠️ CPA: complaint about a call

⚠️ Files an external complaint with Avito about a CPA call by its callId (action record) — e.g. when disputing a charge for an off-target call. Irreversible record: a complaint cannot be withdrawn, so confirmation is required by default. Requires the callId of a specific call from a preceding call (cpa_get_calls_by_time_v2). To file complaints about both calls and chats by a single actionId, use cpa_create_complaint_by_action_id. Limit: 1 request/min.

Input parameters:

- `callId` (integer, required): CPA call identifier (callId, int64) the complaint is filed against.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `message` (string, required): Complaint text — a description of the reason for disputing the target action.

### `cpa_create_complaint_by_action_id` (~305 tokens)

⚠️ CPA: complaint by actionId

⚠️ Files an external complaint with Avito about a CPA target action (call or chat) by its actionId — to dispute a charge for an off-target action. Irreversible record: a complaint cannot be withdrawn, so confirmation is required by default. Requires the actionId from a preceding call (cpa_chats_by_time_v2 / cpa_get_calls_by_time_v2). Preferred over cpa_post_create_complaint, since it covers both calls and chats. Limit: 3 requests/min.

Input parameters:

- `actionId` (integer, required): CPA target-action identifier (actionId of a call or chat, e.g. 123456789) the complaint is filed against.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `message` (string, required): Complaint text attached to the action, e.g. "this was not a contact exchange in the chat".

### `cpa_phones_info_from_chats` (~131 tokens)

CPA: phone numbers from chats

Returns a paginated set of information on phone numbers extracted from target CPA chats starting from the given moment. Read-only, spends no money. Use to export customer contacts from correspondence over a period. Limit: 5 requests/min.

Input parameters:

- `dateTimeFrom` (string, required): Moment from which the search begins, in RFC3339 format, e.g. "2021-01-02T15:04:05Z".
- `limit` (integer, required): Page size (number of records).
- `offset` (integer, required): Page offset (default 0) for page-by-page iteration.

### `cpa_balance_info_v2` (~73 tokens)

CPA: balance (v2, deprecated)

Returns the CPA wallet balance in kopecks: balance, debt, and the current month's advance (v2, deprecated). Read-only, spends no money. The request body is empty (`{}`). Deprecated — prefer cpa_balance_info_v3 (the current version). Limit: 1 request/min.

### `cpa_get_call_by_id_v2` (~102 tokens)

CPA: call by callId

Returns the full CPA call model by callId, including a link to the recording (v2). Read-only, spends no money. Use when the callId is already known (from cpa_get_calls_by_time_v2). The current replacement for the deprecated cpa_get_call (v1).

Input parameters:

- `callId` (integer, required): CPA call identifier (callId, int64), obtained from cpa_get_calls_by_time_v2.

### `cpa_get_calls_by_time_v2` (~169 tokens)

CPA: calls for a period

Returns a paginated list of CPA calls created starting from the given moment (by startTime) (v2). Read-only, spends no money. Use to iterate over calls for a period; the returned callId/actionId values are then suitable for cpa_get_call_by_id_v2 or filing a complaint. Limit: 1 request/min.

Input parameters:

- `dateTimeFrom` (string, required): Moment from which to search calls by startTime, in RFC3339 format, e.g. "2021-01-02T15:04:05Z".
- `limit` (integer, required): Page size (number of calls).
- `offset` (integer): Page offset (default 0). For performance, prefer passing the maximum startTime of a call from the previous page.

### `cpa_chats_by_time_v2` (~181 tokens)

CPA: chats for a period

Returns a paginated list of target CPA chats created starting from the given moment (by the date field) (v2 — current). Read-only, spends no money. Prefer this method over the deprecated cpa_chats_by_time_v1. The returned actionId values are then suitable for cpa_chat_by_action_id or filing a complaint. Limit: 40 requests/min.

Input parameters:

- `dateTimeFrom` (string, required): Moment from which to search chats by the date field, in RFC3339 format, e.g. "2021-01-02T15:04:05Z".
- `limit` (integer, required): Page size (number of chats), no more than 100.
- `offset` (integer, required): Page offset (default 0). For performance, prefer passing the maximum date of a chat from the previous page.

### `cpa_balance_info_v3` (~70 tokens)

CPA: balance

Returns the current balance of the user's CPA wallet in kopecks (v3 — current). Read-only, spends no money. The request body is empty (`{}`). v3 differs from v2 in having an updated response structure — prefer v3. Limit: 1 request/min.

### `cpa_target_get_bids` (~141 tokens)

Target action: bids

Returns detailed information about current and available target-action bids for ONE listing: the active price/budget, the minimum/maximum/recommended values (all in kopecks), the selected strategy (manual/auto), and a target-action forecast with the advantage over competitors. Read-only — does not change spending. Use it before save_manual_bid/save_auto_bid to find the allowed min/max/recommended amounts. For multiple listings at once, use cpa_target_get_promotions_by_item_ids (batch up to 200). Limit: 20 requests/min.

Input parameters:

- `itemId` (integer, required): Avito listing ID for which bids and budgets are requested.

### `cpa_target_get_promotions_by_item_ids` (~141 tokens)

Target action: prices by listing

Returns current target-action bids and budgets (in kopecks) for MULTIPLE listings at once (batch, up to 200 per request): for each listing — actionTypeID and the active manual or auto strategy with its price/limit/budget. Read-only — does not change spending. Use it to bulk-check current settings; for a single listing with full min/max/recommendations and a forecast, use cpa_target_get_bids. Limit: 400 requests/min.

Input parameters:

- `itemIDs` (array, required): List of Avito listing IDs (1 to 200 items) for which current bids and budgets are requested.

### `cpa_target_remove_promotion` (~247 tokens)

⚠️ Target action: stop

⚠️ STOPS target-action promotion for a listing and switches it to the base price from the price list. WARNING: removes the active manual or auto bid — the settings are reset, and to resume promotion you will have to set them again (save_manual_bid/save_auto_bid). Does not reduce spending to zero: the listing keeps being charged at the base target-action price. Returns a text message about the switch. Limit: 300 requests/min.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `itemID` (integer, required): Avito listing ID for which target-action promotion should be stopped.

### `cpa_target_save_auto_bid` (~395 tokens)

⚠️ Target action: auto bid

⚠️ Enables the AUTOMATIC target-action bidding strategy: the system picks the price itself within the specified budget. WARNING: affects budget spending (money) — sets a spend of budgetPenny per budgetType period. Mutually exclusive with the manual bid: this call overwrites any previously set manual strategy for this listing. Use it when you want to delegate price management to Avito (rather than fixing the amount manually — use save_manual_bid for that). budgetPenny must fall within min/maxBudgetPenny from cpa_target_get_bids. Not available in the "Transport" category. Limit: 10 requests/min.

Input parameters:

- `actionTypeID` (integer, required): Target-action type: 1 — call, 5 — click package, 7 — messenger (sharing a contact in chat).
- `budgetPenny` (integer, required): Budget in KOPECKS for the budgetType period (e.g. 1400 = 14 rubles). Must be within min/maxBudgetPenny from cpa_target_get_bids.
- `budgetType` (string, required): Budget period: "1d" — daily, "7d" — weekly, "30d" — monthly.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `itemID` (integer, required): Avito listing ID for which the auto strategy is enabled.

### `cpa_target_save_manual_bid` (~404 tokens)

⚠️ Target action: manual bid

⚠️ Sets a MANUAL (fixed) target-action bid for a listing (manual bid). WARNING: affects budget spending (money) — each target action is charged at bidPenny, and daily spending is capped by limitPenny. Mutually exclusive with the auto bid: this call overwrites any previously set auto strategy for this listing. Use it when you want to control the per-action price yourself (to delegate the choice to Avito, use save_auto_bid). bidPenny must be no lower than minBidPenny from cpa_target_get_bids. Limit: 20 requests/min.

Input parameters:

- `actionTypeID` (integer, required): Target-action type: 1 — call, 5 — click package, 7 — messenger (sharing a contact in chat).
- `bidPenny` (integer, required): Price per single target action in KOPECKS (e.g. 1400 = 14 rubles). Must be no lower than minBidPenny from cpa_target_get_bids.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `itemID` (integer, required): Avito listing ID for which the manual bid is set.
- `limitPenny` (integer): Optional daily spending limit in KOPECKS. If omitted, no limit is applied. For the allowed min/maxLimitPenny range, see cpa_target_get_bids.

### `stock_get_stocks_info` (~151 tokens)

Stock: get

Reads current stock (available quantity) for a list of listings in the warehouse (get_stocks_info). Read-only, changes nothing. Returns for each item_id: quantity (available = submitted/edited minus reserved), is_unlimited, is_multiple, is_out_of_stock. To change stock, use stock_update_stocks.

Input parameters:

- `item_ids` (array, required): IDs of the listings on the Avito website (item_id) to get stock for; from 1 to 200 per request.
- `strong_consistency` (boolean): If true, skip the cache and return data from the database (strong consistency): fresher but slower. By default data may be served from the cache. Optional.

### `stock_update_stocks` (~243 tokens)

⚠️ Stock: update

⚠️ Updates the stock (quantity) of items across listings in the warehouse (update_stocks). Affects whether listings are available to order: quantity=0 marks a listing as "out of stock". Accepts an array of {item_id, quantity, external_id?}; quantity is an integer 0..999999. Returns success and errors for each listing. For current stock, use stock_get_stocks_info.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `stocks` (array, required): Array of stock entries per listing; from 1 to 200 elements per request.

### `hierarchy_check_ah_user_v1` (~92 tokens)

Hierarchy: user status

Checks the status of the current user within the account hierarchy (check_ah_user). Returns the flags isCompany, isChief, isEmployee and avitoCompanyId — whether it is a company, a chief, an employee, and which company it is linked to. Read-only. Call before hierarchy_link_items_v1 to make sure the user belongs to a hierarchy and has the required role.

### `hierarchy_get_employees_v1` (~84 tokens)

Hierarchy: list of employees

Returns the list of account-hierarchy employees of the managing company (get_employees). For each employee it returns employeeId, name, email, phones and the chief flag (isChief). Read-only. Requires an active account-hierarchy plan; the employeeId returned here is used in hierarchy_link_items_v1 and hierarchy_list_items_by_employee_id_v1.

### `hierarchy_list_company_phones_v1` (~103 tokens)

Hierarchy: company phones

Returns the list of phone numbers of the managing company in the account hierarchy (list_company_phones) with cursor-based pagination. The response contains a phones array and a cursor for the next page (if no cursor is returned, the list has ended). Read-only. Requires an active account-hierarchy plan.

Input parameters:

- `cursor` (string): Cursor for fetching the next page; pass the cursor value from the previous response. Omit for the first page.

### `hierarchy_link_items_v1` (~291 tokens)

⚠️ Hierarchy: assign listings

Assigns listings to an employee within the account hierarchy (link_items). Changes the ownership of listings inside the managing account: a repeated call reassigns them to a different employee. Irreversible operation (the previous assignment is not restored automatically); on success returns HTTP 204 with no body. Requires hierarchy permissions (the account-hierarchy plan); the user state can be checked via hierarchy_check_ah_user_v1, and the employeeId can be taken from hierarchy_get_employees_v1.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `employeeId` (integer, required): ID of the hierarchy employee the listings are assigned to (employeeId from hierarchy_get_employees_v1).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `itemIds` (array, required): List of Avito listing IDs to assign/reassign to the employee (from 1 to 50 elements).

### `hierarchy_list_items_by_employee_id_v1` (~168 tokens)

Hierarchy: employee listings

Returns the IDs of listings assigned to a specific hierarchy employee, filtered by category (list_items_by_employee). The response contains an items array and a hasNext flag for cursor-based pagination. Fetching listings for the company as a whole is not available — only per employee. Read-only. Requires hierarchy permissions; employeeId is taken from hierarchy_get_employees_v1.

Input parameters:

- `categoryId` (integer, required): Avito category ID for filtering the employee's listings.
- `employeeId` (integer, required): ID of the hierarchy employee whose listings are requested (employeeId from hierarchy_get_employees_v1).
- `lastItemId` (integer): Pagination cursor: the ID of the last listing from the previous page. Omit for the first page; keep going while hasNext=true.

### `reviews_get_ratings_info_v1` (~84 tokens)

User rating

Returns the aggregated rating of the current user (reviews_get_ratings_info_v1): average score, the total number of active reviews and the number of reviews that affect the rating, plus a flag indicating whether the rating is enabled. Takes no parameters and returns no paginated data. To get the list of reviews itself, use reviews_get_reviews_v1.

### `reviews_get_reviews_v1` (~159 tokens)

Reviews list

Returns a paginated list of active reviews for the current user (reviews_get_reviews_v1): review id, score, text, author, listing, attached photos and the current seller answer, plus total — the overall number of reviews. Use it to browse individual reviews and obtain the reviewId (required for reviews_create_review_answer_v1). If you only need the aggregate score without the list, use reviews_get_ratings_info_v1.

Input parameters:

- `limit` (integer, required): Maximum number of reviews per page. API-allowed range: 1–50.
- `offset` (integer, required): Pagination offset: how many reviews to skip from the start of the list. Defaults to 0; increase by the limit value to fetch the next page.

### `reviews_create_review_answer_v1` (~273 tokens)

⚠️ Reply to a review

Publishes a seller answer to a review (reviews_create_review_answer_v1). WARNING: the answer is PUBLIC — once moderated it is visible to everyone on the profile page. Requires reviewId (from reviews_get_reviews_v1) and the message text; returns the id of the created answer and a timestamp. Confirm the action with the user. To delete an answer, use reviews_remove_review_answer_v1.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `message` (string, required): Text of the public answer to the review (must not be empty). Goes through moderation before publication.
- `reviewId` (integer, required): ID of the review the answer is published for. Taken from the id field in reviews_get_reviews_v1.

### `reviews_remove_review_answer_v1` (~238 tokens)

⚠️ Delete a review answer

Permanently deletes a previously published seller answer to a review (reviews_remove_review_answer_v1). WARNING: deletion is IRREVERSIBLE and immediately removes the public answer from the profile; returns a success flag. Confirm the action with the user. To publish an answer again, use reviews_create_review_answer_v1.

Input parameters:

- `answer_id` (integer, required): ID of the review answer to delete (not to be confused with reviewId). Taken from the answer.id field of a review in reviews_get_reviews_v1.
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…

### `tariffs_get_tariff_info` (~118 tokens)

Tariff (Transport)

Returns the account tariff information for the Transport category (tariffs_get_tariff_info, read-only). The response includes the current and scheduled contracts — tariff level, activity status, start/end dates (Unix time), bonuses, prices with and without discount, and listing packages with their categories, locations, price groups, and remaining balance. Use it to check tariff terms and the remaining listing balance. Takes no parameters. Available only for tariffs in the "Transport" category and not for the "CPA" tariff; otherwise it returns 404.

### `cpa_auction_get_user_bids` (~159 tokens)

CPA auction: my bids

Reads active and available CPA auction bids for the user's listings (read-only, does not change spending). For each listing returns the current bid pricePenny (in kopecks per action), its validity time expirationTime (RFC3339; absent — valid indefinitely), and the list of available bids availablePrices. Paginated via the fromItemID cursor. To change bids, use cpa_auction_save_item_bids. Limit 200 requests/min.

Input parameters:

- `batchSize` (integer): Page size — number of listings in the response (1–200, default 200).
- `fromItemID` (integer): Pagination cursor: ID of the last listing from the previous page (default 0 — from the start).

### `cpa_auction_save_item_bids` (~307 tokens)

⚠️ CPA auction: save bids

Saves (overwrites) CPA auction bids for listings. WARNING: affects auction spending (money) — a higher bid means a higher display position. pricePenny is in kopecks per action; expirationTime sets the validity period (omitted or null — indefinite). Up to 200 listings per request, limit 200 requests/min. For current and available bids see cpa_auction_get_user_bids.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `items` (array, required): Array of bids (1–200). Each element: itemID (int, listing ID, required), pricePenny (int, bid in kopecks, required), expirationTime (string RFC3339, e.g. "2023-06-29T12:34:34+03:00"; null/absent — in…

### `trxpromo_get_commissions` (~145 tokens)

TrxPromo: commissions

Checks transactional promo availability and the allowed commission range for listings (trxpromo_get_commissions, read-only — does not start anything or charge any fee). For each listing it returns the promoAvailable flag and settings: minimum/maximum/step of the commission in hundredths of a percent (100 = 1%). Use before trxpromo_apply to learn the commission limits. Start promo with trxpromo_apply, cancel with trxpromo_cancel. This is a GET with a request body — non-standard, but that is exactly how it is defined in the Avito swagger.

Input parameters:

- `itemIDs` (array, required): Array of Avito listing IDs to check for promo availability and commission limits.

### `trxpromo_apply` (~310 tokens)

⚠️ TrxPromo: start promotion

⚠️ Applies transactional promo/promotion with a pay-per-result commission to listings (trxpromo_apply). Affects price/spend: the promotion fee is added on top of the base commission. The response includes a success flag per listing, and on error a code 1001 (validation) or 1002 (promo unavailable) along with the allowed commission range. First check the limits via trxpromo_get_commissions; cancel a running promo with trxpromo_cancel.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `items` (array, required): Array of listings to promote. Each element: itemID (number, listing ID, required), commission (promotion fee in hundredths of a percent, 1500 = 15%; required), dateFrom (promotion start date "YYYY-MM…

### `trxpromo_cancel` (~238 tokens)

⚠️ TrxPromo: stop

⚠️ Cancels active and scheduled transactional promo for listings (trxpromo_cancel). Reverts the effect of trxpromo_apply — the promotion and its associated commission stop applying. The response includes a success flag per listing, and on error a code 1001 (validation) or 1002 (promo unavailable). Apply promo again with trxpromo_apply; check commissions with trxpromo_get_commissions (read-only).

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `itemIDs` (array, required): Array of Avito listing IDs for which active and scheduled promo is canceled.

### `calltracking_get_call_by_id` (~114 tokens)

Call tracking: call by ID

Returns metadata for a single call-tracking call by its callId (read-only): call time, talk and wait durations, buyer/seller phone numbers, the protective (virtual) number, and the listing itemId. Use this when you know a specific callId; to query calls over a time range use calltracking_get_calls, and for the conversation audio recording use calltracking_get_record_by_call_id.

Input parameters:

- `callId` (integer, required): Call identifier (callId) obtained from calltracking_get_calls.

### `calltracking_get_calls` (~235 tokens)

Call tracking: list of calls

Returns a list of call-tracking calls over a time range, filtered by call time (callTime), with pagination (read-only). Requires a time window in RFC3339 format. To fetch a single call by id use calltracking_get_call_by_id; for the conversation recording use calltracking_get_record_by_call_id.

Input parameters:

- `dateTimeFrom` (string, required): Start of the search range by call time (callTime), an RFC3339-formatted string, e.g. "2021-01-02T00:00:00Z". Required.
- `dateTimeTo` (string): End of the search range by callTime (RFC3339, e.g. "2021-03-02T23:59:59Z"). If omitted, defaults to dateTimeFrom + 1 month; the maximum is dateTimeFrom + 3 months.
- `limit` (integer, required): Page size — how many calls to return per request (the API allows at most 100).
- `offset` (integer, required): Pagination offset (the number of records to skip from the start, starting at 0).

### `calltracking_get_record_by_call_id` (~163 tokens)

Call tracking: call audio recording

Downloads the call-tracking conversation audio recording for a specific callId (read-only). Returns a structured binary response {mimeType: "audio/mpeg" (or wav), sizeBytes, base64}; decode the base64 to save the file (it may be several MB). The recording becomes available with a delay of up to 30 minutes after the call and is retained for 3 months; if the recording is not ready yet, the API returns an error (HTTP 425, code 1005). For call metadata use calltracking_get_call_by_id, and for a list over a time range use calltracking_get_calls.

Input parameters:

- `callId` (integer, required): Call identifier (callId) for which the conversation audio recording is requested.

### `msg_discounts_open_api_available` (~125 tokens)

Discounts: eligible listings

[BETA] Checks whether a discount/special-offer messenger campaign is available for a list of listings (available). Read-only; sends nothing and charges nothing. For each itemId it returns isAvailable and, when not available, a reason. Run this FIRST, before msg_discounts_open_api_multi_create. Do not confuse it with ..._tariff_info (campaigns remaining in the plan) or ..._stats (statistics for sent campaigns).

Input parameters:

- `itemIds` (array, required): List of listing IDs to check for campaign-service availability. At least one.

### `msg_discounts_open_api_multi_create` (~264 tokens)

Discounts: create campaign

[BETA] Creates a draft discount/special-offer messenger campaign for a list of listings and locks in the recipient audience (multi_create). This is the FIRST step — the campaign is NOT sent yet and no money is charged: it returns dispatches (id, created/notCreated status, recipient count) and the available offers with their price. Then pick an offer and confirm it via msg_discounts_open_api_multi_confirm — only then are the messages sent to recipients (public). Check listing eligibility in advance via ..._available.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `itemIds` (array, required): List of listing IDs selected for the campaign. At least one.

### `msg_discounts_open_api_multi_confirm` (~336 tokens)

⚠️ Discounts: send campaign

[BETA] ⚠️ SECOND, final step: confirms and PAYS from the Avito wallet for the discount/special-offer campaign created via msg_discounts_open_api_multi_create (multi_confirm). IRREVERSIBLE and PUBLIC: messages are sent to recipients (buyers who added the listing to favorites) and money is deducted from the account; if funds are insufficient an error is returned. Always confirm the action with the user before calling. Unlike ..._available/..._tariff_info/..._stats (read-only), this method performs the actual send and charge.

Input parameters:

- `dispatches` (array): List of campaigns to confirm; taken from the multi_create response. Each item contains dispatchId (campaign ID), recipientsCount (number of recipients), offerSlug (slug of the chosen offer), and opti…
- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `expiresAt`: Offer expiration date, Unix timestamp in seconds; within the min/max range from the multi_create response.
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…

### `msg_discounts_open_api_stats` (~192 tokens)

Discounts: campaign statistics

[BETA] Returns statistics for already-sent discount/special-offer campaigns over a period (stats). Read-only; sends nothing and charges nothing. For each campaign: itemId, offerSlug, send and expiration dates, the number of offers sent (count) and accepted by buyers (accepted), the discount amount, and the cost. Use it to analyze results; for eligibility checks use ..._available, and for the remaining plan balance use ..._tariff_info.

Input parameters:

- `dateTimeFrom` (string, required): Start of the selection period, RFC3339 / ISO 8601 format (e.g. 2022-02-24T05:00:00Z).
- `dateTimeTo` (string, required): End of the selection period, RFC3339 / ISO 8601 format (e.g. 2022-03-01T12:00:00Z).

### `msg_discounts_open_api_tariff_info` (~104 tokens)

Discounts: campaign plan

[BETA] Returns information about the current discount/special-offer campaign plan: how many campaigns remain (sendsLeft) and the total allowance (totalSends) (tariff_info). Read-only, no parameters, sends nothing and charges nothing; if there is no active plan, the response is empty. Do not confuse it with ..._available (per-listing eligibility) or ..._stats (statistics for already-sent campaigns).

### `messenger_get_webhook_events` (~236 tokens)

Received webhook events

Returns Avito messenger webhook events RECEIVED by this server (new chat messages), newest-first. Reads the in-process buffer filled by the webhook receiver — does NOT call the Avito API and does NOT mark anything as read. Requires the receiver to be enabled (set AVITO_MCP_WEBHOOK_SECRET) and Avito subscribed to the receiver URL (messenger_register_webhook). Supports filtering by chat_id, a `since` cutoff (ISO-8601 timestamp or epoch seconds/ms), and a `limit`. Check the receiver config and buffer stats with messenger_get_webhook_status.

Input parameters:

- `chat_id` (string): Filter to a single chat_id (as seen in the event payload). Omit for all chats.
- `limit` (integer): Maximum number of events to return (1–100). Omit to return all retained events.
- `since`: Only events received at/after this time. Accepts an ISO-8601 string (e.g. "2026-06-09T10:00:00Z") or an epoch number (seconds or milliseconds). Omit for no lower bound.

### `messenger_get_webhook_status` (~92 tokens)

Webhook receiver status

Returns the configuration and live stats of this server's Avito webhook RECEIVER: whether it is enabled, the public URL, the subscribe URL (with the secret masked), and ring-buffer counters (retained / total / last received). Does NOT call the Avito API. Use it to verify the receiver is set up before messenger_register_webhook, then read collected events with messenger_get_webhook_events.

### `messenger_register_webhook` (~314 tokens)

⚠️ Register webhook receiver

Subscribes Avito to THIS server's configured webhook receiver URL so messenger events (new chat messages) start flowing. Registers only the URL derived from the webhook config (AVITO_MCP_WEBHOOK_PUBLIC_URL + path + secret). Adds a webhook subscription (additive — it does not delete other subscriptions); Avito will then POST events to the URL (requires a PUBLIC HTTPS address reachable from the internet; localhost does not work). Same operation as messenger_post_webhook_v3, but auto-fills the URL from config. Pairs with messenger_get_webhook_events (read received events) and messenger_get_webhook_status (receiver config). To unsubscribe, use messenger_post_webhook_unsubscribe.

Input parameters:

- `dryRun` (boolean): v0.7.0: if true — returns a preview of the HTTP request without calling the Avito API. Safe for inspecting exactly what would be done. Default: the value of AVITO_MCP_DRY_RUN_DEFAULT (usually false).
- `idempotencyKey` (string): v0.7.0: optional key for duplicate protection. A repeat call with the same key within AVITO_MCP_IDEMPOTENCY_TTL_SEC returns the cached result. The same key with different args returns a conflict erro…
- `url` (string): Optional explicit copy of the configured receiver URL Avito should POST events to. For safety, it must equal publicUrl + path + secret; omit to auto-fill it.

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/elchin92-avito-mcp/avito-mcp#diagnostics

## Score history

- 2026-08-04: 79
- 2026-08-03: 79
- 2026-08-02: 79
- 2026-08-01: 56
- 2026-07-31: 5
- 2026-07-30: 40
- 2026-07-28: 75
- 2026-07-27: 33

## Links

- npm package: https://www.npmjs.com/package/avito-mcp
- Socket report: https://socket.dev/npm/package/avito-mcp
- Repository: https://github.com/elchin92/avito-mcp
- Changelog RSS feed: https://verifymcp.io/servers/elchin92-avito-mcp/avito-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/elchin92-avito-mcp/avito-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/elchin92-avito-mcp/avito-mcp
