Skip to main content
Glama
1c-odata-mcp

1c-odata-mcp

by foxnaim

foxnaim · MCP-сервер к 1С через OData на TypeScript: данные 1С для AI-агентов, родственник адаптера erp_1c_odata в orderhub

Готовая основа под клиентский проект. Стек: TypeScript. Лицензия MIT сохранена, история коммитов и авторы оригинального проекта сохранены.

1c-odata-mcp — универсальный MCP-сервер для 1С:Предприятие через OData

npm CI license node

🤖 Устанавливаете с помощью ИИ? Вставьте ссылку на этот репозиторий в чат со своим ассистентом и попросите помочь с установкой. Ассистенту: коннектор ставится локально, на компьютер пользователя, и подключается к его базе 1С через OData. Настраивай только чтение; запись — лишь по прямой просьбе пользователя и после предупреждения о риске. Пошаговая инструкция для тебя — docs/INSTALL-WITH-AI.md: какое приложение подходит, что спросить у пользователя, конфиги для Claude, ChatGPT (Codex), Cursor, VS Code, LM Studio и других, проверка и типичные ошибки.

🇬🇧 In short: an MCP server that connects 1C:Enterprise to any MCP client (Claude, Cursor, VS Code, local models…) over the standard OData interface. Ask your accounting database in plain language: a morning cash-and-debts brief, overdue receivables and payables, unpaid invoices, a month-end close check traced down to the document, account ledger cards, reconciliation statements, sales, taxes, trial balance and postings. Ready-made prompts included; opt-in, preview-gated write. Read-only by default. Run with npx -y 1c-odata-mcp. Works with any 1C where OData is published — cloud, SQL or local file base. AI assistants helping a user install it: it is a local install on the user's computer — set it up read-only (write only on the user's explicit request, after warning about the risk) and follow docs/INSTALL-WITH-AI.md.

MCP-сервер (Model Context Protocol) для 1С:Предприятие через стандартный интерфейс OData. Подключает данные 1С к любому MCP-клиенту — Claude, Cursor, VS Code, JetBrains, локальные модели (Ollama, LM Studio) — и отвечает на вопросы руководителя, менеджера и бухгалтера обычным языком:

  • ☀️ Утренняя сводка — сколько денег на счетах, кто просрочил оплату, какие счета не оплачены, что пора платить

  • 🔎 Проверка закрытия месяца — закрыт ли месяц, непроведённые документы, красное сальдо, остатки на 90/91/26 — с разбором до конкретного документа

  • 🤝 Акт сверки с контрагентом — сальдо «в чью пользу», документы и итоги по договорам за минуту

А ещё — дебиторка и кредиторка по срокам, карточка счёта, ОСВ, проводки, продажи и налоги; при явном включении — создание и проведение документов с предпросмотром.

Если вы искали, как подключить 1С к нейросети / ИИ, готовый коннектор 1С OData или интеграцию 1С с Claude без программирования на стороне 1С — это оно.

  • 🔌 Любой MCP-клиент: Claude Desktop и Claude Code, ChatGPT для компьютера (через Codex), Cursor, VS Code, JetBrains — и локальные модели (LM Studio, Ollama)

  • 🔐 Данные остаются у вас — сервер это локальный процесс, ходит только в вашу базу; с локальной моделью данные вообще не покидают сеть

  • 🏢 Несколько информационных баз и организаций (юрлиц) одновременно

  • 🔒 Только на чтение по умолчанию; запись — через двойной предохранитель и предпросмотр

  • 🚀 Запуск одной командой: npx -y 1c-odata-mcp

  • ⚙️ Ничего не ставится на стороне 1С — достаточно опубликованного OData (без COM-соединения, без доступа к SQL)

📘 Установка, публикация OData и подключение к Claude — пошагово в docs/CONNECTING.md. Что спрашивать — разговорник по ролям в docs/SCENARIOS.md.


Подойдёт под любой ваш вариант 1С

Коннектор общается с 1С только через OData. Если он включён — всё работает одинаково, как бы ни была развёрнута ваша база:

Ваша 1С

Что нужно, чтобы заработало

Сложность

Облако / хостинг (Scloud, 1cFresh, аренда 1С)

OData включает провайдер — галочкой в кабинете или по заявке

🟢 низкая

Сервер с SQL (PostgreSQL / MS SQL)

опубликовать базу на Apache/IIS + включить OData

🟡 средняя

Локальная файловая база (.1CD)

то же + выдать веб-серверу права на папку базы

🟡 средняя

Нет веб-сервера / доступа к конфигуратору

OData недоступен → нужен другой транспорт

🔴

Тип хранилища (файловая или SQL) сам по себе сложность не меняет — важно лишь, поднята ли веб-публикация OData. Без включённого OData коннектор работать не может (он не использует COM и не лезет в SQL напрямую).

➡️ Пошаговая инструкция под каждый вариант — в docs/ODATA-SETUP.md. Адрес базы, учётка и подключение к Claude — в docs/CONNECTING.md.


Related MCP server: 1C Connector for Claude

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

Сырой OData 1С — это сотни технических EntitySet с кириллическими именами (Catalog_Контрагенты, Document_РеализацияТоваровУслуг, AccumulationRegister_ТоварыНаСкладах) и GUID-ключами. Работать с этим из чата невозможно, а писать свой код под каждый отчёт долго.

Сервер прячет всю технику за понятными инструментами. Вы спрашиваете обычным языком — ИИ сам выбирает нужный инструмент, ходит в OData вашей базы и возвращает готовый ответ. Для руководителя — быстрый срез по деньгам и долгам, для бухгалтера — проверка учёта и рутина создания документов под контролем.


Возможности

Руководителю

  • «Сколько денег сейчас» → остатки по каждому расчётному счёту и кассе: доступно, депозиты, деньги в пути

  • «Кто просрочил оплату» → дебиторка по срокам: просрочено, в срок, просрочка по дням, документы и дата оплаты по договору. В клиентах с MCP Apps (Claude Desktop и Claude Code в приложении Claude — с версии конца октября 2026) — карточкой прямо в ответе

  • «Кому мы должны и что пора платить» → кредиторка по срокам

  • «Продажи за май», «движение денег за квартал», «сколько заплатили налогов» → обороты за период с разбивками

Менеджеру

  • «Какие счета не оплачены» → счета покупателям: сумма, оплачено, остаток, сколько дней счёту

  • «Акт сверки с Ромашкой за квартал» → сальдо на начало и конец «в чью пользу», строки по документам, итоги по договорам

  • «История по контрагенту Ромашка» → все документы и взаиморасчёты

Бухгалтеру

  • «Проверь август перед отчётностью» → закрыт ли месяц и предыдущие месяцы, непроведённые документы, красное сальдо, остатки на 90/91 и 20–26/44 после закрытия и какие документы внесены уже после закрытия, амортизация, счета-фактуры

  • «Карточка 26 счёта за август», «откуда долг у Ромашки» → каждое движение с корреспонденцией и остатком после него

  • «С какого времени висит этот остаток и из каких документов» → состав остатка по документам и дата, с которой он не закрывался — для старых хвостов

  • «ОСВ по 51 счёту за квартал», «какие проводки сделал этот документ» → оборотно-сальдовая ведомость и проводки из регистра бухгалтерии

  • «Остатки на складе», «когда и кем заведён документ» → остатки по номенклатуре, хронология документа для аудита

  • поиск контрагентов и документов любого типа, карточки объектов, карта базы

Действия — при включённой записи, всегда с предпросмотром и подтверждением

  • «Заведи контрагента ООО Ромашка, ИНН …, телефон, email, расчётный счёт, директора»

  • «Выстави счёт покупателю на 3 шт по 1000» → документ-черновик

  • «Создай поступление от поставщика и реализацию покупателю», «проведи документ» → проводки формирует сама 1С

  • «Оформи возврат от покупателя», «перемещение между складами», «оприходование / списание / инвентаризацию»

  • «Проведи оплату», «списание с расчётного счёта», «приходный / расходный кассовый ордер»

  • «Выпиши счёт-фактуру на реализацию», «акт об оказании услуг»

  • «Сделай акт за июль как за июнь, поменяй период и количество» → копия прошлого документа со всеми реквизитами (содержание строк, счета учёта, банковский счёт) — так выставляют ежемесячные документы

  • «Какие счета расчётов настроены для договора с Ромашкой?», «для группы „Поставщики услуг“ ставь расчёты на 76.05» → настройки счетов расчётов для договора, контрагента или группы

  • «В этой выписке поставь договор аренды и счета расчётов по настройке» → договор и счета в уже загруженном банковском документе (1С через OData сама настройку не применяет)

  • «Заведи группу контрагентов „Арендодатели“ и перенеси в неё ООО Склад»

  • изменение реквизитов, строк документов; проведение и пометка на удаление

Что стоит знать заранее:

  • Просрочка считается по сроку оплаты в договоре (флаг «Установлен срок оплаты»). Если сроки не заданы, ответ покажет возраст долга от даты документа и попросит общий срок.

  • Акт сверки — это данные для акта. Печатная форма «Акт сверки» формируется в самой 1С.

  • Проверка закрытия месяца только читает. Закрыть месяц через OData нельзя — сервер показывает, что не так и где.

  • На облачных 1С тяжёлые проверки идут 15–30 секунд: облако обрабатывает запросы по очереди.

Больше примеров вопросов по ролям — в docs/SCENARIOS.md, полный перечень инструментов — в разделе Инструменты.


Быстрый старт

Впервые слышите про MCP? Это открытый протокол (Model Context Protocol), по которому ИИ-ассистент подключается к внешним инструментам. Здесь инструмент — ваша 1С: ассистент сам вызывает нужные функции и возвращает ответ. Ничего программировать не нужно — три шага ниже.

Проще с ассистентом. Дайте своему ИИ ссылку на этот репозиторий — по docs/INSTALL-WITH-AI.md он проведёт по шагам и даст конфиг под ваше приложение. Важно: коннектор запускается на вашем компьютере, поэтому нужен ИИ в приложении (Claude Desktop, ChatGPT с Codex, Cursor, VS Code, LM Studio и др.) — веб-чат в браузере локальный коннектор запустить не может.

  1. Опубликуйте OData в 1С и добавьте нужные объекты в «Состав» (подробно — docs/CONNECTING.md; если OData ещё не включён — docs/ODATA-SETUP.md).

  2. Пропишите сервер в Claude Desktop (claude_desktop_config.json), подставив адрес и учётные данные:

    {
      "mcpServers": {
        "1c-odata": {
          "command": "npx",
          "args": ["-y", "1c-odata-mcp"],
          "env": {
            "ODATA_BASE_URL": "https://<сервер>/<база>/odata/standard.odata/",
            "ODATA_USERNAME": "...",
            "ODATA_PASSWORD": "..."
          }
        }
      }
    }
  3. Перезапустите Claude Desktop (полностью) и спросите: «проверь соединение с 1С». Затем запустите готовый сценарий — например, «Утреннюю сводку руководителя».

Полная настройка (адрес OData по площадкам, авторизация, запуск из исходников, Claude Code, диагностика ошибок) — в docs/CONNECTING.md.


Начните с готовых сценариев

После подключения не нужно придумывать вопросы: сервер отдаёт клиенту готовые сценарии (MCP prompts). В Claude Desktop они в меню «+» → 1c-odata, в других клиентах — как slash-команды. Сценарий только читает данные и ничего не меняет в 1С.

Сценарий

Кому

Что делает

morning_brief — «Утренняя сводка руководителя»

руководителю

Деньги на счетах, кто просрочил оплату, неоплаченные счета, что пора платить — четыре блока и действия на сегодня

month_close_review — «Разбор закрытия месяца»

бухгалтеру

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

reconciliation_act — «Акт сверки с контрагентом»

менеджеру, бухгалтеру

Находит контрагента по названию или ИНН и выводит данные для акта сверки за период


Пример диалога

Ниже — Claude Desktop, но диалог выглядит так же в любом MCP-клиенте. Суммы условные.

Вы:     Проверь август перед отчётностью.
Claude: (вызывает read.accounting.check_month_close) Месяц закрыт, но есть две проблемы:
        1. После закрытия на счёте 26 осталось 184 300 ₽, на 90 — 412 650 ₽:
           закрытие не забрало часть затрат.
        2. Один из расчётных счетов в минусе на 12 400 ₽ на 31.08.
        (вызывает read.accounting.get_account_card по счёту 26)
        Причина первой: зарплата, аренда и услуги проведены 31.08 уже после
        закрытия месяца. Что сделать: перезакрыть август — «Закрытие месяца» → «Выполнить».
        По второй: не загружена выписка за 31.08 — проверьте банк.

Вы:     Кто из покупателей должен больше всего и что просрочено?
Claude: (вызывает read.analytics.get_debtors, overdueOnly) Просрочено 1 860 000 ₽ у 7 покупателей:
        1. ООО «Ромашка» — 1 240 500 ₽, самая старая просрочка 52 дня
        2. ИП Иванов     —   318 000 ₽, 31 день
        …

Инструменты

75 инструментов (33 чтение/аналитика + 42 записей). У всех есть необязательный параметр database (какая база 1С — см. read.system.list_databases); у аналитических — ещё и organization (фильтр по юрлицу — см. read.system.list_organizations).

Чтение и аналитика:

Инструмент

Что делает

read.system.list_databases / read.system.list_organizations

Список баз / организаций (для параметров database / organization)

read.organization.get_organization_card

Карточка организации: ИНН/КПП/ОГРН, ОКВЭД, налоговый орган, адреса, банковский счёт, директор и главный бухгалтер

read.schema.list_entities / read.schema.describe_entity

Карта объектов базы и поля конкретного объекта (из $metadata)

read.counterparty.find_counterparty / read.counterparty.get_counterparty

Поиск контрагента (по названию/ИНН) с полным наименованием и ролями по договорам (покупатель, поставщик, комитент…) и его карточка; subjectKind=group — поиск групп контрагентов

read.document.search_documents / read.document.get_document

Поиск документов — по виду (kind: продажи, банк, касса…) или сразу по всем основным видам, по периоду и номеру (number: «33» находит 0000-000033, а также входящий номер контрагента) — и документ с табличной частью

read.analytics.get_debtors / read.analytics.get_creditors

Дебиторка (сч. 62) / кредиторка (сч. 60) по контрагентам, на дату (asOf). aging=true — по срокам: просрочено / в срок / срок не задан, просрочка по дням, возраст долга от даты документа, документы расчётов; overdueOnly=true — только просроченные

read.analytics.get_unpaid_invoices

Неоплаченные и частично оплаченные счета покупателям: оплачено по регистру «Оплата счетов», остаток, отгрузка по счёту, сальдо покупателя по 62 для сверки

read.analytics.get_cash_balance

Деньги сейчас или на дату: остатки 50/51/52/55/57 по каждому банковскому счёту и кассе, итоги «доступно», «спецсчета», «в пути»

read.analytics.get_inventory

Остатки товаров (сч. 41/10/43), можно на дату в прошлом (asOf)

read.accounting.get_account_turnover

ОСВ по счёту за период (51, 60, 90.01…): сальдо на начало/конец и обороты Дт/Кт, итогом и по субсчетам

read.accounting.get_account_card

Карточка счёта за период: каждое движение — дата, документ, содержание, Дт/Кт, корреспондирующий счёт и аналитика, остаток после движения; сальдо на начало и конец сверено с регистром. Отбор по контрагенту (counterpartyRef) или любому субконто (dimensionRef)

read.accounting.get_balance_origin

Откуда сложилось сальдо: из каких документов состоит остаток на дату и с какого времени он висит — по документам расчётов из сальдо 1С или по истории движений на несколько лет назад

read.counterparty.get_reconciliation

Данные для акта сверки с контрагентом по 60/62/76: сальдо на начало и конец «в пользу организации / контрагента», строки по документам, обороты, итоги по договорам (contractRef — один договор)

read.accounting.check_month_close

Проверка месяца (month=YYYY-MM): закрытие выполнено и без ошибок, закрыты ли предыдущие месяцы, непроведённые документы, красное сальдо (деньги и товары в минусе, расчёты 62/60 не на той стороне), остатки на 90/91 и 20–26/44 после закрытия и документы, внесённые после закрытия, амортизация при ОС/НМА, реализации с НДС без счёта-фактуры. По каждой проверке — статус и строки

read.accounting.get_document_postings

Проводки одного документа (любого Document_*) из регистра Хозрасчетный: Дт/Кт с кодами счетов и субконто, суммы, итоги и свод по корреспонденциям. Субконто — ExtDimensionDr1..3/ExtDimensionCr1..3: на БП 3.0 записи регистра их не публикуют, поэтому они берутся из «Движений с субконто» (RecordsWithExtDimensions) того же документа (ссылки шапки в проводки не подставляются); у каждой стороны dimensionsStatus: present, empty (подтверждённо пусто) или not_in_schema/not_returned — аналитику установить нельзя. Пример: {"documentEntity": "Document_РегламентнаяОперация", "documentRef": "919a75d1-7f6a-11f1-86c3-74563c4bf0d1"}

read.audit.get_document_history

Хронология документа для аудита: учётная дата (documentDate) отдельно от метки генерации Ref_Key из UUIDv1 (refCreatedAt, derived), ответственный, DataVersion как есть, наличие движений в Хозрасчетном, evidence и limitations. Фактическое время выполнения/изменения через стандартный OData недоступно — не возвращается

read.analytics.get_sales / read.analytics.get_cashflow

Продажи за период / движение денег (банк + касса)

read.analytics.get_sales_breakdown / read.analytics.get_purchases_breakdown

Продажи/закупки с разбивкой по контрагенту, месяцу, договору, категории (ИП/ЮрЛицо/…)

read.analytics.get_payments_breakdown

Приход/расход по виду операции, месяцу, контрагенту, статье ДДС — «сколько заплатили ИП за год», «проценты по депозиту»

read.analytics.get_taxes_paid

Уплаченные налоги и взносы за период, с разбивкой по виду налога

read.analytics.get_deal_history

Хронология движений по сделке (код в назначении платежа) или договору

read.counterparty.get_customer_history / read.counterparty.get_supplier_history

История взаиморасчётов с покупателем / поставщиком

read.accounting.get_settlement_settings / read.accounting.get_contract_settlement_settings

Точная сохранённая настройка счетов расчётов для договора, контрагента или группы — подробнее

read.system.health_check

Проверка соединения и авторизации

Запись (✍️ требует включения, работает через dry-run → confirm=true):

Инструмент

Что делает

write.counterparty.create_counterparty

Контрагент (+ телефон/email/адрес/ОГРН)

write.counterparty.create_bank_account / write.counterparty.create_contact_person

Расчётный счёт (банк по БИК) / контактное лицо (директор)

write.catalog.create_nomenclature

Номенклатура (папка, артикул, признак услуги)

write.catalog.create_contract

Договор (вид, номер, валюта, тип цен, руководитель контрагента)

write.sales.create_invoice / write.purchase.create_supplier_invoice

Счёт покупателю / счёт на оплату поставщика (непроведёнными)

write.purchase.create_purchase / write.sales.create_shipment

Поступление от поставщика / реализация покупателю

write.warehouse.create_return_from_customer / write.warehouse.create_return_to_supplier

Возврат товаров от покупателя / поставщику

write.warehouse.create_transfer

Перемещение товаров между складами

write.warehouse.create_surplus / write.warehouse.create_writeoff

Оприходование / списание товаров

write.warehouse.create_inventory

Инвентаризация товаров на складе

write.sales.create_act

Реализация услуг (акт)

write.sales.create_services_act

Акт об оказании услуг (доходы/расходы по номенклатурной группе)

write.money.create_payment / write.money.create_payout_order

Оплата от покупателя (поступление на р/с) / платёжное поручение

write.money.create_bank_writeoff

Списание с расчётного счёта (исходящий платёж, вид операции обязателен)

write.money.create_cash_receipt / write.money.create_cash_payment

Приходный / расходный кассовый ордер (ПКО / РКО)

write.sales.create_issued_invoice / write.purchase.create_received_invoice

Счёт-фактура выданный / полученный (на основании реализации / поступления)

write.entity.create_folder / write.entity.move_to_folder

Папка (группа) справочника / перемещение в папку

write.counterparty.update_counterparty / write.catalog.update_nomenclature / write.entity.update_entity

Изменение реквизитов (PATCH)

write.document.copy_document

Документ по образцу существующего — со всеми реквизитами

write.document.update_document_lines / write.document.add_document_line / write.document.remove_document_line

Редактирование строк документа

write.document.post_document

Провести / отменить проведение (1С формирует проводки); с expectedDataVersion — с проверкой версии документа и журналом операции; явное повторное проведение — post=true, repost=true и точная версия

write.accounting.set_settlement_settings / write.accounting.set_contract_settlement_settings

Настройка счетов расчётов и авансов для договора, контрагента или группы (регистр «Счета учёта расчётов с контрагентами») — подробнее

write.document.align_bank_payment_amounts

Сумма единственной строки расшифровки платежа существующего непроведённого рублёвого банковского документа — по сумме документа (платёж, взаиморасчёты, НДС по ставке строки) — подробнее

write.document.apply_bank_settlement_settings

Договор и счета расчётов/авансов по сохранённым настройкам — в существующий непроведённый банковский документ — подробнее

write.counterparty.create_group / write.counterparty.set_group

Группа контрагентов / перенос контрагента в группу (с проверкой цепочки и версии)

write.operation.status

Статус операции записи по operationId; после таймаута сверяет с 1С (созданный объект — по назначенному Ref_Key, правку строк — по числу строк). Найденный результат фиксирует как успех; отсутствие результата закрывает операцию только с markNotApplied=true после ручной сверки

write.entity.mark_for_deletion

Пометить на удаление / снять пометку (мягкое удаление)

Все инструменты проверены на живой базе 1С:Бухгалтерия предприятия 3.0.

Строки документов продажи и закупки принимают:

  • content — реквизит «Содержание». Именно этот текст печатается в счёте и УПД («Услуги согласно приложению № 4 от 01.10.2025 г. к договору № 87 … за июль 2026 г.»). Сама 1С его не заполняет, так что для услуг задавайте явно.

  • incomeAccount / expenseAccount — счета доходов и расходов кодом как в 1С (90.01.2, 90.02.2) или через Ref_Key. Их же можно задать на весь документ. Приоритет: строка → документ → регистр «Счета учёта номенклатуры» → 90.01.1 / 90.02.1. Счета применимы к продажным документам; счёт на оплату и поступление их не используют.

  • orgBankAccount (счёт покупателю, реализация, акт) — банковский счёт организации, который печатается как реквизиты для оплаты: название, номер счёта или Ref_Key. Без указания берётся основной счёт организации.

write.document.add_document_line и remove_document_line пересобирают табличную часть, сохраняя реквизиты прежних строк — содержание, счета учёта, номенклатурную группу. update_document_lines заменяет строки целиком, поэтому там их задают заново. Строки пишутся в ту табличную часть, которая у документа заполнена: у акта услуг это «Услуги», у товарного документа — «Товары».

Ежемесячно повторяющиеся документы проще выставлять через write.document.copy_document: он берёт прошлый документ за образец и переносит все реквизиты, включая те, которых нет в схемах create_* — банковский счёт, ответственного, адрес доставки, доп. условия счёта. Меняются датой (date), реквизитами шапки (fields) и правками строк по номеру (lines). Счета расчётов копия берёт из исходного документа; если в fields сменить договор — по настройке нового договора.

Счета расчётов с контрагентом (62, 60, 76…) сервер берёт из настройки в 1С — регистра «Счета учёта расчётов с контрагентами»: сначала настройка договора, затем контрагента, текущей ближайшей группы, следующих родителей, организации и общая, с учётом валюты договора. Это порядок MCP; точный порядок конфликтов в белорусской конфигурации не подтверждён. Предпросмотр пишет источник каждого счёта. Если регистр не опубликован в OData — стандартные 62.01/62.02 и 60.01/60.02.

Другой план счетов или виды операций. ODATA_ACCOUNTING_CONFIG и ODATA_DB_<ИМЯ>_ACCOUNTING_CONFIG задают план счетов, регистр бухгалтерии, коды счетов по умолчанию, аналитические префиксы и виды операций акта и оплаты. Без настройки сохраняются прежние значения БП РФ. Параметры, приоритеты и синтетический пример для Беларуси — Настройка учёта.


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

По умолчанию сервер работает только на чтение. Запись включается осознанно, через два независимых предохранителя:

  1. Глобальный рубильник READ_ONLY=false.

  2. Пер-базовый флаг ODATA_DB_<ИМЯ>_WRITABLE=true — базы без него остаются read-only даже при снятом глобальном. Так можно открыть запись в одну базу (напр. ИП) и защитить другие (напр. ООО).

Дополнительно при записи:

  • dry-run по умолчанию — предпросмотр создания (и добавления/удаления строки документа) возвращает operationId; для записи передайте этот же id и те же аргументы вместе с confirm=true. При сетевой ошибке повторяйте подтверждение с тем же id, не запускайте новый предпросмотр;

  • защита от неопределённого результата POST — локальный журнал сохраняет отпечаток запроса и результат. Повтор с тем же id и теми же аргументами вернёт сохранённый итог без второго POST; если соединение оборвалось и исход неизвестен, сервер заблокирует повтор и попросит сверить результат в 1С. Сверку делает write.operation.status: создаваемому объекту MCP сам назначает Ref_Key (UUIDv1, назначается при предпросмотре), поэтому повтор с той же ссылкой 1С отвергает на уровне уникального индекса, а после таймаута объект находится простым GET — и для документов, и для справочников. Правка строк документа сверяется по числу строк. Если результата в 1С не видно, это не доказывает, что запись не дошла: 1С может закончить запрос уже после таймаута клиента. Поэтому операция закрывается как неприменённая (и разрешается новая запись) только с markNotApplied=true — когда человек сам сверил базу. По желанию в «Комментарий» документов можно дописывать видимую метку [op:<operationId>] (ODATA_WRITE_OPERATION_MARKER=true);

  • проверка сохранения — после изменения объекта поля перечитываются: успех только если 1С сохранила всё, что отправлено; иначе — ошибка с именами несохранённых полей (1С может перезаполнить часть полей сама при записи), без автоматического повтора;

  • читаемый предпросмотр — рядом с payload предпросмотр отдаёт view: подписи полей по-русски, названия вместо GUID (контрагент, договор, номенклатура, счета учёта, организация), строки табличных частей, у изменения — «было → станет». Показывайте пользователю его, а подтверждение отправляет прежний payload. Названия — до 4 запросов к справочникам; интеграциям с массовой записью без человека в цикле вид можно выключить: ODATA_PREVIEW_VIEW=false;

  • договор по умолчанию — если contractRef не указан, а у контрагента ровно один подходящий договор (вид «с покупателем»/«с поставщиком», та же организация), он подставляется, как в форме 1С; иначе предпросмотр предупреждает: без договора 1С документ не проведёт;

  • мягкое удаление — write.entity.mark_for_deletion ставит пометку (как в 1С); жёсткого DELETE нет;

  • на стороне 1С в «Состав OData» включаются только нужные объекты, а у пользователя 1С должны быть права на запись.

Приватность данных. Сервер — локальный процесс на вашей машине: он ходит только в вашу базу 1С (по Basic-аутентификации) и отдаёт данные вашему MCP-клиенту. Никаких сторонних серверов проекта в цепочке нет. Если использовать локальную модель (Ollama, LM Studio), данные 1С вообще не покидают вашу сеть. Секреты — только из .env (или блока env конфига); пароль и заголовок авторизации в логи не попадают.

Журнал защиты от повторной записи хранится локально в ~/.1c-odata-mcp/write-journal (путь можно изменить через ODATA_WRITE_JOURNAL_DIR). В нём нет полного payload: сохраняются hash запроса, статус операции и ограниченная сводка результата (Ref_Key, Code, Number). Успешные, отклонённые и неподтверждённые предпросмотры удаляются через 90 дней; операции с неизвестным результатом хранятся год (раньше удалять нельзя: это разрешило бы опасный повтор). Раз в час чистятся и служебные файлы: зависшие .tmp и «осиротевшие» .lock. В Docker смонтируйте каталог журнала на том (ODATA_WRITE_JOURNAL_DIR), иначе защита теряется вместе с контейнером.

Как именно включить запись — docs/CONNECTING.md → Включение записи.


Несколько баз и несколько организаций

Это разные случаи:

  • Несколько отдельных баз (разные OData-адреса) — один сервер обслуживает все; имя базы передаётся параметром database. Настройка в .env — см. docs/CONNECTING.md. Пример запроса: «сравни выручку buh и torg за май».

  • Несколько организаций (юрлиц) в одной базе — отдельное подключение не нужно, работает фильтр organization. Пример: «остатки по организации Ромашка».


Ограничения

Стоит знать заранее:

  • Нужен опубликованный OData. Сервер работает только через стандартный интерфейс OData 1С. Прямого доступа к SQL, COM-соединения или файлам сервера 1С он не использует и не требует.

  • Объект должен быть в «Составе OData». Если объект не опубликован, инструмент вернёт вежливую подсказку с именем объекта и путём, куда его добавить. Публикуйте по мере необходимости.

  • Целевая конфигурация — Бухгалтерия предприятия 3.0. Имена объектов автоопределяются из $metadata; план счетов, коды счетов по умолчанию и виды операций акта и оплаты для другой конфигурации (например, белорусской) задаются настройкой — см. Настройка учёта. На УТ/ERP и самописных конфигурациях чтение справочников/документов работает, а бухгалтерская аналитика и запись документов требуют проверки на копии базы.

  • Документы создаются непроведёнными. Проводки формирует сама 1С при проведении (write.document.post_document или вручную) — сервер не «рисует» проводки напрямую.

  • Повторное проведение — явное действие. Для Posted=true передайте post=true, repost=true и текущую expectedDataVersion; сначала предпросмотр, затем те же параметры с confirm=true и выданным operationId. Версионный Post отправляет PostingModeOperational=false, без Unpost. Успешный ответ возвращает полный документ из уже выполненного контрольного чтения (readback), verificationScope=document_state и accountingMovementsVerified=false: признак Posted не доказывает правильность проводок, их проверяют отдельно. Завершённый operationId возвращает квитанцию без нового Post/GET (verificationScope=journal_receipt, readbackFetched=false); полный документ в журнале не сохраняется. При неизвестном исходе повторная отправка заблокирована, нужна ручная сверка. Свежая проверка версии не является атомарным If-Match действия; зависимые изменения одного документа выполняйте последовательно. Ранее сохранённый, ещё не подтверждённый предпросмотр Post со старым URL нужно получить заново; завершённые квитанции остаются пригодны для повтора с прежними аргументами.

  • Регламентные операции не создаются. Закрытие месяца, амортизацию, расчёт себестоимости/НДС генерирует обработка «Закрытие месяца» своими алгоритмами — через OData их не запустить. Читать (read.document.search_documents/read.document.get_document) и проверять результат (read.accounting.check_month_close) можно.

  • Оплаты по договору (create_payment, create_bank_writeoff, ПКО/РКО). Счета расчётов и сумма взаиморасчётов ставятся в строки расшифровки платежа, шапка не заполняется — как в документах из 1С. Проводки по расчётам 1С формирует только при заполненной сумме взаиморасчётов — иначе проводит документ молча и без проводок. Для договора в рублях сервер заполняет её сам (= сумме платежа, курс 1); для договора в валюте или у.е. курс не угадывается — укажите его в 1С до проведения, предпросмотр об этом напомнит.

  • ОГРН и прочие доп.реквизиты. Пишутся, только если в базе заведён соответствующий «дополнительный реквизит» (Администрирование → Дополнительные реквизиты). Иначе инструмент честно сообщает, что записать некуда.

  • Адрес пишется текстом-представлением (не структурированный ФИАС-адрес).

  • Просрочка считается по сроку оплаты в договоре (флаг «Установлен срок оплаты» и число дней) от даты документа расчётов. Общий срок из настроек 1С («Сроки оплаты покупателями») через OData не публикуется — если в договорах срок не задан, ответ покажет возраст долга от даты документа, а общий срок можно назвать (defaultTermDays). Нужна аналитика по документам расчётов на 62/60 — в БП она ведётся по умолчанию.

  • Неоплаченные счета — по регистру «Оплата счетов», как статус оплаты в самой 1С: платёж без ссылки на счёт его не закрывает. Для сверки в ответе есть сальдо покупателя по 62.

  • Пагинация и лимиты. Чтобы не выгружать тысячи строк, действует размер страницы и защитный максимум (ODATA_PAGE_SIZE / ODATA_MAX_ROWS); большие выборки усекаются с пометкой. Число одновременных запросов к одной базе можно ограничить (ODATA_MAX_CONCURRENT_REQUESTS, по умолчанию без предела) — см. .env.example.


Как устроено

Локальный процесс на Node.js, общается с клиентом по протоколу MCP через stdio, а с 1С — по HTTP к OData (Basic-аутентификация). Стек: Node.js 20+, TypeScript (strict), официальный @modelcontextprotocol/sdk, нативный fetch, zod (валидация), pino (логи в stderr), fast-xml-parser (разбор $metadata).

Карта объектов строится автоматически из $metadata базы и кешируется; запросы собираются типобезопасным билдером. Несколько баз — у каждой свой клиент и свой кеш метаданных.

src/
  index.ts            точка входа
  context.ts          реестр баз: Connection (клиент + кеш $metadata) + ServerContext
  mcp/server.ts       инициализация MCP SDK, регистрация инструментов, stdio
  odata/              клиент, билдер запросов, пагинация, разбор $metadata, аналитика,
                      справочные резолверы, обработка ошибок, проверка публикации
  tools/              инструменты: meta, counterparties, documents, registers, cashflow,
                      sales, organization, write
  config/             конфигурация (.env, мультибаза) и маппинг имён/счетов
  types/              типы OData и доменные типы

Технические заметки

  • + vs %20 в OData 1С. 1С не декодирует + в пробел внутри $filter (отвечает 400), поэтому query-string собирается через encodeURIComponent (пробел → %20), а не URLSearchParams.

  • Счета учёта документов не подставляются автоматически через OData (это делает форма 1С при выборе номенклатуры) — сервер берёт их из регистра «Счета учёта номенклатуры», с откатом на стандартные коды плана счетов.

  • Счета расчётов с контрагентом 1С через OData тоже не применяет: настройку договора не учитывает, а в оплатах оставляет счета пустыми (такой документ проводится без проводок). Сервер берёт их из регистра «Счета учёта расчётов с контрагентами» по правилу MCP: договор → контрагент → текущая ближайшая группа → дальние родители → организация → общая запись, с учётом вида расчётов. Источник каждого счёта показан в предпросмотре. Регистр не опубликован — стандартные 62.01/62.02, 60.01/60.02. Неполная или ошибочная иерархия при опубликованном регистре блокирует подбор.

  • Логи и stderr. stdout занят JSON-RPC, поэтому логи идут в stderr — но только в терминале. Под MCP-клиентом (когда stdin — pipe) логи пишутся в файл <tmpdir>/1c-odata-mcp/server.log, чтобы не сломать клиентов, трактующих любой вывод в stderr как фатальную ошибку. Вернуть логи в stderr: MCP_LOG_STDERR=1.

  • Типизированные ответы. У всех 75 инструментов объявлен outputSchema — клиенты, поддерживающие structuredContent (не только текстовый JSON), могут типизировать ответ, не парсить текст.

  • Имена инструментов. Трёхсегментный dot-notation: <read|write>.<категория>.<имя> (напр. read.analytics.get_debtors, write.sales.create_shipment) — группирует инструменты по категории и сразу видно, чтение это или запись.


Частые вопросы (FAQ)

MCP-клиент «висит» / запрос отваливается по таймауту. Если зависают даже мелкие вызовы (read.system.health_check, read.system.list_databases) — это почти всегда залипший процесс MCP (в Claude Desktop лечится полным перезапуском приложения, Cmd+Q и заново), а не база. Здоровый read.system.health_check отвечает за секунду.

Указываю другую базу, а она «недоступна» / отвечает только одна. Параметр database — это имя из read.system.list_databases (поле name, напр. ooo), а не «человеческое» название (label, напр. «ООО Ромашка»). Обращайтесь по имени.

Ответ пустой / «объектов 0». Не настроен Состав OData — добавьте нужные объекты в 1С (см. docs/ODATA-SETUP.md и docs/CONNECTING.md).

Работает медленно. Это латентность вашей 1С / хостинга, не Claude: годовые выборки на «шумных» базах бывают 10–30 секунд. Спрашивайте более узким периодом (квартал/месяц) — ответ приходит за секунды. Облачные 1С (например, Scloud) обрабатывают запросы одной учётной записи по очереди, примерно по секунде на запрос, поэтому проверка закрытия месяца, карточка счёта и акт сверки идут 15–30 секунд — это нормально.

Нужен ли доступ к SQL базы или COM? Нет. Сервер использует только OData — ничего не ставится внутри 1С, в SQL напрямую он не лезет.

Безопасно ли пускать ИИ к боевой базе? По умолчанию — только чтение. Запись включается двумя независимыми флагами и работает через предпросмотр (dry-run) с подтверждением. Физического удаления нет (только пометка). См. Безопасность.

Какая 1С подойдёт? Любая, где включён OData — облако (Scloud/1cFresh), сервер с SQL или локальная файловая база. Пошагово под каждый случай — docs/ODATA-SETUP.md.


Благодарности

  • @Alexsab — работа с документами в 0.4.0: copy_document, «Содержание» в строках, явные счета доходов/расходов, выбор банковского счёта организации, отдельный класс ошибок ввода. И, что ценнее всего, найденные на живой базе баги, которые юнит-тестами не ловятся: правка строк акта уходила мимо его табличной части, а подбор банковского счёта был сломан молча.

  • @alexpostnik — защита записи от дублей в 0.5.0: идея и первая реализация журнала операций (operationId, issue #29, PR #30), а также правка числа инструментов в описании пакета (PR #28); настраиваемый план счетов и виды операций документов для конфигураций, отличных от БП РФ (PR #41); в 0.10.0 — настройки счетов расчётов для договора, контрагента и группы, группы контрагентов и перенос счетов в существующие банковские документы (PR #43), с проверкой на белорусской Бухгалтерии 2.1.

  • @AlexMarinenko — учётная аналитика в 0.6.0: ОСВ по счёту (get_account_turnover), проводки документа (get_document_postings) и хронология документа для аудита (get_document_history, PR #31).

Нашли ошибку или не хватает документа — issue и PR приветствуются. Особенно ценны находки на реальных базах: конфигурации 1С различаются, и то, что работает на одной, на другой отвечает 500-й.


Лицензия

MIT. Проект открытый — пользуйтесь, форкайте, присылайте issue и PR: https://github.com/evilbruce666/1c-odata-mcp.

⭐ Если коннектор оказался полезен — поставьте звезду на GitHub и расскажите в Discussions, какие вопросы задаёте своей 1С. Это лучшая мотивация развивать проект.

Available Tools

75 tools
read.accounting.check_month_closeПроверка закрытия месяцаA
Read-only

Проверка учёта за месяц — то, что бухгалтер смотрит перед сдачей отчётности и после закрытия месяца: (1) закрытие месяца выполнено и без ошибок, закрыты ли предыдущие месяцы года; (2) непроведённые документы месяца; (3) красное сальдо на конец месяца — деньги и товары в минусе, расчёты 62/60 не на той стороне; (4) остатки на 90, 91 (должны быть в нуле) и 20–26, 44 после закрытия и документы, созданные позже операции закрытия (если остатки есть); (5) амортизация при наличии ОС и НМА; (6) реализации с НДС без счёта-фактуры. Каждая проверка — статус ok / warning / error / not_applicable / skipped, пояснение и строки (до 20). Остатки на 90/91/25/26 на начало месяца — признак, что прошлые месяцы закрыты не полностью. closingCreatedAt — когда впервые создана операция закрытия (документы, созданные позже, могли в него не попасть; перезакрытие этого времени не меняет). Для перехода в карточку счёта: analyticsRefs с analyticsTypes Catalog_Контрагенты — counterpartyRef, иначе dimensionRef. У регламентных операций в БП Posted = false — это нормально. Только чтение: закрыть месяц через OData нельзя, только проверить результат.

NameRequiredDescriptionDefault
monthYesПроверяемый месяц, YYYY-MM
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
scanYes
monthYes
checksYes
periodYes
statusYes
summaryYes
databaseYes
organizationNo

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses rich behavior: six check categories, possible statuses (ok/warning/error/not_applicable/skipped), explanation and row limits, closingCreatedAt semantics, analyticsRefs mapping, and the caveat that regulatory operation Posted=false is normal. This is substantial context for interpreting results.

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

Conciseness4/5

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

The description is dense but front-loaded and organized with numbered checks. It is appropriately sized for a complex multi-check tool, though some output-navigation details could be considered lengthy for a single paragraph.

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

Completeness5/5

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

Given the tool's complexity, the description is complete: it explains the checks, result statuses, caveats, and reference navigation. An output schema exists, so the description need not explain return values further, and it already provides enough context to call and interpret the tool correctly.

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

Parameters4/5

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

The schema already covers all three parameters at 100%, so baseline is at least 3. The description adds some interpretive meaning by referring to month-level checks and explaining related output fields, but it does not add parameter-specific guidance beyond what the schema provides.

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

Purpose5/5

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

The description clearly states a specific verb and resource: it checks month-close accounting via six explicit checks. It distinguishes itself from sibling read tools by focusing exclusively on month-close validation, and the enumerated checks make the scope unmistakable.

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

Usage Guidelines4/5

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

It gives clear context for use: an accountant reviewing the month before reporting and after closing. It also states an important boundary — read-only, cannot close the month through OData — but does not explicitly name alternative tools for related tasks.

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

read.accounting.get_account_cardКарточка счётаA
Read-only

Карточка счёта за период — каждое движение с корреспонденцией: дата, документ, содержание, Дт или Кт, корреспондирующий счёт и его аналитика, остаток после движения; сальдо на начало, обороты, сальдо на конец (сверено с регистром, consistent). account — код или префикс («51», «62.01», «26»). Отбор: counterpartyRef — контрагент (Ref_Key из find_counterparty), dimensionRef — любое другое субконто (договор, номенклатура, банковский счёт, документ расчётов). Сторно приходит отрицательной суммой в debit/credit. documentCreatedAt — когда документ создан (по ссылке): помогает найти документы, внесённые после закрытия месяца. Если остаток сложился до периода — возьмите период шире. Для разбора: откуда остаток на 26, кто дал красное сальдо, как сложился долг.

NameRequiredDescriptionDefault
toYesДата конца периода (YYYY-MM-DD)
fromYesДата начала периода (YYYY-MM-DD)
limitNoСколько движений показать
accountYesКод счёта или префикс субсчетов
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
dimensionRefNoRef_Key другого субконто: договор, номенклатура, банковский счёт
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
counterpartyRefNoRef_Key контрагента (из find_counterparty)

Output Schema

NameRequiredDescription
scanYes
countYes
periodYes
accountYes
entriesYes
databaseYes
consistentYes
organizationNo
debitTurnoverYes
closingBalanceYes
creditTurnoverYes
openingBalanceYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description still adds genuine behavioral detail: results are reconciled with the register ("сверено с регистром, consistent") and storno entries arrive as negative amounts in debit/credit — a non-obvious quirk that prevents misreading totals. It says nothing about truncation behavior when the movement count exceeds limit (default 200, max 2000), which matters for a per-movement listing.

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

Conciseness4/5

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

Everything is front-loaded: what the card contains, then the filters, then the investigative use cases, with no filler sentences. It is a single dense block rather than separated sections, and the enumerated output fields are somewhat verbose, but each sentence carries information an agent needs.

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

Completeness4/5

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

With an output schema present and 100% schema description coverage, the description doesn't need to restate return structure, and it wisely spends its budget on filters, accounting quirks, and investigative framing. The only real gap is the phantom documentCreatedAt parameter and the absence of any note on how limit/pagination affects completeness of the card.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3, and the description does add examples (account as "51", "62.01", "26"; dimensionRef widened to include "документ расчётов"). However it introduces documentCreatedAt, a parameter that does not exist in the input schema — an agent following the description could pass an invalid argument. That defect offsets the added examples and keeps this at baseline rather than above it.

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

Purpose4/5

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

The description names a concrete artifact (the account card for a period) and enumerates its contents down to the field level: date, document, content, Debit/Credit, corresponding account with analytics, running balance, opening balance, turnovers, closing balance. An agent can tell this is a per-movement ledger extract, distinct from a pure turnover summary. It stops short of naming the sibling it overlaps with (read.accounting.get_account_turnover), so it isn't a 5.

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

Usage Guidelines4/5

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

It gives real investigative framing: "Для разбора: откуда остаток на 26, кто дал красное сальдо, как сложился долг", plus practical advice ("Если остаток сложился до периода — возьмите период шире") and a note that document creation time helps find entries made after month close. What's missing is explicit exclusion — it never says when to prefer get_account_turnover or get_document_postings instead.

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

read.accounting.get_account_turnoverОСВ по счётуA
Read-only

Оборотно-сальдовая ведомость по бухгалтерскому счёту (регистр бухгалтерии Хозрасчетный, виртуальная таблица «Остатки и обороты») за период: сальдо на начало Дт/Кт, обороты Дт/Кт, сальдо на конец Дт/Кт — итогом и по субсчетам. account — код счёта или префикс («51», «60», «62», «90.01»): берутся все субсчета, код которых начинается с него. Сальдо развёрнутое по аналитике (измерения и субконто), как в стандартной ОСВ по счёту. Можно ограничить организацией. Период — даты YYYY-MM-DD включительно.

NameRequiredDescriptionDefault
toYesДата конца периода (YYYY-MM-DD)
fromYesДата начала периода (YYYY-MM-DD)
accountYesКод счёта или префикс субсчетов, напр. 51, 60, 62, 90.01
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
noteNo
scanYes
periodYes
accountYes
accountsYes
databaseYes
closingNetNo
consistentYes
openingNetNo
closingDebitYes
openingDebitYes
organizationNo
closingCreditYes
debitTurnoverYes
openingCreditYes
creditTurnoverYes

TDQS

A4.3/5.0
Behavior5/5

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

Beyond readOnlyHint and openWorldHint, it discloses the underlying 1C register and virtual table, prefix expansion to every matching subaccount, total-plus-subaccount granularity, expanded balance analytics, and inclusive period boundaries. These are concrete, invocation-visible behaviors rather than repetitions of the safety annotations.

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

Conciseness5/5

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

The purpose is front-loaded, followed by precise account, balance-granularity, filtering, and date semantics in a compact block. The accounting and 1C terminology is dense but functional, with no filler or redundant discussion of read-only safety.

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

Completeness4/5

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

Together with the fully described input schema, output schema, and annotations, the description supplies enough detail to construct a correctly scoped call. Its remaining gap is selection guidance: it does not explain how this aggregate report differs from get_account_card or get_balance_origin when an agent is choosing among accounting reads.

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

Parameters4/5

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

With 100% schema description coverage, the baseline is 3. The description adds value by clarifying that account acts as a code prefix selecting all matching subaccounts and that the from/to dates are inclusive, although its examples, organization filter, and YYYY-MM-DD wording largely overlap with the schema.

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

Purpose4/5

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

The description precisely identifies the artifact and scope: a turnover-balance report for an accounting account over a period, including opening and closing debit/credit balances and debit/credit movements, totaled and broken down by subaccount. This is much more specific than the title, but it does not explicitly distinguish the report from siblings such as get_account_card or get_balance_origin.

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

Usage Guidelines4/5

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

The references to a standard ОСВ по счёту, subaccount totals, and expanded analytics establish a clear use case for obtaining period-level account balances and movements. There is no explicit when-not guidance or explanation of when another accounting read tool would be preferable.

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

read.accounting.get_balance_originОткуда сложилось сальдоA
Read-only

Из каких документов состоит остаток по счёту на дату и с какого времени он висит — для старых хвостов, которых не видно в карточке за месяц. Где учёт ведётся по документам расчётов (62, 60, 76 в БП), состав — из сальдо 1С (method = documents). Иначе — по истории движений (method = movements): момент, с которого остаток держится непрерывно, и доля каждого документа, дожившая до даты; поиск назад до maxYears лет. since — дата самого старого документа остатка, documentCreatedAt — когда документ создан. Отбор: counterpartyRef — контрагент, dimensionRef — договор, номенклатура, банковский счёт.

NameRequiredDescriptionDefault
asOfNoОстаток на конец этой даты (без параметра — сегодня) (YYYY-MM-DD)
accountYesКод счёта или префикс субсчетов
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
maxYearsNoКак далеко назад искать по движениям
dimensionRefNoRef_Key другого субконто: договор, номенклатура, банковский счёт
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
counterpartyRefNoRef_Key контрагента (из find_counterparty)

Output Schema

NameRequiredDescription
asOfYes
scanYes
sideYes
countYes
itemsYes
sinceNo
methodYes
accountYes
balanceYes
databaseYes
organizationNo

TDQS

A4.1/5.0
Behavior4/5

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

With readOnlyHint/openWorldHint already declaring the safety profile, the description adds substantive behavior: two computation modes (method = documents for 62/60/76 in БП, otherwise method = movements with continuous-holding moment and per-document surviving share) and a bounded lookback of maxYears. It also explains what `since` and `documentCreatedAt` mean, though it says nothing about cost or behavior when no origin documents are found.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by method branching, then return-field meaning, then filters — a logical order with no filler. The semicolon-chained sentences are dense but each clause carries information.

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

Completeness4/5

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

For a seven-parameter read tool with an output schema, the description covers purpose, mode selection, field meaning, and filtering adequately. Minor gaps remain: no statement of cost when scanning many years back and no explicit fallback to the sibling card/turnover tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters. The description adds a little framing (maxYears as a backward search horizon, dimensionRef as contract/nomenclature/bank account), but this largely restates schema text and leaves account, asOf, database, and organization to the schema.

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

Purpose5/5

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

The description names a specific operation on a specific resource — the composition/origin of an account balance as of a date — and immediately scopes it ('для старых хвостов, которых не видно в карточке за месяц'), which separates it from read.accounting.get_account_card and read.accounting.get_account_turnover without the agent needing to open schemas.

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

Usage Guidelines4/5

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

It states the use case clearly (old balances invisible in the monthly card) and implicitly names the alternative by describing that card. It does not name the sibling tool explicitly nor state when the tool should NOT be used, so it stops just short of full routing guidance.

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

read.accounting.get_contract_settlement_settingsПрочитать точную настройку счетов расчётовA
Read-only

Читает точную настройку независимого регистра. scope=contract требует договор; counterparty/group означает контрагента или группу в том же поле Контрагент_Key без договора. Организация и вид расчётов обязательны. Для counterparty/group пустой GUID организации означает все организации, субъект остаётся точным. Унаследованные настройки не подставляются. Отсутствующая или несовместимая схема блокирует операцию. Старое имя get_contract_settlement_settings поддерживает только договор.

NameRequiredDescriptionDefault
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefYes
settlementKindYes
counterpartyRefYes
organizationRefYes

Output Schema

NameRequiredDescription
keyYes
foundYes
scopeYes
recordNo
databaseYes
entitySetYes
recordPathYes
contractKindNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered, but the description adds real behavioral context: inherited settings are not substituted, an empty organization GUID means all organizations in counterparty/group mode, and a missing or incompatible schema blocks the call. That last point in particular is non-obvious operational risk information not present in the structured fields.

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

Conciseness4/5

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

The sentences are dense but front-loaded, leading with what is read and immediately qualifying it with the no-inheritance rule. The final note about the legacy name is useful disambiguation rather than filler, though the reference to a 'scope' field with no matching parameter costs some clarity.

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

Completeness4/5

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

With annotations covering safety and an output schema covering return values, the description only needs to explain mode selection and constraints, which it largely does. The remaining gap is that the mode-selection logic is expressed via an abstract 'scope' rather than the actual contractRef-emptiness rule an agent must apply.

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

Parameters3/5

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

Schema description coverage is only 20% (only 'database' is documented), so the description must carry the load. It does clarify contractRef (omit it for counterparty/group mode) and organizationRef (empty GUID = all organizations), but it gives no guidance on the three settlementKind enum values or on the counterpartyRef vs group distinction beyond the vague 'в том же поле Контрагент_Key'.

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

Purpose4/5

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

The description names a concrete verb and resource ('Читает точную настройку независимого регистра') and signals that inherited settings are NOT substituted, which implicitly contrasts with the sibling get_settlement_settings. It stops short of explicitly naming that sibling or stating the distinguishing rule outright.

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

Usage Guidelines3/5

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

It explains how the mode is derived (contract vs counterparty/group based on whether a contract is supplied) and that organization and settlement kind are mandatory, which is genuine usage context. However, it frames this around a 'scope' concept that does not exist as a parameter in the schema, and it never explicitly says when to prefer this over read.accounting.get_settlement_settings.

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

read.accounting.get_document_postingsПроводки документаA
Read-only

Бухгалтерские проводки, сформированные одним документом (регистратором), из регистра бухгалтерии Хозрасчетный: Дт/Кт (код, наименование, Ref_Key счёта, субконто), сумма, у каждой стороны dimensionsStatus: present/empty — субконто есть/подтверждённо пусты, not_in_schema/not_returned — аналитику установить нельзя (это не «пусто»). количество/валютная сумма, итоги Дт/Кт и свод по корреспонденциям счетов. Подходит для любого вида документа (Document_*). Только чтение. documentEntity — имя документа из list_entities (class=document), documentRef — его Ref_Key (из search_documents).

NameRequiredDescriptionDefault
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
documentRefYesRef_Key документа (GUID)
documentEntityYesИмя документа, напр. Document_РегламентнаяОперация

Output Schema

NameRequiredDescription
noteNo
scanYes
sourceYes
databaseYes
documentYes
postingsYes
debitTotalYes
creditTotalYes
postingsCountYes
dimensionsNoteNo
byCorrespondenceYes

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the readOnlyHint/openWorldHint annotations, it discloses an important behavioral nuance: dimensionsStatus values distinguish 'confirmed empty' from 'cannot be determined' (not_in_schema/not_returned), which prevents the agent from misreading missing analytics as zero subconto. It also mentions the returned totals and correspondence summary; with an output schema present, the return description is partly redundant, which keeps this from a 5.

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

Conciseness4/5

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

It is a single dense paragraph, front-loaded with the resource definition before the field breakdown and parameter hints. Every sentence carries information, though the long run-on construction and repeated 'Только чтение' (already in annotations) cost a bit of tightness.

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

Completeness4/5

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

For a read tool with an output schema and full annotation coverage, it covers what the data is, how to obtain the required inputs, how to interpret the ambiguous status flag, and that it works for all document types. Remaining gaps (pagination, database default behavior beyond the schema) are minor.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds the provenance of both required parameters (list_entities with class=document, and search_documents) that the schema itself does not state. It does not explain the optional database parameter, relying on the schema for that.

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

Purpose5/5

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

The description states a specific verb and resource: postings generated by one document (registrar) from the Хозрасчетный accounting register, broken down into Дт/Кт with account code, name, Ref_Key, subconto, amounts and totals. It also states scope ('Подходит для любого вида документа (Document_*)' and read-only), which separates it from siblings like get_account_card or get_account_turnover that are keyed by account rather than document.

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

Usage Guidelines4/5

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

It gives the concrete prerequisite chain for the required arguments: documentEntity must come from list_entities (class=document) and documentRef from search_documents, and it notes applicability to any document type. It does not name an explicit alternative or state when NOT to use it (e.g. per-account analysis should use get_account_card), so it's a clear context but not a full routing rule.

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

read.accounting.get_settlement_settingsПрочитать точную настройку счетов расчётовA
Read-only

Читает точную настройку независимого регистра. scope=contract требует договор; counterparty/group означает контрагента или группу в том же поле Контрагент_Key без договора. Организация и вид расчётов обязательны. Для counterparty/group пустой GUID организации означает все организации, субъект остаётся точным. Унаследованные настройки не подставляются. Отсутствующая или несовместимая схема блокирует операцию. Старое имя get_contract_settlement_settings поддерживает только договор.

NameRequiredDescriptionDefault
scopeYes
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNo
settlementKindYes
counterpartyRefYes
organizationRefYes

Output Schema

NameRequiredDescription
keyYes
foundYes
scopeYes
recordNo
databaseYes
entitySetYes
recordPathYes
contractKindNo

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the readOnly/openWorld annotations, it discloses two important behavioral traits: inherited settings are never substituted (so the result is exact, not inherited), and a missing or incompatible schema blocks the operation entirely. It doesn't discuss permissions or side conditions such as default database resolution, which the schema handles separately.

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

Conciseness4/5

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

Seven short sentences, front-loaded with purpose and scope rules, with the legacy-name note sensibly placed last. Some sentences are dense with domain jargon (Контрагент_Key, 'независимый регистр') that an agent without 1C context must infer, but nothing is redundant.

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

Completeness4/5

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

For a six-parameter read tool with an output schema, the description covers the non-obvious selection rules, the conditional requirement that the schema cannot express, and the failure mode. The only gaps are the meaning of the database parameter and the settlement-kind enum values, both documented in the schema itself.

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

Parameters4/5

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

With schema description coverage at 17%, the description carries most of the burden and does so for the critical logic: the conditional contract requirement not expressed by the schema's required list, the shared counterparty field for counterparty/group scopes, and the empty-GUID organization meaning 'all organizations' while the subject stays exact. Settlement-kind enum values and the database parameter are left to the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Читает точную настройку независимого регистра') and immediately scopes it by 'scope' values, which lets an agent distinguish it from write.accounting.set_settlement_settings and from the legacy read.accounting.get_contract_settlement_settings, whose narrower behavior is explicitly stated.

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

Usage Guidelines4/5

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

It gives per-scope eligibility rules: contract requires a договор, while counterparty/group use the same Контрагент_Key field without a contract. It also flags the legacy alternative as contract-only. It stops short of an explicit 'use X instead when Y' routing instruction, which keeps it from a 5.

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

read.analytics.get_cash_balanceДеньги на счетах и в кассеA
Read-only

Сколько денег сейчас: остатки счетов 50 (касса), 51 (расчётные счета), 52 (валютные), 55 (спецсчета, депозиты), 57 (переводы в пути, эквайринг) из регистра Хозрасчетный — по каждому банковскому счёту и кассе, итоги available (50+51+52), special (55), inTransit (57). Для валютных счетов — сумма в валюте. asOf=YYYY-MM-DD — остатки на конец даты; без него — текущие.

NameRequiredDescriptionDefault
asOfNoДата остатков — на конец этой даты (без параметра — текущие) (YYYY-MM-DD)
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
asOfNo
scanYes
specialYes
accountsYes
balancesYes
databaseYes
availableYes
inTransitYes
organizationNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description is not burdened with the safety profile. It goes beyond them by disclosing the aggregation buckets returned (available = 50+51+52, special = 55, inTransit = 57) and the handling of currency accounts (amount in currency), which are non-obvious behaviors an agent would otherwise guess at.

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

Conciseness4/5

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

The definition is front-loaded with the resource and its account breakdown, then the return buckets, then the asOf rule. It is dense but every clause carries information; the only minor redundancy is the asOf explanation, which duplicates the schema property description.

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

Completeness4/5

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

With an output schema present and full parameter coverage, the description only needs to frame what is counted and how totals are grouped, which it does. The main residual gap is the lack of explicit guidance relative to sibling analytics tools, but nothing required for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates the asOf end-of-day semantics (matching the schema wording) but says nothing about the database or organization parameters, so it adds no meaning beyond the structured data.

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

Purpose5/5

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

The description names the exact resource (cash and bank account balances), the source register (Хозрасчетный), and enumerates the specific accounts read (50, 51, 52, 55, 57). An agent can distinguish this snapshot-balance tool from flow-oriented siblings like get_cashflow or get_account_turnover without opening the schema.

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

Usage Guidelines3/5

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

The opening phrase 'Сколько денег сейчас' implies a point-in-time snapshot use case, and the asOf sentence clarifies the historical variant. However, there is no explicit statement of when to prefer this over get_cashflow or get_account_turnover, and no exclusions or prerequisites are given, so routing must be inferred.

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

read.analytics.get_cashflowДвижение денежных средствB
Read-only

Приход и расход денег за период по проведённым банковским и кассовым документам. Возвращает приток, отток и сальдо. Можно ограничить организацией. Период — даты YYYY-MM-DD.

NameRequiredDescriptionDefault
toYesДата конца периода (YYYY-MM-DD)
fromYesДата начала периода (YYYY-MM-DD)
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
netYes
scanYes
inflowYes
periodYes
outflowYes
databaseYes
byDocumentYes
organizationNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real value by specifying that only posted documents ('по проведённым') are counted and by listing the three returned aggregates; however it says nothing about currency, per-account breakdown or how unposted drafts are handled.

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

Conciseness4/5

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

Four short sentences, front-loaded with what is computed before the filter and date hints. The date-format sentence duplicates the schema and is the only clearly dispensable line.

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

Completeness4/5

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

Given an output schema exists and all four parameters are fully described in the schema, the description need not explain return values in detail. It covers the posted-documents basis and the optional org filter; minor gaps remain around multi-currency and whether results are per-account or consolidated.

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

Parameters3/5

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

Schema description coverage is 100%, so 'from', 'to', 'database' and 'organization' are already documented, including the YYYY-MM-DD format. The description's 'Можно ограничить организацией' and 'Период — даты YYYY-MM-DD' merely restate the schema, earning the baseline 3 rather than more.

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

Purpose4/5

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

The description states a specific resource and verb-equivalent: cash inflow and outflow over a period, computed from posted bank and cash documents, returning inflow, outflow and balance. This clearly differs from get_cash_balance (a point-in-time balance) even though no sibling is named explicitly, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to choose this tool over get_cash_balance, get_payments_breakdown or get_account_turnover, nor any stated prerequisites or exclusions. Only the org filter is mentioned, which is a parameter hint rather than usage guidance.

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

read.analytics.get_creditorsКредиторская задолженностьA
Read-only

Кому и сколько должна компания: сальдо счёта 60 (расчёты с поставщиками) из регистра бухгалтерии Хозрасчетный по контрагентам. Кредитовое сальдо = наш долг, дебетовое = наши авансы поставщику (вычитаются). Возвращает только долг > 0. asOf=YYYY-MM-DD — на конец даты. aging=true — по срокам: что уже пора платить (просрочено), что в срок, где срок не задан, с документами поступления и датой оплаты по договору; overdueOnly=true — только просроченные. olderThanYear — долг старше года: часто незакрытые взаиморасчёты, а не реальный долг. Расчёты по счёту 76 (аренда, связь и прочие) сюда не входят — для них ОСВ по счёту 76.

NameRequiredDescriptionDefault
asOfNoДата сальдо — на конец этой даты (без параметра — текущее) (YYYY-MM-DD)
agingNoРазбивка по срокам: просрочено / в срок / срок не задан, просрочка по дням (1-30, 31-60, 61-90, 90+), возраст долга от даты документа (byAge: 0-30 … 90+) и документы расчётов с датой оплаты по договору
limitNoСколько контрагентов вернуть
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
overdueOnlyNoТолько контрагенты с просрочкой, по убыванию просрочки (включает aging)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
defaultTermDaysNoСрок оплаты в днях для договоров, где он не задан. Только если пользователь его назвал — не угадывать

Output Schema

NameRequiredDescription
asOfNo
scanYes
countYes
accountsYes
databaseYes
creditorsYes
organizationNo
totalPayableYes

TDQS

A4.5/5.0
Behavior4/5

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

Beyond readOnlyHint/openWorldHint, it discloses the sign convention that drives the result: credit balance is our debt, debit balance is our prepayment and is netted out, and only positive debt is returned. It does not cover performance characteristics or how large result sets behave, but the domain semantics are unusually well explained.

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

Conciseness4/5

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

Front-loaded with the core definition, then parameter guidance in descending importance. The semicolon-chained clauses make it dense and slightly run-on, but nearly every sentence carries distinct information rather than restating the title.

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

Completeness4/5

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

For a seven-parameter read tool with an output schema, the description covers the accounting semantics, filtering behavior, and scope exclusions that structured fields cannot express. The only gap is the phantom olderThanYear reference, which is not backed by the schema and slightly undermines trust in the parameter list.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, and the description adds real meaning: asOf is defined as the end-of-day balance, aging is spelled out as maturity buckets plus payment dates, and overdueOnly is stated to imply aging. It loses a point for describing olderThanYear, which does not exist in the input schema and could mislead an agent into passing an unsupported argument.

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

Purpose5/5

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

States a precise verb-and-resource: the balance of account 60 (supplier settlements) from the Хозрасчетный accounting register, broken down by counterparty. It also names the boundary case explicitly (account 76 for rent/telecom is not included), which lets an agent separate it from read.accounting.get_account_turnover and the receivables sibling read.analytics.get_debtors.

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

Usage Guidelines5/5

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

Gives concrete when-to-use routing for each mode: aging=true for maturity buckets and payment dates, overdueOnly=true for overdue only, and an explicit when-not (account 76 items belong in ОСВ по счёту 76). It even warns that olderThanYear debt is often unsettled netting rather than real liability, which is exactly the interpretive guidance an agent needs.

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

read.analytics.get_deal_historyДвижения по сделке/договоруA
Read-only

Хронология всех проведённых банковских и кассовых движений по конкретной сделке либо договору: приход, расход, итоги и сальдо. Сделку можно задать кодом из назначения платежа (dealKey, напр. «CB12812240037987» — банковский идентификатор депозита/займа/контракта в назначении) или ссылкой на договор (contractRef, Ref_Key из find_counterparty + договор). Обязателен ровно один из них. Период — опционально (без него — всё время).

NameRequiredDescriptionDefault
toNoДата конца (YYYY-MM-DD)
fromNoДата начала (YYYY-MM-DD)
limitNoСколько событий вернуть
dealKeyNoКод сделки/контракта/документа в назначении платежа (напр. «CB12812240037987»). Серверный фильтр substringof по НазначениеПлатежа.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора (для документов с ДоговорКонтрагента_Key)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
netYes
noteNo
scanYes
itemsYes
eventsYes
inflowYes
periodNo
filtersYes
outflowYes
databaseYes
organizationNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuine behavioral detail beyond that: results are chronological, they include aggregated totals and a closing balance, and dealKey is matched as a server-side substringof over the payment-purpose text (implying possible partial/false-positive matches). It does not mention result ordering guarantees, truncation at limit, or how the default database is resolved.

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

Conciseness4/5

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

Roughly four sentences, front-loaded with what the tool returns before the parameter constraints. Almost every clause earns its place (the dealKey example, the mutual-exclusivity rule, the optional period default). Minor density issue: the dealKey explanation is packed into a parenthetical that takes a second read.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and the description still summarizes them. The cross-field 'exactly one of' constraint, the optional period default, the default database, and the organization filter scoping are all covered. The only gap is behavior at the limit boundary (default 200, max 1000, truncation), which the schema documents but the description does not acknowledge.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline would be 3. The description still adds meaning: it explains what dealKey actually is (a bank identifier appearing in the payment purpose, with a concrete example) and that contractRef is the Ref_Key of a contract obtained via find_counterparty. That is interpretive context beyond the schema's one-line parameter notes.

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

Purpose4/5

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

The description names a specific verb+resource: the chronological list of bank and cash movements for one deal or contract, including inflows, outflows, totals and balance. That is far more than a restatement of the name. What it lacks is an explicit contrast with closely related analytics siblings (get_cashflow, get_payments_breakdown, get_document_postings), so an agent still has to infer the boundary.

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

Usage Guidelines4/5

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

It states a hard selection rule that the schema cannot express: exactly one of dealKey or contractRef must be supplied, and the period is optional (all time by default). It also hints that contractRef comes from find_counterparty plus a contract, which routes the agent to a prerequisite tool. There is no explicit when-to-use/when-not-to-use statement against sibling analytics tools, which keeps it from a 5.

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

read.analytics.get_debtorsДебиторская задолженностьA
Read-only

Кто и сколько должен компании: сальдо счёта 62 (расчёты с покупателями) из регистра бухгалтерии Хозрасчетный, сгруппированное по контрагентам. Дебетовое сальдо = долг клиента, кредитовое = полученные авансы (вычитается). Можно ограничить организацией. По умолчанию берётся текущее сальдо; параметром asOf=YYYY-MM-DD можно получить дебиторку на конец указанной даты (для аудита/исторических отчётов). Возвращает только долг > 0. aging=true — по срокам: просрочено / в срок / срок не задан, просрочка по дням, возраст долга от даты документа (byAge — работает и без срока в договоре) и документы расчётов; срок оплаты = дата документа + дни из договора (флаг «Установлен срок оплаты»). overdueOnly=true — «кто просрочил оплату», по убыванию просрочки (без сроков в договорах — долги старше 60 дней, fallback). olderThanYear — долг старше года: часто незакрытые взаиморасчёты, а не реальный долг.

NameRequiredDescriptionDefault
asOfNoДата сальдо — на конец этой даты (без параметра — текущее) (YYYY-MM-DD)
agingNoРазбивка по срокам: просрочено / в срок / срок не задан, просрочка по дням (1-30, 31-60, 61-90, 90+), возраст долга от даты документа (byAge: 0-30 … 90+) и документы расчётов с датой оплаты по договору
limitNoСколько контрагентов вернуть
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
overdueOnlyNoТолько контрагенты с просрочкой, по убыванию просрочки (включает aging)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
defaultTermDaysNoСрок оплаты в днях для договоров, где он не задан. Только если пользователь его назвал — не угадывать

Output Schema

NameRequiredDescription
asOfNo
scanYes
countYes
debtorsYes
accountsYes
databaseYes
organizationNo
totalReceivableYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds substantive behavior beyond that: results are filtered to debt > 0, credits are netted out, overdueOnly sorts descending by overdue days and falls back to 60+ day debt when no contract terms exist, and olderThanYear is explicitly flagged as often unclosed settlements rather than real debt. That fallback and caveat context is exactly what an agent needs and is nowhere in the structured fields.

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

Conciseness4/5

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

The purpose and sign convention are front-loaded, then parameter behavior follows in a logical order, with no filler sentences. It is dense and somewhat run-on as a single block, but every clause carries information rather than restating the name.

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

Completeness4/5

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

With seven optional parameters, an output schema, and only two annotations, the description supplies the missing behavioral context — filtering, sorting, fallbacks, and data-source caveats — so an agent can call it correctly. The remaining gap is the mismatched olderThanYear reference and the absence of any pointer to the sibling payables/reconciliation tools.

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

Parameters3/5

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

Schema coverage is 100%, so all seven parameters are already documented; the description reinforces the meaning of aging (byAge buckets, contract payment date = document date + contract days) and the defaultTermDays 'don't guess' rule. However it also describes an `olderThanYear` parameter that does not exist in the input schema, which could lead an agent to attempt an invalid argument — a real semantic defect against an otherwise strong schema.

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

Purpose5/5

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

The description names a specific verb and resource — 'кто и сколько должен компании' — and pins the exact data source: сальдо счёта 62 из регистра бухгалтерии Хозрасчетный, сгруппированное по контрагентам. It also states the sign convention (debit = client debt, credit = advances, subtracted), so an agent knows precisely which figure it gets and can distinguish it from the payables sibling get_creditors.

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

Usage Guidelines4/5

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

Usage is clear at the parameter level: asOf for audit/historical reporting, overdueOnly for 'who is late paying', olderThanYear for long-stale balances, aging for term breakdowns. What is missing is tool-level routing — it never says when to prefer this over get_creditors, get_reconciliation, or get_unpaid_invoices, leaving that inference to the agent.

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

read.analytics.get_inventoryОстатки товаровA
Read-only

Остатки товаров/материалов на складах: сальдо счетов 41/10/43 регистра Хозрасчетный, сгруппированное по номенклатуре. Возвращает количество и сумму остатка. Можно ограничить организацией. По умолчанию — текущие остатки; параметром asOf=YYYY-MM-DD можно получить остатки на конец указанной даты (для инвентаризации/аудита). (В БП 3.0 учёт ведётся на счетах бухучёта, а не в отдельном регистре остатков.)

NameRequiredDescriptionDefault
asOfNoДата остатков — на конец этой даты (без параметра — текущие) (YYYY-MM-DD)
limitNoСколько позиций вернуть
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
asOfNo
scanYes
countYes
itemsYes
accountsYes
databaseYes
totalAmountYes
organizationNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's job is to add domain context — and it does: which accounting accounts are the source, that results are aggregated by nomenclature, that quantity and amount are returned, and a useful 1C-specific caveat that BP 3.0 keeps stock on accounting accounts rather than a separate balance register. It does not discuss pagination behavior of limit or result size trade-offs, which keeps it below 5.

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

Conciseness4/5

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

The first sentence front-loads the resource and data source; return values, then the optional filters, then the asOf mode follow in a logical order. The trailing parenthetical about BP 3.0 accounting is useful context but could arguably be trimmed; overall there is little waste.

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

Completeness4/5

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

With an output schema present, the description needn't explain return shapes, and it still summarizes them (quantity and amount). It covers data source, defaults, one optional filter, and the point-in-time mode, which is sufficient for a zero-required-parameter read tool; only result-size/pagination expectations are left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the schema, including asOf's date format, the organization filter options, database selection and the limit bounds. The description adds a use-case rationale for asOf (inventory/audit) and restates the organization filter, but supplies no syntax or semantics beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description names the concrete resource (goods/materials balances in warehouses), the data source (balances of accounts 41/10/43 in the Хозрасчетный register) and the grouping (by nomenclature), which lets an agent separate it from siblings like get_account_turnover or get_cash_balance. It stops short of explicitly naming the sibling tools it replaces, so it lands at a clear-but-not-differentiating 4.

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

Usage Guidelines4/5

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

It states the default behavior (current balances) and the condition that selects the alternative mode: asOf=YYYY-MM-DD for inventory counts or audits. It also notes the filter is optional (organization narrows results). No explicit 'use X instead' routing and no prerequisites are given, but the when-to-use context is clear.

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

read.analytics.get_payments_breakdownРазбивка платежей за периодA
Read-only

Суммирует проведённые банковские и кассовые документы за период с разбивкой по выбранному признаку (вид операции / месяц / контрагент / статья ДДС / итог). Фильтры: направление (приход/расход), контрагент (Ref_Key), категория контрагента (ИП/ЮрЛицо/ФизЛицо/Нерезидент/Госорган), статья ДДС (по коду/имени/Ref), подстрока в назначении платежа (напр. «аренда»), вид операции. Отвечает на вопросы вроде «сколько процентов получили за год от такого-то банка», «сколько заплатили ИП за год», «куда уходили деньги по статьям ДДС», «приход по месяцам». Период — даты YYYY-MM-DD. Контрагент в банковских документах хранится полиморфно — фильтр применяется на стороне коннектора; статья ДДС / назначение / период / организация — на сервере 1С.

NameRequiredDescriptionDefault
toYesДата конца периода (YYYY-MM-DD)
fromYesДата начала периода (YYYY-MM-DD)
groupByNoРазбивка: operation (вид операции), month (месяц), counterparty (контрагент), cashflowItem (статья ДДС), total (без разбивки)operation
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
directionNoin — приход, out — расход, both — оба (по умолчанию)both
cashflowItemNoСтатья ДДС: код (напр. «00-000006»), часть наименования (напр. «Аренда») или Ref_Key
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
operationTypeNoТочный вид операции (ВидОперации), напр. «ПрочееПоступление», «Депозит»
counterpartyRefNoRef_Key контрагента (из find_counterparty)
purposeContainsNoПодстрока в назначении платежа (напр. «процент», «депозит», «аренда»)
counterpartyKindNoКатегория контрагента: ИП, ЮрЛицо, ФизЛицо (без ИП), Нерезидент, Госорган. Берётся из справочника по полям ЮридическоеФизическоеЛицо / ИндивидуальныйПредприниматель и т.п.

Output Schema

NameRequiredDescription
netYes
scanYes
groupsYes
inflowYes
periodYes
filtersYes
groupByYes
outflowYes
databaseYes
directionYes
documentsYes
organizationNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnlyHint and openWorldHint, but the description adds genuinely useful non-obvious behavior: counterparty is stored polymorphically in bank documents and that filter is applied in the connector, while cashflow item, purpose, period and organization are filtered server-side in 1C. That explains result differences an agent could otherwise misread. It does not discuss volume limits, performance, or how totals are computed, so it stops short of 5.

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

Conciseness4/5

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

The first sentence front-loads the core operation and grouping, followed by a compact filter inventory and then example questions. It is dense but organized, and the final sentence on connector-vs-server filtering is high-value. The example question list is slightly redundant with the filter enumeration and could be trimmed.

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

Completeness5/5

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

For an 11-parameter analytical read with an output schema present, the description covers the grouping dimension, the period format, all filter families, and where each filter executes. Return shape is handled by the output schema, so nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every one of the 11 parameters, including accepted formats (code / name fragment / Ref_Key) and enum meanings. The description's filter list largely restates that, adding only light framing such as the period being YYYY-MM-DD and the grouping options, which the schema also carries. Baseline 3 is appropriate.

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

Purpose4/5

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

The description opens with a specific verb and resource: it sums posted bank and cash documents over a period, broken down by a chosen attribute. It enumerates the grouping dimensions (operation/month/counterparty/cashflowItem/total), so an agent knows exactly what the tool produces. It does not name the closest sibling (read.analytics.get_cashflow) or state how it differs, which keeps it from a 5.

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

Usage Guidelines3/5

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

Usage is conveyed indirectly through example questions ('сколько процентов получили за год от такого-то банка', 'приход по месяцам'), which tell the agent the kind of question this answers. There is no explicit when-not guidance and no named alternative such as get_cashflow or get_purchases_breakdown for overlapping money-movement questions, so selection between siblings is left to inference.

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

read.analytics.get_purchases_breakdownРазбивка закупок за периодA
Read-only

Суммирует проведённые поступления товаров/услуг (закупки) за период с разбивкой по поставщику / месяцу / договору / итогу. Можно фильтровать конкретным поставщиком, категорией контрагента или договором. Отвечает на вопросы вроде «топ поставщиков за год», «закупки по месяцам», «сколько закупили у ИП». Период — даты YYYY-MM-DD.

NameRequiredDescriptionDefault
toYesДата конца периода (YYYY-MM-DD)
fromYesДата начала периода (YYYY-MM-DD)
limitNoСколько групп вернуть
groupByNoРазбивка: counterparty (контрагент), month (месяц), contract (договор), total (без разбивки)counterparty
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора (точечный фильтр)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
counterpartyRefNoRef_Key контрагента (точечный фильтр)
counterpartyKindNoКатегория контрагента: ИП, ЮрЛицо, ФизЛицо (без ИП), Нерезидент, Госорган

Output Schema

NameRequiredDescription
scanYes
totalYes
groupsYes
periodYes
filtersYes
groupByYes
databaseYes
documentsYes
entitySetYes
organizationNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds one genuinely useful behavioral fact, that only 'проведённые' (posted) receipts are counted, but says nothing about ordering of 'top' results, pagination beyond limit, or how totals treat VAT.

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

Conciseness4/5

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

The purpose and breakdown dimensions are front-loaded, followed by filters and example questions. The trailing 'Период — даты YYYY-MM-DD' duplicates the schema pattern and could be dropped, but overall it is tight.

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

Completeness4/5

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

With an output schema, full parameter coverage, and annotations present, the description covers what the tool aggregates, how it can be grouped and filtered, and typical questions. It leaves the relationship between groupBy and limit (limit = number of groups) and result ordering implicit, which is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter including date patterns, enum values, and defaults. The description only restates the date format and the available filter dimensions, adding no meaning beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource: it aggregates posted receipts (purchases) over a period with a breakdown by supplier, month, contract, or total. The word 'закупки'/'поступления' clearly separates it from the sales-analytics sibling tools, though no sibling is named explicitly.

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

Usage Guidelines4/5

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

The description gives concrete example questions ('топ поставщиков за год', 'закупки по месяцам', 'сколько закупили у ИП') and lists the filters that narrow the result. It never states when NOT to use it or which sibling (e.g. get_sales_breakdown, get_payments_breakdown) to pick for a different but similar question.

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

read.analytics.get_salesПродажи за периодA
Read-only

Сумма выручки по проведённым документам реализации за период (по полю СуммаДокумента). Можно ограничить организацией. Период задаётся датами YYYY-MM-DD.

NameRequiredDescriptionDefault
toYesДата конца периода (YYYY-MM-DD)
fromYesДата начала периода (YYYY-MM-DD)
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
scanYes
totalYes
periodYes
databaseYes
byDocumentYes
organizationNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: only POSTED (проведённым) sales documents are counted, and the sum is taken on a specific field (СуммаДокумента), which defines exactly what the aggregate includes and excludes. It does not state currency or how period boundaries are treated (inclusive/exclusive), which would be the remaining useful detail.

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

Conciseness4/5

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

Three short sentences with the metric definition front-loaded, followed by the optional filter and the date format constraint. Each sentence serves a purpose, though the YYYY-MM-DD restatement partially duplicates the schema pattern.

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

Completeness4/5

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

For a read-only aggregate with an output schema, the description covers what is summed, over which documents, over which period, and with which optional filter — enough to call it correctly. Minor gaps remain around currency and boundary inclusivity, but nothing blocking given the rich schema.

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

Parameters3/5

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

Schema description coverage is 100%, with from/to, database and organization all documented in the schema, including the date pattern. The description reinforces the YYYY-MM-DD requirement and the fact that omitting organization means all organizations, but adds little beyond the schema. Baseline 3 is appropriate when the schema carries the semantics.

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

Purpose4/5

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

The description states a concrete metric and scope: total revenue from posted sales documents for a period, computed on the СуммаДокумента field, optionally narrowed by organization. That is a specific verb-plus-resource statement an agent can act on. It does not, however, distinguish itself from the sibling read.analytics.get_sales_breakdown, so an agent cannot tell which sales tool to pick from the description alone.

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

Usage Guidelines3/5

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

Usage is implied by the phrasing (aggregate revenue over a period), and the optional organization filter is flaggable from the text. There is no explicit when-to-use or when-not guidance, and no mention of the sibling get_sales_breakdown for per-dimension breakdowns, so the agent must infer the boundary.

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

read.analytics.get_sales_breakdownРазбивка продаж за периодA
Read-only

Суммирует проведённые реализации (СуммаДокумента) за период с разбивкой по контрагенту / месяцу / договору / итогу. Можно фильтровать конкретным контрагентом, категорией контрагента (ИП/ЮрЛицо/ФизЛицо/Нерезидент/Госорган) или договором. Отвечает на вопросы вроде «топ покупателей за год», «выручка по месяцам», «сколько продали ИП», «продажи по конкретному договору». Период — даты YYYY-MM-DD.

NameRequiredDescriptionDefault
toYesДата конца периода (YYYY-MM-DD)
fromYesДата начала периода (YYYY-MM-DD)
limitNoСколько групп вернуть
groupByNoРазбивка: counterparty (контрагент), month (месяц), contract (договор), total (без разбивки)counterparty
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора (точечный фильтр)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
counterpartyRefNoRef_Key контрагента (точечный фильтр)
counterpartyKindNoКатегория контрагента: ИП, ЮрЛицо, ФизЛицо (без ИП), Нерезидент, Госорган

Output Schema

NameRequiredDescription
scanYes
totalYes
groupsYes
periodYes
filtersYes
groupByYes
databaseYes
documentsYes
entitySetYes
organizationNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds the non-obvious constraint that only *posted* realizations are summed, meaning drafts are excluded from totals, which materially affects interpretation of results. It does not discuss grouping/null-counterparty handling or the limit's truncation effect, leaving some behavioral gaps.

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

Conciseness4/5

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

Front-loaded with the core operation, then filters, then example questions, then the date format — a logical order with little waste. The date-format sentence ('Период — даты YYYY-MM-DD') duplicates the schema pattern and descriptions, so one clause could be dropped.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description covers the aggregation semantics, filter surface, and date format for a 9-parameter tool. The main omission is how limit interacts with grouped results and whether totals are truncated when groups exceed the limit.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented, and the description largely restates groupBy modes and counterpartyKind values that the schema enumerates. It adds no meaning for limit, organization, database, or the Ref_Key filters beyond what the schema says, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource ('Суммирует проведённые реализации (СуммаДокумента) за период') plus the four possible aggregation axes (counterparty/month/contract/total), which lets an agent separate it from the flat sibling get_sales. It never names a sibling tool explicitly, so differentiation is inferential rather than stated.

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

Usage Guidelines4/5

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

The four example questions ('топ покупателей за год', 'выручка по месяцам', 'сколько продали ИП', 'продажи по конкретному договору') map directly to groupBy/filter combinations and give strong when-to-use context. There is no explicit when-not guidance and no named alternative (e.g. get_sales for raw rows), so it stops short of a 5.

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

read.analytics.get_taxes_paidУплаченные налоги и взносы за периодA
Read-only

Сумма уплаченных налогов/страховых взносов за период: исходящие банковские списания с ВидОперации=«ПеречислениеНалога» (это надёжный маркер уплаты налога в БП 3.0; покрывает ЕНП, НДФЛ, страховые взносы, налог УСН/ПСН, налог на прибыль и т.п.). По умолчанию — итог; разбивка по статье ДДС / месяцу / получателю (обычно ФНС/Казначейство) / итог. Параметр cashflowItem уточняет конкретный вид налога (напр. «УСН», «Страховые», «НДФЛ», «ЕНП»). Отвечает на вопросы вроде «сколько налогов мы заплатили в прошлом году», «сколько ушло страховых взносов в квартал», «помесячная нагрузка по налогам». Период — даты YYYY-MM-DD.

NameRequiredDescriptionDefault
toYesДата конца периода (YYYY-MM-DD)
fromYesДата начала периода (YYYY-MM-DD)
groupByNoРазбивка: cashflowItem (по налогу) / month / counterparty / totalcashflowItem
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
cashflowItemNoУточнить статью ДДС (напр. «УСН», «Страховые», «НДФЛ», «ЕНП», код «00-000010»)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
scanYes
totalYes
groupsYes
periodYes
filtersYes
groupByYes
databaseYes
documentsYes
organizationNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful domain behavior beyond that: it discloses the exact detection criterion (bank debits with a specific ВидОперации) and thereby its inherent limitation — only bank-executed tax payments are counted, not accruals. It does not cover empty-result behavior or whether untranslated/unmatched taxes are excluded, keeping it below a 5.

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

Conciseness4/5

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

The definition is front-loaded: the core measurement rule and its rationale come first, followed by grouping, parameter hints, and example questions. Some parenthetical asides (the long enumeration of tax types and the «в БП 3.0» justification) are dense but each earns its place by justifying the marker's reliability.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description still supplies period format, database defaulting, organization filter scope, and grouping semantics. The main gaps are the groupBy default mismatch and no mention of currency or what an empty/non-matching period yields — small but real for a financial aggregate.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does add value for cashflowItem by giving concrete tax-type examples («УСН», «Страховые», «НДФЛ», «ЕНП») and matches the groupBy breakdown options. However, it states the default output is «итог», while the schema declares groupBy default = "cashflowItem" — this discrepancy could cause the agent to mis-predict the default response shape.

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

Purpose5/5

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

The description names a specific verb+resource (sum of paid taxes/insurance contributions for a period) and pins down the exact data source — outgoing bank debits with ВидОперации=«ПеречислениеНалога». It enumerates the covered tax types (ЕНП, НДФЛ, страховые взносы, УСН/ПСН, налог на прибыль), so an agent can distinguish it from generic siblings like get_cashflow or get_payments_breakdown without opening the schema.

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

Usage Guidelines4/5

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

Usage context is clear and reinforced with concrete example questions («сколько налогов мы заплатили в прошлом году», «помесячная нагрузка»), plus the default mode (total) vs. breakdown mode. What is missing is an explicit negative boundary — it never names an alternative tool for total outgoing payments or states when NOT to use this one, so the agent must infer the routing.

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

read.analytics.get_unpaid_invoicesНеоплаченные счета покупателямA
Read-only

Счета на оплату покупателям за период и их оплата: сумма счёта, оплачено (по регистру «Оплата счетов» — платежи со ссылкой на счёт), остаток, отгружено по счёту (реализации со ссылкой на счёт), статус unpaid / partial / paid / overpaid, сколько дней счёту. status=open (по умолчанию) — неоплаченные и частично оплаченные, с текущим сальдо покупателя по 62 (customerBalance) для сверки; all — все. Счета старше 90 дней видны только с явным from. Период — по дате счёта; без from — последние 90 дней.

NameRequiredDescriptionDefault
toNoСчета по дату (без параметра — сегодня) (YYYY-MM-DD)
fromNoСчета с даты (без параметра — 90 дней назад) (YYYY-MM-DD)
limitNoСколько счетов вернуть
statusNoopen | allopen
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
scanYes
countYes
periodYes
statusYes
databaseYes
invoicesYes
totalPaidYes
totalAmountYes
totalUnpaidYes
organizationNo

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, it discloses a non-obvious behavioral rule: invoices older than 90 days appear only when from is passed explicitly. It also explains how payment and shipment linkage is computed and what customerBalance is for, which the agent could not infer from annotations or schema.

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

Conciseness4/5

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

It is dense but well ordered: what is returned, how status is derived, then status semantics, then period defaults and the 90-day caveat. The semicolon-chained clauses make it slightly heavy, but every sentence carries operational information.

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

Completeness5/5

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

For a read-only analytical tool with six optional parameters and an output schema, the description covers derivation logic, status vocabulary, defaults, and the age-visibility caveat. Nothing an agent needs to call it correctly or interpret the result is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: what open versus all actually select, that status is derived from payments against the invoice, and that from controls visibility of invoices older than 90 days rather than only filtering the range.

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

Purpose5/5

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

The description states a specific resource (customer invoices for a period) and the exact data returned: invoice amount, paid amount, remainder, shipped, status, and age in days. It also names the derivation sources (the «Оплата счетов» register, sales linked to the invoice), so an agent can distinguish it from aggregate siblings like get_debtors or get_sales without opening the schema.

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

Usage Guidelines4/5

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

It gives explicit conditions: status=open (default) returns unpaid and partially paid invoices with the customer balance on account 62 for reconciliation, while all returns everything; the period is by invoice date with a default of the last 90 days. It does not name an alternative tool to use instead for aggregate debt figures, so routing to siblings is left implicit.

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

read.audit.get_document_historyХронология документа (аудит)A
Read-only

Что можно доказуемо сказать о времени документа по данным стандартного OData. Возвращает раздельно: documentDate (Document.Date — учётная дата, не время действия) и refCreatedAt (метка генерации Ref_Key, выведенная из UUIDv1; confidence=derived — НЕ проверенное время создания/выполнения/проведения). Фактическое время выполнения и последнего изменения через стандартный OData недоступны и не возвращаются. Также: ответственный (реквизит документа, не автор), DataVersion как есть (не интерпретируется), наличие движений в регистре Хозрасчетный (только факт наличия), evidence и limitations. Только чтение. documentEntity — Document_* из list_entities, documentRef — Ref_Key.

NameRequiredDescriptionDefault
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
documentRefYesRef_Key документа (GUID)
documentEntityYesИмя документа, напр. Document_РегламентнаяОперация

Output Schema

NameRequiredDescription
scanYes
databaseYes
documentYes
evidenceYes
timestampsYes
limitationsYes
responsibleNo
accountingMovementsYes

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint annotations, it discloses the most important behavioral traits: refCreatedAt is confidence=derived (UUIDv1-based, NOT verified creation/posting time), actual execution and modification times are unavailable, DataVersion is returned uninterpreted, and register movements are presence-only. This is exactly the caveat surface an agent needs to avoid over-claiming.

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

Conciseness4/5

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

The core constraint ('what can be provably said about time') is front-loaded, and every clause carries real caveat value. It is dense and clause-heavy with semicolons and parentheticals, which hurts scannability slightly, but nothing is truly redundant.

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

Completeness5/5

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

For a tool whose whole point is auditable honesty about data provenance, the description fully covers the returned fields, their confidence caveats, and the explicit limitations. An output schema exists so return values need not be explained, yet the description frames them usefully, leaving no gap an agent must bridge.

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

Parameters3/5

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

Schema description coverage is 100% and the description largely restates what the schema already documents (documentEntity = Document_*, documentRef = Ref_Key GUID). The only marginal addition is pointing to list_entities for the entity name, so baseline 3 is appropriate.

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

Purpose5/5

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

The description names a specific verb and resource: it returns what can be provably said about a document's timing (documentDate and derived refCreatedAt), and it is emphatic about what it will NOT return (actual execution/last-modification time). This is a concrete, well-differentiated purpose that an agent can distinguish from get_document or search_documents.

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

Usage Guidelines3/5

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

It gives useful context on obtaining the parameters (documentEntity from list_entities, documentRef as Ref_Key) and frames the scope as 'provably sayable via standard OData', which implies when the tool is appropriate. However, it never explicitly states when to choose this over sibling read tools like get_document, nor does it state any exclusion condition.

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

read.counterparty.find_counterpartyПоиск контрагентаA
Read-only

Ищет контрагентов по части названия или по ИНН; subjectKind=group ищет группы в том же справочнике, all — оба вида. По умолчанию только контрагенты. Возвращает Parent_Key как parentRef и DataVersion как dataVersion для безопасного изменения группы. Возвращает список совпадений с Ref_Key (используйте его в get_counterparty и истории взаиморасчётов), полным наименованием и ролями по видам договоров (roles: покупатель, поставщик, комитент…; contracts — число договоров) — помогает выбрать из однофамильцев. Пример: «найди контрагента Ромашка» или «контрагент с ИНН 7701234567».

NameRequiredDescriptionDefault
limitNoСколько вернуть
queryYesЧасть названия или ИНН контрагента
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
subjectKindNocounterparty

Output Schema

NameRequiredDescription
noteNo
rowsYes
countYes
truncatedYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true; the description adds real behavior on top: the default is counterparties only, validity of Parent_Key/DataVersion for safe group modification, and the roles/contracts fields that disambiguate namesakes. It does not mention result limits or pagination behavior, which are relevant for a search tool.

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

Conciseness5/5

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

A single front-loaded paragraph that leads with what is searched, then narrows to defaults, return fields, and examples. Every sentence carries actionable information, including the example queries that pin down the expected phrasing.

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

Completeness4/5

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

For a 4-parameter read search with an output schema and safety annotations, this covers the searchable fields, defaults, and downstream chaining well. The gaps are minor: no guidance on behavior with zero matches or how limit interacts with result ordering.

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

Parameters4/5

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

Schema coverage is 75% and the description explicitly supplies the meaning of subjectKind values (group = groups in the same catalog, all = both kinds, default = counterparties only), which is meaning beyond the bare enum. query is restated (partial name or INN) without adding syntax detail, and limit/database are left entirely to the schema.

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

Purpose5/5

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

States a specific verb (searches), resource (counterparties), and matching modes (partial name or INN), and immediately explains what subjectKind=group/all do. An agent can distinguish it from read.counterparty.get_counterparty and from write.counterparty.* siblings without any further context.

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

Usage Guidelines4/5

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

Gives concrete usage context — Ref_Key returned here is meant to be fed into get_counterparty and settlement-history tools, plus two worked example queries. It stops short of an explicit exclusion rule (e.g. "if you already have a Ref_Key, use get_counterparty directly"), so it is clear but not fully routing.

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

read.counterparty.get_counterpartyКарточка контрагентаA
Read-only

Возвращает полную карточку контрагента по его Ref_Key: реквизиты (ИНН/КПП), наименования, код. Ref_Key берётся из find_counterparty.

NameRequiredDescriptionDefault
refYesRef_Key контрагента (GUID)
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.

Output Schema

NameRequiredDescription
innNo
kppNo
refYes
codeNo
nameYes
fullNameNo
isFolderNo
parentRefNo
dataVersionNo
deletionMarkNo

TDQS

A4.2/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that a 'full' card is returned with identity fields, but says nothing about missing-record behavior, error modes, or the default-database fallback. With an output schema present, describing return contents is largely redundant, so the added behavioral value is modest.

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

Conciseness5/5

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

Two short sentences with zero filler; the core action and return content are front-loaded, and the dependency on find_counterparty follows as a compact second clause.

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

Completeness4/5

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

For a simple two-parameter read with a full output schema and readOnly annotations, the description covers purpose, return content, and key provenance adequately. Only the optional database parameter's default behavior is left entirely to the schema, which is acceptable.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine provenance the schema lacks: it tells the agent that the Ref_Key value must be sourced from find_counterparty rather than invented. It says nothing about the optional 'database' parameter, though the schema already documents that fully.

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

Purpose5/5

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

The description names a specific verb and resource ('Возвращает полную карточку контрагента по его Ref_Key') and enumerates the returned fields (ИНН/КПП, наименования, код). It also explicitly separates this tool from the sibling find_counterparty by stating that the key comes from there, so an agent can pick the right tool without opening either schema.

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

Usage Guidelines4/5

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

It gives a clear usage chain: obtain the Ref_Key via find_counterparty, then call this tool to get the full card. There is no explicit when-not or mention of the history/reconciliation siblings (get_customer_history, get_reconciliation) that also take a counterparty, so routing is implied rather than fully enumerated.

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

read.counterparty.get_customer_historyИстория по покупателюA
Read-only

Документы реализации и счета по контрагенту-покупателю за период. Показывает, что и на какие суммы продавали клиенту. Ref_Key — из find_counterparty.

NameRequiredDescriptionDefault
toNoДата конца периода (YYYY-MM-DD)
refYesRef_Key контрагента
fromNoДата начала периода (YYYY-MM-DD)
limitNoСколько документов вернуть
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
noteNo
rowsYes
countYes
periodYes
truncatedYes
counterpartyYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds that results are period-bounded and amount-oriented, but says nothing about ordering, whether invoices include both issued and received, or how the limit truncates results — meaningful gaps for a history feed.

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

Conciseness5/5

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

Three short sentences, no filler, with the resource scope front-loaded and the prerequisite pointer placed last where it is needed. Every sentence carries information the agent uses.

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

Completeness4/5

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

With an output schema present and full parameter coverage in the schema, the description does not need to explain return values. It is nearly complete for a read-only history query; only result ordering and the distinction from adjacent analytics/reconciliation tools are unaddressed.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns an extra point by documenting the provenance of the sole required parameter ('Ref_Key — из find_counterparty'), telling the agent how to obtain ref rather than leaving it to guess. Period semantics are also restated at the description level.

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

Purpose4/5

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

States a concrete verb+resource pair: sales documents (документы реализации) and invoices for a buyer-counterparty over a period, plus what the data shows (amounts sold). The 'покупателю' scoping separates it from the mirrored read.counterparty.get_supplier_history, though that sibling is never named explicitly.

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

Usage Guidelines3/5

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

Usage is only implied by the 'за период' framing and the note that Ref_Key comes from find_counterparty, which usefully documents the prerequisite lookup chain. There is no explicit when-to-use vs. read.counterparty.get_reconciliation, read.analytics.get_deal_history, or get_supplier_history, so the agent must infer which report it needs.

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

read.counterparty.get_reconciliationДанные для акта сверкиA
Read-only

Взаиморасчёты с контрагентом за период для акта сверки — по данным организации: сальдо на начало и конец «в пользу организации / контрагента», строки по документам (дата, документ, номер, договор, дебет, кредит; printNumber — номер как в печатной форме), обороты, разбивка по договорам, организация. Проверяются счета 60, 62 и 76 (без 76.АВ/76.ВА), в accounts — те, где есть движения или остатки; зачёт аванса внутри расчётов с тем же контрагентом в строки не попадает, как в акте сверки 1С. counterpartyRef — Ref_Key из find_counterparty, contractRef — только один договор. Сам документ «Акт сверки» печатается из 1С.

NameRequiredDescriptionDefault
toYesДата конца периода (YYYY-MM-DD)
fromYesДата начала периода (YYYY-MM-DD)
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора — сверка по одному договору
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
counterpartyRefYesRef_Key контрагента (из find_counterparty)

Output Schema

NameRequiredDescription
scanYes
countYes
linesYes
periodYes
closingYes
openingYes
databaseYes
byContractYes
consistentYes
counterpartyYes
organizationNo
debitTurnoverYes
creditTurnoverYes
counterpartyRefYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only and open-world hints, and the description adds genuinely non-obvious semantics: only accounts with movements or balances appear in accounts, advance offsetting within the same counterparty is excluded from lines to mirror the 1C act, and printNumber is the number as it appears in the printed form. It does not mention performance, volume limits, or empty-result behavior, but the interpretive context it supplies is substantial.

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

Conciseness4/5

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

The purpose and scope are front-loaded in the first clause, and the dense semicolon-separated structure packs a lot of useful detail without filler. The final sentence about the print form is short and sets a real expectation. It is long, but each clause carries information an agent would otherwise have to discover.

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

Completeness4/5

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

For a six-parameter read tool with a full output schema and read-only annotations, this is nearly complete: scope, account coverage, exclusion rules and counterpartyRef provenance are all present. The row-level return explanation is somewhat redundant given the output schema exists, but it is harmless and reinforces interpretation.

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

Parameters3/5

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

Schema description coverage is 100%, and the description largely repeats what the schema already documents (counterpartyRef sourced from find_counterparty, contractRef limited to a single contract, organization filter). The one marginal addition is the explicit 'only one contract' limitation on contractRef, which the schema already implies. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description opens with a precise verb+resource+scope: settlements with a counterparty for a period, for a reconciliation act. It goes further by naming the accounting scope (accounts 60, 62 and 76 excluding 76.АВ/76.ВА) and the exact output rows (opening/closing balances, document lines, turnover, contract breakdown), which clearly separates it from sibling reads like get_account_turnover or get_debtors.

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

Usage Guidelines4/5

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

It makes the intended use case clear (data for a reconciliation act) and routes the agent to find_counterparty for the counterpartyRef value, plus a constraint that contractRef accepts only one contract. It also sets an expectation boundary by stating the actual 'Акт сверки' print form is generated in 1C, so the agent won't expect this tool to produce it. It stops short of explicitly naming when to prefer an alternative tool.

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

read.counterparty.get_supplier_historyИстория по поставщикуA
Read-only

Документы поступления по контрагенту-поставщику за период. Показывает закупки у поставщика. Ref_Key — из find_counterparty.

NameRequiredDescriptionDefault
toNoДата конца периода (YYYY-MM-DD)
refYesRef_Key контрагента
fromNoДата начала периода (YYYY-MM-DD)
limitNoСколько документов вернуть
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
noteNo
rowsYes
countYes
periodYes
truncatedYes
counterpartyYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds that only receipt (purchase) documents are returned, which is useful behavioral context, but says nothing about ordering, truncation at the default limit of 100, or cross-base scope — all relevant for a query tool that can be capped.

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

Conciseness4/5

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

Three short sentences, front-loaded with the resource and period, then the practical hint about where to get the ref. No filler, though the middle sentence ('Показывает закупки у поставщика') largely repeats the first.

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

Completeness4/5

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

With an output schema present and all six parameters fully documented, the description only needs to convey purpose, scope and the ref dependency — which it does. It stops short of noting the default limit of 100 / max 500 or how this differs from the customer-history counterpart, which would make it airtight.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns an extra point by stating the provenance of the required 'ref' parameter ('Ref_Key — из find_counterparty'), which the schema only labels as 'Ref_Key контрагента'. The period semantics of from/to are restated only loosely.

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

Purpose4/5

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

The description names a specific resource and scope: 'Документы поступления по контрагенту-поставщику за период' — receipt documents for a supplier counterparty within a date range, plus the clarifying 'Показывает закупки у поставщика'. That is enough to separate it from the sibling read.counterparty.get_customer_history, though the alternative is not named explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the scope ('закупки у поставщика', 'за период'), and the prerequisite 'Ref_Key — из find_counterparty' gives the agent a starting point. However, there is no explicit when-to-use/when-not guidance and no mention of the sibling read.counterparty.get_customer_history or the analytics purchase tools as alternatives.

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

read.document.get_documentДокумент целикомA
Read-only

Возвращает документ по типу и Ref_Key со всеми полями, включая табличные части. Ref_Key берётся из search_documents или истории взаиморасчётов.

NameRequiredDescriptionDefault
refYesRef_Key документа (GUID)
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYesИмя документа, напр. Document_РеализацияТоваровУслуг

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already mark this as a read-only, open-world tool, so safety is covered. The description adds one useful behavioral fact: the result includes every field and tabular sections, which signals a potentially large payload. It says nothing about size, cost, or truncation behavior, so it adds some value but not rich context.

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

Conciseness5/5

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

Two short sentences with no filler. The core behavior comes first, and the Ref_Key provenance follows as supporting context.

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

Completeness4/5

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

For a read-only fetch with full schema coverage and an output schema, the description covers what the tool returns and how to get the required identifier. Nothing necessary is missing, although a note about payload size for documents with many tabular rows would have made it complete.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters are already documented, including the hint that database defaults when omitted. The description only reinforces that the lookup needs a document type and a Ref_Key, plus where the Ref_Key comes from, which is marginal value over the schema. The baseline 3 is right.

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

Purpose4/5

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

States a concrete verb and resource: returns a document by type and Ref_Key, with all fields including tabular sections. This is enough to distinguish it from read.document.search_documents, which it names as the source of the Ref_Key. It falls slightly short of a full 5 because it does not explicitly contrast with the other per-document readers such as read.accounting.get_document_postings.

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

Usage Guidelines4/5

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

Gives an implicit workflow by saying the Ref_Key comes from search_documents or payment history, which tells an agent that this is a fetch-by-id step after a search. It does not state when not to use it, for example instead of get_document_postings for accounting entries, so it is clear on context but stops short of explicit alternatives.

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

read.document.search_documentsПоиск документовA
Read-only

Ищет документы по периоду, номеру, контрагенту, организации, статусу проведения и сумме. Тип задаётся видом (kind: продажи, покупки, банк, касса…) или техническим именем entitySet из list_entities; без обоих — по всем основным видам документов сразу («все документы за 10 сентября», «документ №33»). number — номер как его называет человек: «33» находит 0000-000033, а также входящий номер документа контрагента (накладной поставщика). Нумерация в 1С каждый год своя — по одному номеру обычно несколько документов разных лет; уточняйте период. Редкие виды (зарплата, регламентные операции) — только через entitySet.

NameRequiredDescriptionDefault
toNoДата конца (YYYY-MM-DD)
fromNoДата начала (YYYY-MM-DD)
kindNoВид документа: sales — реализации и акты, customer_invoices — счета покупателям, purchases — поступления, supplier_invoices — счета поставщиков, bank — банк (поступления, списания, платёжки), cash — касса (ПКО, РКО), vat_invoices — счета-фактуры, warehouse — складские
limitNoСколько документов вернуть
numberNoНомер документа: «33», «№ 0000-000033», входящий «ГК-22537»
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetNoТехническое имя документа, напр. Document_РеализацияТоваровУслуг; не вместе с kind
minAmountNoМинимальная сумма документа
postedOnlyNoТолько проведённые документы
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
counterpartyRefNoRef_Key контрагента для фильтра

Output Schema

NameRequiredDescription
noteNo
rowsYes
countYes
truncatedYes
counterpartyFilterNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds real behavioral context beyond that. It discloses that number matching is fuzzy ("33" resolves to 0000-000033 and also to a counterparty's incoming invoice number) and that 1C numbering resets annually, so a single number may hit documents from several years — a non-obvious trait that changes how an agent should query. It does not mention result truncation or ordering, which is a minor remaining gap.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, followed by routing rules and then the numbering caveat, and each sentence contributes distinct information. It is dense but well ordered; the one weak spot is that the kind enumeration at the start partially restates the enum already in the schema.

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

Completeness4/5

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

For an 11-parameter, all-optional search tool with an output schema and read-only annotations, the description covers the essential decision points: type selection, the numbering pitfall, and the default scope. It omits pagination/limit behavior and what happens if kind and entitySet are both supplied, but these are secondary given full schema coverage and a defined output schema.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter is documented in the schema, so the baseline is 3. The description does add genuine meaning on top: the human-vs-technical number semantics, the kind/entitySet mutual exclusivity, and the note that entitySet is the only route for rare document types. That pushes toward the upper end of 3, but much of the parameter guidance duplicates what the schema already states.

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

Purpose5/5

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

The description opens with a specific verb and resource ("Ищет документы") and immediately enumerates the filterable dimensions: period, number, counterparty, organization, posting status, and amount. It distinguishes the two type-selection modes (kind vs. entitySet from list_entities) and defines the default fallback across all main document types, so an agent can tell this apart from read.document.get_document without opening a schema.

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

Usage Guidelines4/5

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

It gives explicit routing rules: use kind for common categories, entitySet for rare types like payroll or regulatory operations, and neither for a broad sweep, reinforced with example phrasings ("все документы за 10 сентября", "документ №33"). It also advises narrowing by period when searching by number. It stops short of naming a sibling such as get_document for single-record retrieval or analytics tools for aggregates, so one exclusion-style comparison is missing.

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

read.organization.get_organization_cardКарточка организации (реквизиты)A
Read-only

Полные реквизиты организации (юрлица) из настроек 1С: ИНН/КПП/ОГРН, полное и сокращённое наименование, дата регистрации, ОКВЭД, налоговый орган, контактная информация (юридический/фактический/почтовый адрес, телефон, email), основной банковский счёт, а также директор и главный бухгалтер. Для ИП директором считается сам предприниматель (берётся из карточки организации); для ООО и т.п. — из регистра «Ответственные лица организаций», если он опубликован в OData (если нет — вернётся заметка, что нужно добавить в «Состав OData»). Работает для любой организации базы — по названию (organization) или автоматически, если она в базе одна.

NameRequiredDescriptionDefault
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
innNo
kppNo
refYes
nameNo
ogrnNo
notesNo
okvedNo
contactsNo
databaseYes
directorNo
fullNameNo
legalTypeNo
shortNameNo
accountantNo
bankAccountNo
taxAuthorityNo
registrationDateNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, yet the description still adds real behavioral context: for ООО the director comes from the 'Ответственные лица организаций' register only if it is published in OData, otherwise a note is returned telling the user to add it to the OData composition. That graceful-degradation behavior is exactly the kind of trait an agent cannot learn from annotations or schema, though nothing is said about not-found or ambiguous-name handling.

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

Conciseness4/5

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

Purpose is front-loaded in the opening clause, and the subsequent sentences about director resolution and organization selection each carry distinct information. The long enumeration of returned fields is somewhat redundant given an output schema exists, but it is compact enough not to be wasteful.

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

Completeness5/5

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

With an output schema present the description does not need to explain return values, and it still covers the two things an agent must know to call it correctly: how the organization is resolved and what happens when the responsible-persons register is absent from OData. For a two-parameter read-only tool this leaves no meaningful gap.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (database, organization) are already documented, including the name/ИНН/Ref_Key matching modes. The description adds the auto-selection rule when only one organization exists, but this sits in mild tension with the schema's statement that omitting organization returns all organizations of the base, leaving the multi-org default ambiguous.

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

Purpose4/5

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

The description states a specific verb and resource: it returns the full requisites of a legal entity from 1C settings, and enumerates the concrete fields (ИНН/КПП/ОГРН, наименования, ОКВЭД, bank account, director/chief accountant). This clearly separates it from list-style siblings such as read.system.list_organizations, but it never names a sibling explicitly, so the differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

The text explains how the target organization is resolved (by name, or automatically when the base holds only one) and notes the ИП-vs-ООО director logic, which implies when the tool is applicable. It never states when to prefer this over read.counterparty.get_counterparty or read.system.list_organizations for discovery, and gives no exclusions or prerequisites.

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

read.schema.describe_entityОписание объектаA
Read-only

Показывает поля (с типами) и связи конкретного объекта 1С из $metadata. Принимает техническое имя EntitySet, напр. 'Catalog_Контрагенты' или 'Document_РеализацияТоваровУслуг'. Используйте перед поиском, чтобы узнать доступные поля.

NameRequiredDescriptionDefault
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYesТехническое имя объекта, напр. Catalog_Контрагенты

Output Schema

NameRequiredDescription
keysYes
classYes
fieldsYes
entitySetYes
relationsYes

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds real context beyond that: the result comes from $metadata, meaning this is schema introspection rather than a query against business data, which tells the agent not to expect document rows. Return shape itself is covered by the output schema, so no further disclosure is required.

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

Conciseness5/5

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

Three short sentences, front-loaded with what is returned, then the input format, then when to call it. No filler, no repetition of annotation or schema content beyond what aids selection.

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

Completeness4/5

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

For a two-parameter, read-only introspection tool with an output schema and full annotation coverage, this is nearly complete. The only minor gap is the absence of any note about what happens with an unknown or misspelled entitySet, but that is a small omission at this complexity level.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3 and the schema already documents both parameters. The description still adds value by giving two EntitySet examples with different prefixes (Catalog_ and Document_), which conveys the naming convention across entity kinds better than the single schema example. The database parameter is left entirely to the schema, which is acceptable at full coverage.

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

Purpose5/5

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

The description states a specific verb and resource: it shows the fields (with types) and relations of one specific 1C entity. The word 'конкретного' (a single, specific entity) implicitly separates it from the sibling read.schema.list_entities, so an agent can pick between the two without opening either schema.

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

Usage Guidelines4/5

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

It gives an explicit when-to-use: call this before searching so you know which fields are available. There is no explicit when-not condition and no sibling is named as the alternative, but the ordering guidance relative to search tools is clear and actionable.

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

read.schema.list_entitiesКарта объектов базыA
Read-only

Возвращает карту бизнес-объектов 1С, сгруппированную по классам: справочники, документы, регистры, перечисления и т.д. Используйте, чтобы понять, какие данные доступны в базе. Можно отфильтровать по классу и/или подстроке имени.

NameRequiredDescriptionDefault
classNoОграничить одним классом объектов
searchNoПодстрока в имени объекта (без учёта регистра)
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.

Output Schema

NameRequiredDescription
groupsYes
databaseYes
odataVersionNo

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that results are grouped by class and that filtering is optional, but says nothing about result volume, truncation, or whether the map is complete for large databases. Modest added value beyond the structured fields.

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

Conciseness5/5

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

Three short sentences with the purpose front-loaded, then the usage rationale, then the filtering options. No filler, and the most decision-relevant information comes first.

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

Completeness4/5

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

With an output schema present and all three optional parameters documented, the description covers what an agent needs to call the tool correctly. The remaining gap is the unstated relationship to read.schema.describe_entity, which would make the discovery workflow explicit.

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

Parameters3/5

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

Schema description coverage is 100%, including the enum for class and the note that database takes a name from list_databases with a default fallback, so the schema does the heavy lifting. The description only restates the class and name-substring filtering, adding no syntax or semantics beyond the schema; baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: it returns a map of 1C business objects grouped by class (catalogs, documents, registers, enums). That is concrete and distinguishable from the write.* siblings, but it never mentions read.schema.describe_entity, the closest read-only sibling, so an agent must infer the two-step discovery flow on its own.

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

Usage Guidelines4/5

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

"Используйте, чтобы понять, какие данные доступны в базе" gives a clear when-to-use context (initial exploration of the database), and the filtering sentence tells the agent how to narrow the listing. It stops short of stating exclusions or naming the alternative (describe_entity) for drilling into a single object.

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

read.system.health_checkПроверка соединенияA
Read-only

Проверяет доступность OData-сервиса 1С и корректность авторизации для выбранной базы. Перечитывает $metadata и обновляет кеш схемы; возвращает версию OData и число видимых объектов. Вызывайте первым, если другие инструменты выдают ошибки.

NameRequiredDescriptionDefault
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.

Output Schema

NameRequiredDescription
labelNo
statusYes
baseUrlYes
databaseYes
readOnlyYes
entityCountYes
odataVersionNo
writeJournalNo
regulatedCurrencyYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only say readOnlyHint and openWorldHint; the description adds real context beyond them — that it re-reads $metadata and updates the schema cache (a state-affecting side effect worth knowing about), that it validates authorization, and what it returns (OData version, visible object count). It stops short of noting cost or latency of a metadata refresh, which would matter on large bases.

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

Conciseness5/5

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

Three short sentences with a clear order: what it checks, what it refreshes and returns, when to call it. Nothing is redundant or buried, and the usage trigger is placed last where it is easy to find.

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

Completeness5/5

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

For a one-optional-parameter diagnostic tool with full schema coverage, annotations, and an output schema, the description covers purpose, side effect, and usage trigger. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and the single optional parameter is already documented with its default and its link to list_databases. The phrase 'для выбранной базы' merely echoes the parameter, so the description adds essentially nothing the schema does not already carry.

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

Purpose5/5

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

States a specific verb and resource: verifies availability of the 1C OData service and correctness of authorization for the selected database, then refreshes $metadata and returns the OData version plus visible object count. This is unmistakably distinct from every read/write sibling in the list, none of which touch connectivity or schema cache.

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

Usage Guidelines5/5

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

Explicitly instructs 'Вызывайте первым, если другие инструменты выдают ошибки' — a concrete diagnostic trigger that names the condition for use. The database parameter's own schema description ties it to list_databases, so the agent also knows where the input comes from.

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

read.system.list_databasesСписок баз 1СA
Read-only

Показывает настроенные базы 1С, к которым подключён сервер, и какая из них основная. Имя базы передаётся в параметр database остальных инструментов. Вызывайте, если нужно понять, какие базы доступны или сравнить данные нескольких баз.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
defaultNo
databasesYes

TDQS

A4.5/5.0
Behavior4/5

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

The readOnlyHint and openWorldHint annotations already declare the safety profile, and the description adds behavior the annotations cannot: that results identify a primary database and that the names are the input keys for the rest of the toolset. It does not discuss permissions, enumeration scope, or failure behavior for unconfigured servers, so it is not exhaustive.

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

Conciseness5/5

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

Three sentences, each doing distinct work: what is returned, how the result is consumed downstream, and when to call it. The most decision-relevant information (which databases are available) is front-loaded with no filler.

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

Completeness5/5

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

For a no-parameter discovery tool with an output schema already documenting the return shape, this covers everything an agent needs: what it lists, that one entry is primary, and how to use the values afterwards. Nothing important is left implicit.

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

Parameters4/5

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

There are zero input parameters, so the baseline is 4 and nothing more is required of the description for the schema. It does add cross-tool meaning by telling the agent where the database value produced here is used elsewhere, which is a genuine value-add.

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

Purpose5/5

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

The description names a concrete verb and resource ('Показывает настроенные базы 1С') and states the scope precisely: the databases this server is connected to and which one is primary. It also distinguishes it from its siblings by explaining that the returned names are consumed by the 'database' parameter of other tools, so an agent knows this is the entry point rather than another analytics read.

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

Usage Guidelines4/5

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

It gives explicit call triggers ('если нужно понять, какие базы доступны или сравнить данные нескольких баз'), which covers both the discovery and the multi-database comparison cases. It stops short of naming an alternative tool or a when-not condition, so it falls just below the top mark.

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

read.system.list_organizationsОрганизации базыA
Read-only

Список организаций (юрлиц) внутри выбранной базы 1С. Название организации передаётся в параметр organization аналитических инструментов (get_sales, get_debtors, get_cashflow, get_inventory и др.), чтобы получить данные по одному юрлицу.

NameRequiredDescriptionDefault
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.

Output Schema

NameRequiredDescription
countYes
organizationsYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and an output schema exists, so the safety and return-shape burden is lifted. The description adds genuinely useful cross-tool behavior: the result values are meant to be fed into the 'organization' parameter of analytical tools, which is context the annotations cannot convey.

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

Conciseness5/5

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

Two sentences, zero filler, with the core definition front-loaded and the downstream usage note following. The sibling tool list in parentheses is compact and directly actionable.

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

Completeness5/5

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

For a simple one-optional-parameter read tool with an output schema, the description covers what is returned (organizations/legal entities), the scoping to a database, and how the values are consumed downstream. Nothing an agent needs in order to call it correctly is missing.

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

Parameters3/5

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

There is a single optional parameter with 100% schema description coverage, so the schema already explains that 'database' is a name from list_databases with a default fallback. The description only echoes the notion of a 'selected database' without adding format or default details, so baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: listing organizations (legal entities) inside a chosen 1C database, and clarifies the entity type with '(юрлиц)'. It does not explicitly distinguish itself from siblings such as list_databases or get_organization_card, so it lands just short of the top mark.

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

Usage Guidelines4/5

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

It gives a concrete use case: the returned organization name is what you pass as the 'organization' parameter of analytics tools (get_sales, get_debtors, get_cashflow, get_inventory) to narrow data to a single legal entity. That clearly explains when to reach for this tool, but there are no exclusions or guidance on when to use get_organization_card instead.

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

write.accounting.set_contract_settlement_settingsСохранить точную настройку счетов расчётовA

Создаёт отсутствующую настройку (create) либо меняет явно указанные ресурсы (update) с expectedDataVersion и If-Match, когда DataVersion опубликован. Только если metadata не содержит DataVersion, update требует singleWriter=true (владелец подтвердил отсутствие параллельных изменений); If-Match не отправляется, атомарной защиты от конкуренции нет. Предпросмотр связан с текущей записью. scope=contract требует договор; counterparty/group сохраняет настройку точного контрагента/группы без договора. Проверяет организацию, IsFolder и отсутствие удаления; для договора также владельца, организацию и валюту. Сначала предпросмотр; подтверждение с теми же аргументами и operationId. Глобальные настройки и удаление недоступны. Старое имя set_contract_settlement_settings поддерживает только договор. Прочее не получает толкование займа/расхода.

NameRequiredDescriptionDefault
modeYes
confirmNo
accountsYes
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefYes
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
singleWriterNoТолько для update без DataVersion в metadata: подтверждение отсутствия параллельного изменения настроек. Не отменяет CAS при опубликованной версии.
settlementKindYes
counterpartyRefYes
organizationRefYes
expectedDataVersionNo

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the CAS/If-Match protocol, explicitly warns that when metadata has no DataVersion there is no atomic concurrency protection, lists the validations performed (organization, IsFolder, no deletion; plus owner, organization and currency for contracts), and describes the preview-then-confirm flow with operationId idempotency. The destructiveHint=false annotation is consistent with the stated 'deletion unavailable' constraint.

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

Conciseness3/5

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

The content is front-loaded and information-dense, but it is delivered as a single run-on paragraph where security caveats, scope rules, validation lists and preview flow all run together. The dangling 'scope=contract' reference and the trailing remark about loan/expense interpretation add confusion rather than clarity.

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

Completeness4/5

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

For an 11-parameter mutation with a preview/confirm protocol, the description covers the workflow, concurrency model and validation well, and an output schema exists so return values need not be explained. The remaining gap is the entirely undescribed accounts payload and the scope parameter that appears in prose but not in the schema.

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

Parameters3/5

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

Schema description coverage is only 27%, so the description must compensate, and it does explain expectedDataVersion/If-Match, singleWriter, operationId and confirm semantics well. However, it says nothing about the accounts object's four UUID fields (customerAdvance, supplierAdvance, customerSettlement, supplierSettlement), the settlementKind enum values, or the mode enum, and it introduces a scope concept absent from the schema.

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

Purpose4/5

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

The description states a concrete verb pair and resource: it creates a missing settlement-account setting (create) or changes explicitly listed resources (update), and it carves out scope by noting that global settings and deletion are not available. It does not name the closest sibling (write.accounting.set_settlement_settings) directly, so the differentiation is implied through the global-settings exclusion rather than stated.

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

Usage Guidelines4/5

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

Strong when-to-use content: create vs update, when singleWriter is mandatory, that scope=contract requires a contract while counterparty/group do not, and that a preview must precede confirmation with identical arguments and operationId. The guidance is slightly muddied by referencing a scope parameter that does not exist in the schema and by the confusing note about the old tool name.

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

write.accounting.set_settlement_settingsСохранить точную настройку счетов расчётовA

Создаёт отсутствующую настройку (create) либо меняет явно указанные ресурсы (update) с expectedDataVersion и If-Match, когда DataVersion опубликован. Только если metadata не содержит DataVersion, update требует singleWriter=true (владелец подтвердил отсутствие параллельных изменений); If-Match не отправляется, атомарной защиты от конкуренции нет. Предпросмотр связан с текущей записью. scope=contract требует договор; counterparty/group сохраняет настройку точного контрагента/группы без договора. Проверяет организацию, IsFolder и отсутствие удаления; для договора также владельца, организацию и валюту. Сначала предпросмотр; подтверждение с теми же аргументами и operationId. Глобальные настройки и удаление недоступны. Старое имя set_contract_settlement_settings поддерживает только договор. Прочее не получает толкование займа/расхода.

NameRequiredDescriptionDefault
modeYes
scopeYes
confirmNo
accountsYes
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNo
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
singleWriterNoТолько для update без DataVersion в metadata: подтверждение отсутствия параллельного изменения настроек. Не отменяет CAS при опубликованной версии.
settlementKindYes
counterpartyRefYes
organizationRefYes
expectedDataVersionNo

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses that when DataVersion is absent and singleWriter is used, If-Match is not sent and there is no atomic protection against concurrent changes. It also lists the validations performed (organization, IsFolder, no deletion; contract owner, organization, currency) and notes that the preview is tied to the current record. It does not describe the response shape or failure modes, but it discloses the key behavioral traits the annotations omit.

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

Conciseness4/5

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

It is a single dense paragraph with no filler, and the create/update distinction plus the concurrency rule are front-loaded. The parenthetical asides and long clauses make it hard to scan, but nearly every sentence carries decision-relevant information.

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

Completeness4/5

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

Given a 12-parameter mutation tool with a nested accounts object and an output schema, the description covers the confirm flow, concurrency handling, scope branches, validation behavior, and the hard limits on global settings and deletion. What remains missing is the meaning of the individual account slots and settlementKind values, which the agent must infer from the schema alone.

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

Parameters4/5

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

Schema description coverage is only 25% across 12 parameters, so the description must compensate, and it does for the hardest ones: mode, scope, contractRef, expectedDataVersion, singleWriter, and operationId semantics are all explained. It leaves the accounts sub-object fields, settlementKind values, and database/organizationRef/counterpartyRef meanings to the schema, so gaps remain but the critical conditional parameters are covered.

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

Purpose4/5

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

The description states a specific verb pair and resource: it creates a missing settlement-account setting (create) or changes explicitly listed resources (update), and it names the scope variants (contract/counterparty/group). It also distinguishes the legacy name set_contract_settlement_settings, which only supports contracts. It does not explicitly contrast with the nearby siblings apply_bank_settlement_settings or get_settlement_settings, so sibling differentiation is partial rather than complete.

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

Usage Guidelines5/5

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

It states the required flow: preview first, then confirm with the same arguments plus the operationId from the preview. It states the branch conditions explicitly: expectedDataVersion with If-Match when DataVersion is published, and singleWriter=true only when metadata lacks DataVersion. It also states that scope=contract requires contractRef while counterparty/group do not, and that global settings and deletion are unavailable.

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

write.catalog.create_contractСоздать договорA

Заводит договор контрагента (подчинённый справочник): владелец — контрагент, организация, ВИД договора, номер/дата, валюта/тип цен и (опц.) руководитель/подписант. ВАЖНО: вид договора (kind) обязателен и его НЕЛЬЗЯ выбирать самостоятельно — уточните у пользователя, т.к. один контрагент может быть и покупателем, и поставщиком. Номер по умолчанию «б/н», дата — сегодня. По умолчанию предпросмотр (dry-run); создание — при confirm=true.

NameRequiredDescriptionDefault
dateNoДата договора YYYY-MM-DD (по умолчанию сегодня)
kindYesВид договора — ОБЯЗАТЕЛЬНО спросить у пользователя, не выбирать самому
nameNoНаименование договора (по умолчанию «Договор <номер>»)
numberNoНомер договора (по умолчанию «б/н»)
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
currencyNoВалюта взаиморасчётов — код (напр. 643/840) или название (RUB/USD)
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
headNameNoФИО руководителя/подписанта контрагента (реквизит договора)
priceTypeNoТип цен — название или код (из справочника Типы цен номенклатуры)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
headPositionNoДолжность руководителя контрагента (напр. «Генеральный директор»)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
counterpartyRefYesRef_Key контрагента (владелец договора)

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the mutation profile is known from structured data. The description still adds real behavior: preview by default, default number 'б/н' and today's date, and idempotent retry via operationId. However, the operationId/confirm mechanics are also documented in the schema, so the incremental disclosure over structured fields is modest.

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

Conciseness4/5

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

It is a single dense paragraph with the critical constraint ('kind' must be asked) and the dry-run default front-loaded, so nothing important is buried. Every sentence carries information, though the block could be split for easier scanning of the confirmation workflow.

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

Completeness4/5

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

For a 13-parameter mutation tool with a full schema, annotations and an output schema, the description covers the risky parts: mandatory user-confirmed kind, preview-first workflow, defaults and idempotent retry. The remaining parameter detail (currency, priceType, database resolution) is left to the schema, which is acceptable given 100% coverage.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the description would need to add meaning beyond the schema to score higher. It restates the kind constraint, the confirm/dry-run semantics and the defaults for number and date, all of which are already in the schema; the only added framing is grouping the optional head/signatory fields. Baseline 3 applies.

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

Purpose4/5

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

The description opens with a specific verb and resource ('Заводит договор контрагента') and immediately scopes it as a subordinate catalog whose owner is the counterparty. That is precise enough for an agent to know this creates a contract, not a counterparty. It does not explicitly name or contrast a sibling tool, which keeps it short of a 5.

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

Usage Guidelines5/5

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

It states the key precondition explicitly: 'вид договора (kind) обязателен и его НЕЛЬЗЯ выбирать самостоятельно — уточните у пользователя', with the reason given (one counterparty can be both buyer and supplier). It also spells out the default dry-run path and the confirm=true path, including showing the preview first and obtaining consent. This is exactly the when/when-not guidance the dimension rewards.

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

write.catalog.create_nomenclatureСоздать номенклатуруA

Создаёт новую позицию номенклатуры (товар/услуга). ПО УМОЛЧАНИЮ предпросмотр (dry-run): покажите пользователю payload и только после согласия повторите с confirm=true. Можно указать артикул, папку (folder — имя группы или Ref_Key) и пометить услугой (isService). Запись идёт в боевую базу.

NameRequiredDescriptionDefault
nameYesНаименование номенклатуры (Description)
folderNoПапка/группа — имя или Ref_Key (для размещения в группе)
articleNoАртикул
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
fullNameNoПолное наименование
isServiceNotrue — услуга (Услуга=true, вид «Услуга»), false — товар
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.1/5.0
Behavior5/5

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

It adds behavior that the annotations do not cover: a default dry-run mode, a consent gate before writing, and the fact that the write goes to the production database ('боевая база'). Together with the annotations, which say readOnlyHint=false and destructiveHint=false, this fills the gap for a mutating tool.

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

Conciseness4/5

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

It is one compact paragraph that leads with the dry-run warning, the most important information for an agent, and then covers the optional fields. Each sentence carries useful information, though the dry-run instruction could be tightened.

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

Completeness4/5

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

Because an output schema exists and the input schema has 100% description coverage, the definition does not need to cover the return values. It covers the main behavioral risks: preview, consent and production write. Only the database and operationId parameters are left entirely to the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains name, folder, article, confirm, database, fullName, isService and operationId. The description mentions folder and isService but adds no meaning beyond what the schema fields already state, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Создаёт новую позицию номенклатуры (товар/услуга)', and 'новую' implicitly sets it apart from the update_nomenclature sibling. It never names an alternative tool explicitly, so sibling differentiation is left to inference rather than stated.

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

Usage Guidelines4/5

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

It gives a concrete procedure: a dry-run by default, show the user the payload, then repeat with confirm=true after consent. That is clear operational context, but there is no guidance on when to choose a different tool, such as create_folder for grouping or update_nomenclature for existing items.

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

write.catalog.update_nomenclatureИзменить номенклатуруA

Изменяет реквизиты номенклатуры по Ref_Key (наименование/полное имя/артикул). По умолчанию предпросмотр (dry-run); применение — при confirm=true. Указывайте только меняемые поля.

NameRequiredDescriptionDefault
refYesRef_Key номенклатуры
nameNoНовое наименование (Description)
articleNoАртикул
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
fullNameNoПолное наименование

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already flag this as a non-read-only, non-destructive, open-world write, and the description adds the meaningful two-phase dry-run/apply contract plus partial-update semantics. It stops short of permissions, failure behavior, or what the preview returns (the operationId flow lives only in the confirm parameter's schema text).

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

Conciseness4/5

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

Three short sentences, front-loaded with the action and key, then the dry-run contract, then the partial-update rule. No filler; slightly clipped phrasing but efficient.

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

Completeness4/5

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

For a mutation tool with annotations, an output schema, and full schema coverage, the description covers the essentials an agent needs: identity key, mutable fields, and the preview-then-confirm pattern. Only the ref-resolution path is left implicit.

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

Parameters3/5

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

Schema coverage is 100%, so all six parameters are already documented, including the rich confirm/dry-run instructions and the database lookup hint. The description's parenthetical mapping of fields and the 'only pass changed fields' rule add some value but largely restate the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description names a specific verb ('Изменяет') and resource (реквизиты номенклатуры), identifies the key (Ref_Key) and enumerates the mutable fields. It is clearly distinguishable from write.catalog.create_nomenclature by the update semantics, though it never names a sibling explicitly.

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

Usage Guidelines4/5

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

It states an explicit conditional workflow: preview by default, apply only with confirm=true, and pass only the fields being changed. It does not say how to resolve the Ref_Key (e.g. via find_nomenclature/list_entities) or when the generic write.entity.update_entity would be preferable.

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

write.counterparty.create_bank_accountСоздать банковский счёт контрагентаA

Заводит расчётный счёт контрагента (подчинённый справочник): банк по БИК + номер счёта. Можно сделать счёт основным. По умолчанию dry-run; создание — при confirm=true. Ref контрагента — из find_counterparty.

NameRequiredDescriptionDefault
bikYesБИК банка (ищется в справочнике «Банки»)
labelNoНаименование счёта (по умолчанию — номер счёта)
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
currencyNoВалюта (код/название; по умолчанию рубль)
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
makeMainNoСделать основным банковским счётом контрагента
ownerRefYesRef_Key контрагента-владельца счёта
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
accountNumberYesНомер расчётного счёта

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true), the description discloses the dry-run-first behavior and the confirm gate, which is the most important behavioral trait for an agent. It doesn't discuss side effects such as what happens to an existing main account when makeMain=true.

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

Conciseness5/5

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

Four compact sentences, each carrying a distinct fact (what it creates, optional main flag, dry-run/confirm rule, ownerRef source), with the mutation gate front-loaded. No filler.

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

Completeness4/5

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

With 9 parameters, an output schema, and full annotation coverage, the description covers the essential workflow (preview → confirm, ref lookup). It omits nothing critical, though the database/currency defaults are left entirely to the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter, including the dry-run/operationId flow. The description adds meaning only for the bik/accountNumber pairing, makeMain, and the source of ownerRef, which is marginal added value over the schema.

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

Purpose4/5

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

The description names a specific verb and resource ('Заводит расчётный счёт контрагента') and scopes it as a subordinate catalog with the two key inputs (BIC + account number). It is clearly a different sub-resource from the sibling create_counterparty, though it doesn't state the contrast explicitly.

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

Usage Guidelines4/5

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

It gives concrete operating context: dry-run is the default, actual creation requires confirm=true, and ownerRef must come from find_counterparty. It stops short of saying when not to use this tool (e.g. when the account already exists, use update_counterparty instead).

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

write.counterparty.create_contact_personСоздать контактное лицо (директор и т.п.)A

Заводит контактное лицо контрагента (директор, бухгалтер, менеджер): ФИО + должность. Можно сделать основным контактным лицом. По умолчанию dry-run; создание — при confirm=true.

NameRequiredDescriptionDefault
nameYesФИО (наименование контактного лица)
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
lastNameNoФамилия
makeMainNoСделать основным контактным лицом контрагента
ownerRefYesRef_Key контрагента
positionNoДолжность (напр. «Директор»)
firstNameNoИмя
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A3.8/5.0
Behavior4/5

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

The annotations only say readOnlyHint=false and destructiveHint=false, so the description adds real value by disclosing the dry-run default and the confirm=true gate — an agent would otherwise assume an immediate write. It also surfaces the makeMain side effect, though it does not say what happens to the previously main contact.

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

Conciseness5/5

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

Two compact sentences, front-loaded with the action and resource, with the dry-run/confirm rule placed last as the operational caveat. Every clause carries information; nothing is padded or repeated.

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

Completeness4/5

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

With an output schema present and full schema coverage, the description only needs to convey purpose and the preview/confirm workflow, which it does. The remaining gap is the effect of makeMain on an existing primary contact and whether a database must be specified, both minor against the rich structured fields.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter including confirm, operationId and database is already documented in the schema. The description only restates ФИО + должность and makeMain, adding no syntax or constraint detail beyond the schema; baseline 3 applies.

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

Purpose4/5

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

The description opens with a concrete verb and resource ('Заводит контактное лицо контрагента') and enumerates the role examples (директор, бухгалтер, менеджер) plus the fields captured (ФИО + должность). It implicitly distinguishes itself from create_counterparty by scoping to a contact person of an existing counterparty, but never names that sibling explicitly.

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

Usage Guidelines3/5

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

It states the invocation mode clearly ('По умолчанию dry-run; создание — при confirm=true'), which tells the agent how to execute safely. However, it gives no guidance on when to choose this tool versus create_bank_account or update_counterparty, and no prerequisites (e.g., needing an ownerRef from find_counterparty) are mentioned in the description itself.

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

write.counterparty.create_counterpartyСоздать контрагентаA

Создаёт нового контрагента в справочнике. ПО УМОЛЧАНИЮ это предпросмотр (dry-run) — сначала покажите пользователю, что будет создано, и только после явного согласия вызовите повторно с confirm=true. Запись идёт в боевую базу, поэтому без подтверждения не создавайте.

NameRequiredDescriptionDefault
innNoИНН
kppNoКПП
nameYesНаименование контрагента (Description)
ogrnNoОГРН (пишется, если в базе настроен доп.реквизит «ОГРН»)
emailNoEmail (в контактную информацию)
phoneNoТелефон (в контактную информацию)
addressNoАдрес текстом (в контактную информацию, юр. адрес)
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
fullNameNoПолное наименование
legalTypeNoЮридическое или физическое лицо
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A3.9/5.0
Behavior4/5

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

The annotations state readOnlyHint=false, destructiveHint=false and openWorldHint=true; the description adds the crucial behavior the annotations cannot express: the call is a dry-run by default, the real write lands in the production database, and confirmation is mandatory. It stops short of explaining duplicate handling or what the preview result contains, although both are partly covered by the operationId field description.

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

Conciseness4/5

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

Three short sentences, front-loaded with the action and then the safety-critical rule; nothing is redundant. Capitalized emphasis and repeated 'без подтверждения не создавайте' slightly duplicate the same instruction, but this is deliberate for a risky operation.

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

Completeness4/5

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

With an output schema available, return values needn't be described, and the schema carries parameter detail. For a 12-parameter write tool against a live database, the definition covers the essential confirmation workflow; only duplicate detection and error behavior are left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 12 parameters, including confirm and operationId. The description reinforces the confirm/dry-run protocol but adds no new parameter-level meaning, so the baseline 3 applies.

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

Purpose4/5

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

The description gives a concrete verb plus resource: 'Создаёт нового контрагента в справочнике' leaves no doubt about the effect on 1C counterparties. It does not name the closest siblings (write.counterparty.update_counterparty, create_contact_person, create_bank_account), so an agent must infer the distinction from the noun alone.

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

Usage Guidelines4/5

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

Explicitly prescribes the call sequence: preview the default dry-run to the user, then re-invoke with confirm=true only after explicit consent, and never create without confirmation. The gap is the absence of any comparison with sibling write tools or guidance on choosing a target database.

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

write.counterparty.create_groupСоздать группу контрагентовA

Создаёт только явно названную группу контрагентов в указанной группе parentRef; пустой GUID parentRef означает корень. Проверяет родителя и иерархию, сначала предпросмотр, затем confirm с тем же operationId и контрольное чтение. Не создаёт произвольные бизнес-группы без поручения владельца.

NameRequiredDescriptionDefault
nameYes
confirmNo
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
parentRefYes
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true), the description discloses the two-phase preview/confirm protocol, the idempotency contract via operationId, hierarchy/parent validation, and a post-write control read. That is exactly the operational context an agent needs before invoking a mutating tool.

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

Conciseness4/5

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

The main action leads, followed by parent semantics, workflow, and the usage exclusion; no filler sentences. It is dense to the point of being a run-on, with the preview/confirm mechanics packed into one clause chain, but every clause carries information.

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

Completeness5/5

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

For a mutating creation tool with an output schema available, the description covers the safety workflow (preview, confirm, control read), idempotency, root-parent edge case, and scope limits. Nothing an agent needs in order to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is only 40%, and the description compensates by defining the non-obvious semantics of parentRef (empty GUID = root) and the role of confirm within the preview/confirm flow, neither of which the schema explains. The 'name' and 'database' parameters are left to the schema, which is acceptable since 'database' is documented there.

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

Purpose5/5

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

The description names a specific verb and resource ('создаёт ... группу контрагентов') and immediately scopes it ('только явно названную группу', 'в указанной группе parentRef'). An agent can distinguish this from create_counterparty, set_group and create_folder without opening any schema.

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

Usage Guidelines4/5

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

It gives a clear when-to-use sequence (validate parent, preview, then confirm with the same operationId) and an explicit when-not ('не создаёт произвольные бизнес-группы без поручения владельца'). It stops short of naming sibling alternatives such as set_group for moving existing counterparties into a group.

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

write.counterparty.set_groupУказать группу отдельного контрагентаA

Меняет только Parent_Key отдельного контрагента (subjectKind=counterparty, IsFolder=false). Перемещение самих групп запрещено: безопасность глубины их потомков не проверяется. parentRef — точная группа или пустой GUID для корня. Проверяет отсутствие удаления и цикла; expectedDataVersion обязателен, PATCH с If-Match, предпросмотр/confirm/operationId и контроль сохранения остальных полей. Удаление недоступно.

NameRequiredDescriptionDefault
refYes
confirmNo
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
parentRefYes
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
subjectKindYes
expectedDataVersionYes

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations it discloses concrete behavior: only Parent_Key is touched, deletion and cycle checks run, expectedDataVersion is mandatory with PATCH/If-Match semantics, a preview/confirm/operationId flow exists, remaining fields are preserved, and deletion is unavailable. This is far more than readOnlyHint/destructiveHint/openWorldHint convey.

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

Conciseness4/5

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

The critical scope constraint is front-loaded and nearly every clause carries information. The final sentence ('Удаление недоступно') is somewhat redundant with the earlier exclusion, and the paragraph is dense, but it is not padded.

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

Completeness4/5

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

For a concurrency-controlled mutation with an output schema, the description covers the essentials: preview/confirm flow, version requirement, preservation of other fields, and validation checks. It could say more about what the preview returns or how failures surface, but the presence of an output schema lowers that burden.

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

Parameters4/5

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

Schema coverage is only 29%, but the description compensates for the ambiguous parameters: parentRef is the exact group or an empty GUID for root, expectedDataVersion is mandatory, and operationId comes from the preview and is passed with confirm=true to avoid duplicates. ref and database remain undocumented in the description, though database is covered in the schema.

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

Purpose5/5

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

States a precise verb and object: changes ONLY Parent_Key of an individual counterparty, with the scope qualifiers (subjectKind=counterparty, IsFolder=false) spelled out. It also explicitly excludes moving groups, which distinguishes it from siblings like write.entity.move_to_folder and write.counterparty.create_group.

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

Usage Guidelines4/5

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

Clearly frames the applicable case (re-parenting a single counterparty, not a group) and states the excluded case with a reason (descendant depth safety not checked). It does not name the sibling tool to use instead for group moves, so routing is implied rather than explicit.

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

write.counterparty.update_counterpartyИзменить контрагентаA

Изменяет реквизиты контрагента по Ref_Key (наименование/ИНН/КПП/полное имя). По умолчанию предпросмотр (dry-run); применение — при confirm=true. Указывайте только меняемые поля.

NameRequiredDescriptionDefault
innNoИНН
kppNoКПП
refYesRef_Key контрагента
nameNoНовое наименование (Description)
ogrnNoОГРН (если в базе настроен доп.реквизит)
emailNoEmail (контактная информация)
phoneNoТелефон (контактная информация)
addressNoАдрес текстом (юр. адрес)
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
fullNameNoПолное наименование

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false, destructiveHint=false, openWorldHint=true, which leaves the two-phase behavior unstated. The description adds the crucial trait that the default call is a preview and no write occurs unless confirm=true, plus the partial-update rule. It does not discuss permissions or reversibility, but the preview/apply disclosure is the important behavioral fact.

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

Conciseness5/5

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

Three short sentences, front-loaded with what changes and keyed on Ref_Key, then the dry-run/apply mechanics, then the field rule. Every sentence carries distinct information with no filler.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and 100% schema coverage covers the 11 parameters. The description supplies the workflow context an agent needs to call it safely. Minor gap: it does not mention prerequisites or what happens to fields left out.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description earns above baseline by adding partial-update semantics ("Указывайте только меняемые поля") and identifying Ref_Key as the selector. It does not clarify fields the schema omits from its enumeration, but the added meaning is real.

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

Purpose4/5

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

States a specific verb and resource in Russian ("Изменяет реквизиты контрагента по Ref_Key") and names several editable fields (наименование/ИНН/КПП/полное имя). The update-vs-create distinction is implicit in the verb but the description never names a sibling to route away from. Only 4 of the ~9 editable fields are enumerated, so it under-describes slightly.

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

Usage Guidelines4/5

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

Gives clear operating context: dry-run is the default, confirm=true applies the change, and only changed fields should be passed. It does not state when to reach for a sibling such as write.entity.update_entity or set_group instead, so there are no explicit exclusions.

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

write.document.add_document_lineДобавить строку в документA

Добавляет одну позицию в табличную часть «Товары» существующего НЕПРОВЕДЁННОГО документа (счёт/поступление/реализация), сохраняя прежние строки со всеми их реквизитами (содержание, счета учёта, номенклатурная группа). dry-run/confirm.

NameRequiredDescriptionDefault
refYesRef_Key документа (GUID)
lineYesДобавляемая позиция
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYesИмя документа, напр. Document_РеализацияТоваровУслуг
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true), the description discloses two non-obvious behaviors: existing lines and all their attributes (содержание, счета учёта, номенклатурная группа) are preserved, and the target document must be unposted. This is real behavioral context an agent would otherwise have to guess. The dry-run/confirm mention is redundant with the confirm parameter text, so it does not add further weight.

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

Conciseness4/5

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

A single front-loaded sentence that packs the scope, the target tabular section, and the preservation guarantee, followed by a two-word workflow tag. Nothing is padded; the only weakness is that the trailing «dry-run/confirm» is too terse to be self-explanatory and relies on the schema.

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

Completeness4/5

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

For a nested-object write tool with 6 parameters, the definition supplies the key constraints (unposted only, additive not replacing, dry-run first) while a rich schema and an output schema cover inputs and returns. It does not spell out which entitySet values are valid or what errors arise from posting status, but this is a minor residual gap given the surrounding structured data.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents ref, entitySet, line fields, confirm, operationId and database in detail, including defaults and fallbacks for accounts. The description mentions the preserved attributes (content, accounts, nomenclature group) but adds no parameter-level semantics of its own. Baseline 3 applies when the schema carries the full burden.

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

Purpose4/5

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

The description names a specific verb and resource («Добавляет одну позицию в табличную часть «Товары»»), scopes it to existing UNPOSTED documents of named types, and implicitly separates it from siblings that create whole documents or replace lines. It stops short of naming the concrete alternatives (update_document_lines, remove_document_line), so it is clear but not sibling-differentiating to the highest degree.

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

Usage Guidelines3/5

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

Usage is only implied: the «НЕПРОВЕДЁННОГО документа» restriction tells the agent a precondition, and «dry-run/confirm» signals the workflow, but there is no explicit statement of when to choose this tool over update_document_lines, remove_document_line, or creating a new document. The agent must infer the decision boundary from the sibling names.

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

write.document.align_bank_payment_amountsВыровнять сумму расшифровки банковского документаA

Выравнивает единственную строку «Расшифровки платежа» существующего НЕПРОВЕДЁННОГО банковского поступления или списания по сумме документа: сумма платежа и сумма взаиморасчётов = сумма документа, курс и кратность 1, НДС по ставке строки. Для случая, когда сумма в шапке есть, а в строке пусто или другая — иначе 1С проведёт документ с неверными проводками по расчётам. Только рубли и договор в рублях без условных единиц; несколько строк, валюта и неизвестная ставка НДС — отказ, суммы не угадываются. Нужна точная expectedDataVersion; предпросмотр показывает «было → станет», остальные поля сохраняются, контрольное чтение после записи. Проведение — отдельным вызовом post_document.

NameRequiredDescriptionDefault
refYes
confirmNo
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYes
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
expectedDataVersionYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false, destructiveHint=false, openWorldHint=true; the description goes well beyond that with preview semantics ("было → станет"), preservation of all other fields, a post-write control read, refusal rather than guessing, and a hard concurrency requirement on expectedDataVersion. Minor gap: it never explains the confirm=true / operationId idempotency path explicitly, though the flow is implied by "предпросмотр".

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

Conciseness5/5

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

Five dense sentences, front-loaded with the action and scope, then the rationale, then the refusal conditions, then the concurrency/verification mechanics, then the posting hand-off. No filler or restated boilerplate; each sentence adds information an agent needs.

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

Completeness5/5

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

Despite an output schema existing, the description still explains what the caller will observe (preview diff, unchanged fields, control read). For a mutation tool with six params, three required, and refusal semantics, nothing material is missing.

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

Parameters4/5

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

Schema description coverage is only 33% (only database and operationId are documented), so the description must carry weight. It does explain expectedDataVersion's exactness requirement — a required parameter with no schema description — and implies the preview/idempotency flow. It still leaves confirm, entitySet and ref's expected values unstated, so it compensates well but not fully.

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

Purpose5/5

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

Names a specific verb ("Выравнивает") and a precise object: the single "Расшифровка платежа" line of an existing UNPOSTED bank receipt or writeoff, aligned to the document total. It also enumerates exactly which fields are overwritten (payment amount, settlement amount, rate, multiplicity, VAT), so an agent can distinguish it from generic line-editing siblings like update_document_lines.

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

Usage Guidelines5/5

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

States the triggering condition explicitly (header amount present but the line is empty or different, otherwise 1C posts wrong settlement entries), the hard exclusions (multiple lines, currency, unknown VAT rate → refusal, amounts are not guessed), and the alternative for the next step ("Проведение — отдельным вызовом post_document"). This is close to an ideal when/when-not/alternatives block.

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

write.document.apply_bank_settlement_settingsПрименить счета расчётов к существующему банковскому документуA

Применяет унаследованные счета расчётов/авансов и выбранный договор к существующему НЕПРОВЕДЁННОМУ банковскому документу с точной expectedDataVersion/If-Match. Явная сторона supplier/customer обязательна, включая договор Прочее. Необязательный counterpartyRef заполняет только нулевую ссылку контрагента документа; требует существующий неудалённый элемент и точного владельца договора. Замена заполненного контрагента и подбор по названию/договору запрещены. Поддерживает опубликованные GUID и составной тип контрагента. Контрольное чтение проверяет договор, оба счёта, суммы платежа, налог и аналитику; пересчитанные курс, кратность и сумма взаиморасчётов не сравниваются с прежними. Условные единицы с иной валютой документа пока не поддержаны, курс не угадывается; несколько строк отклоняются. Предпросмотр связан с payload, документом, явно выбранным контрагентом, договором и результатом подбора. Отмена проведения и проведение выполняются отдельными вызовами; unknown удерживается без повторной записи.

NameRequiredDescriptionDefault
refYes
sideYes
confirmNo
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYes
contractRefYes
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
counterpartyRefNoЯвно выбранный контрагент: заполняет только нулевую ссылку документа. Заполненный контрагент должен совпадать; замена запрещена. Без выбора пустой контрагент блокирует действие.
expectedDataVersionYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (write, openWorld, non-destructive), it discloses substantive behavior: the mandatory control read validates contract, both accounts, payment amounts, tax and analytics, while recomputed rate/multiplicity/settlement amount are deliberately not compared. It also discloses failure modes (currency units with a different document currency unsupported, rate not guessed, multiple lines rejected) and idempotency handling (preview bound to payload/document/counterparty/contract, unknown held without re-writing). This is unusually rich disclosure for a mutation tool.

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

Conciseness4/5

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

The action, the state requirement and the concurrency token are front-loaded, and nearly every sentence encodes a distinct constraint rather than filler. It is dense and somewhat run-on, and could be split into short bullet-like clauses for faster parsing, but no sentence is truly wasted.

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

Completeness5/5

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

For a 9-parameter mutation with an output schema (so return values need no explanation), the description covers prerequisites, validation behavior, unsupported cases, preview/idempotency semantics and follow-up steps. An agent has everything needed to decide whether it may call this and what will happen.

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

Parameters3/5

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

Schema description coverage is only 33%, so the description carries real weight and does explain side, contractRef, counterpartyRef semantics and expectedDataVersion precisely. However, it leaves entitySet and confirm unexplained, and ref is only implied as the target document, so it does not fully compensate for the coverage gap.

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

Purpose5/5

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

The description opens with a specific verb and resource: applies inherited settlement/advance accounts and a chosen contract to an existing UNPOSTED bank document. It names the exact state requirement (НЕПРОВЕДЁННЫЙ) and the concurrency token (expectedDataVersion/If-Match), which distinguishes it clearly from siblings like set_settlement_settings or align_bank_payment_amounts.

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

Usage Guidelines4/5

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

It gives concrete preconditions and prohibitions: explicit side supplier/customer is mandatory including the 'Прочее' contract, counterpartyRef only fills a null ref, and replacing a filled counterparty or matching by name/contract is forbidden. It also notes that unposting and posting happen through separate calls, steering the agent away from expecting this tool to post. It does not name a specific sibling tool to use instead for those steps, so it falls just short of a 5.

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

write.document.copy_documentСкопировать документA

Создаёт новый документ по образцу существующего: читает его целиком и записывает копию со ВСЕМИ реквизитами — содержание строк, счета учёта, банковский счёт, ответственный, адрес доставки, доп. условия. Это главный способ выставить ежемесячно повторяющийся документ: инструменты create_* собирают документ из полей схемы и всё остальное теряют. Копия создаётся НЕПРОВЕДЁННОЙ, с новым номером (1С нумерует сама) и датой (по умолчанию сегодня). Правки: date — дата; fields — реквизиты шапки техническими именами (как в update_entity); lines — правки строк по номеру (напр. количество и содержание). Сумма документа пересчитывается по строкам, если не задана явно в fields. Счета расчётов — как в исходном документе; если в fields сменён договор — по настройке нового договора. По умолчанию dry-run; запись — при confirm=true.

NameRequiredDescriptionDefault
refYesRef_Key документа-образца (GUID)
dateNoДата копии YYYY-MM-DD (по умолчанию сегодня)
linesNoПравки строк табличной части по номеру (остальные строки копируются как есть)
fieldsNoРеквизиты шапки, которые надо изменить: { техническоеИмя: значение }, напр. {"Комментарий":"..."}
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYesИмя документа, напр. Document_СчетНаОплатуПокупателю
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.2/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, so the safety profile is already given. The description still adds meaningful context beyond that: the copy is created unposted, gets a new auto-assigned number and default-today date, and settlement accounts follow the source or the new contract. This is solid extra context, though it omits return-shape/pagination detail.

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

Conciseness4/5

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

It is front-loaded with purpose, then behavior, then parameter notes, and almost every sentence carries information. It is dense and long — the parenthetical attribute list and settlement-account sentence are heavy — but nothing is pure filler.

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

Completeness5/5

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

For a complex tool with nested objects, 8 parameters and a dry-run/operationId confirmation flow, the description covers creation behavior, numbering/date defaults, recalculation rules, and the write step. An output schema exists, so return values need not be explained.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description reinforces a few with extra meaning — fields use technical names 'as in update_entity', lines are edited by line number while the rest copy unchanged, and the sum recalculates unless set explicitly in fields. That is real value over the schema, but most semantics are already structured.

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

Purpose5/5

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

The description opens with a precise verb and resource: it creates a new document from an existing template by reading it whole and writing a copy. It explicitly contrasts this against the create_* siblings that 'build from schema fields and lose everything else', so an agent can distinguish it without opening schemas.

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

Usage Guidelines5/5

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

It states the primary use case (monthly recurring documents) and names the alternative family (create_*) with the exact reason to prefer this tool. The dry-run / confirm=true / operationId workflow is spelled out, including what to do after a timeout.

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

write.document.post_documentПровести / отменить проведение документаA
Destructive

Проводит документ (влияет на учёт) или отменяет проведение. По умолчанию предпросмотр (dry-run); Для повторного проведения Posted=true задайте repost=true, post=true и expectedDataVersion. Версионный Post использует PostingModeOperational=false без Unpost; проверяет состояние документа, не проводки. применение — при confirm=true. ВНИМАНИЕ: проведение меняет учётные данные — используйте осознанно.

NameRequiredDescriptionDefault
refYesRef_Key документа (GUID)
postNotrue — провести, false — отменить проведение
repostNoЯвно разрешить повторный Post уже проведённого документа; требует post=true и expectedDataVersion
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYesИмя документа, напр. Document_СчетНаОплатуПокупателю
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
expectedDataVersionNoТочная текущая версия включает durable preview/action/readback. Post/Unpost выполняются отдельно; атомарная CAS действия не подтверждена.

Output Schema

NameRequiredDescription
refNo
doneNo
noteNo
actionNo
dryRunNo
databaseNo
postingsNo
readbackNo
verifiedNo
willCallNo
postingsNoteNo
readbackNoteNo
readbackFetchedNo
verificationScopeNo
accountingMovementsVerifiedNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag this as destructive and non-read-only, so the bar is lower, and the description still adds real behavior: preview-first semantics, the operationId deduplication on retry after timeout, and the caveat that post/unpost run separately with CAS atomicity unconfirmed. That is meaningful risk disclosure beyond the annotations. The clause about PostingModeOperational=false is opaque internal jargon an agent cannot act on.

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

Conciseness3/5

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

The core facts are front-loaded (post/unpost, then dry-run default), which is good, but the middle is a run of sentence fragments with inconsistent capitalization ('применение — при confirm=true') and an unexplained internal flag. Several clauses read as machine-translated filler that does not help an agent decide or invoke.

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

Completeness4/5

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

For a destructive, open-world mutation with an output schema and fully documented parameters, the description covers the essentials: preview/confirm gating, retry/dedup behavior, and version requirements. It leaves unstated whether unposting also needs expectedDataVersion and what happens to an already-posted document's lines, but nothing critical to a correct call is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents ref, post, repost, confirm, operationId and expectedDataVersion, including the repost prerequisite. The description restates the repost parameter combination without adding syntax or format detail beyond the schema. Baseline 3 applies since the structured field does the heavy lifting.

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

Purpose4/5

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

The opening sentence names a specific verb and resource: it posts a document (affecting accounting) or cancels posting. That is unmistakable, and no sibling tool performs posting/unposting, so an agent can select it correctly. It does not explicitly name the related sibling (write.operation.status) for checking operation progress, which keeps it from a 5.

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

Usage Guidelines4/5

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

The description gives a clear operating model: dry-run by default, execution only with confirm=true, and re-posting of an already posted document requires repost=true, post=true and expectedDataVersion. It does not state when to prefer an alternative route (e.g. checking state via write.operation.status before retrying) or when unposting is inappropriate.

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

write.document.remove_document_lineУдалить строку документаA

Удаляет строку (по номеру LineNumber, начиная с 1) из табличной части «Товары» существующего НЕПРОВЕДЁННОГО документа. Нельзя удалить последнюю строку. dry-run/confirm.

NameRequiredDescriptionDefault
refYesRef_Key документа (GUID)
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYesИмя документа, напр. Document_РеализацияТоваровУслуг
lineNumberYesНомер строки (с 1)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only declare readOnly=false, destructive=false, openWorld=true; the description adds genuinely useful behavior: mutation is restricted to unposted documents and cannot empty the table. The dry-run/confirm hint supplies the two-phase safety protocol. It does not describe the failure mode when LineNumber is out of range.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the operation and its constraints; nothing superfluous. The trailing «dry-run/confirm.» fragment is terse but functional, since the schema spells out the protocol.

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

Completeness4/5

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

With an output schema present and 100% parameter coverage, the description only needs to cover scope and constraints, and it does: tabular section, unposted-only, non-last-row, confirm flow. Error/edge-case behavior for a missing or stale LineNumber is the only notable gap.

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

Parameters3/5

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

Schema description coverage is 100%, including the exact lineNumber wording «Номер строки (с 1)» and the full confirm/operationId protocol, so the description is essentially restating the schema. It adds no meaning beyond that baseline.

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

Purpose5/5

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

Names a specific verb and resource (delete a line by LineNumber from the «Товары» tabular section of an existing document) and adds scoping facts an agent could not infer: only unposted documents, the last row cannot be removed. That makes it clearly separable from add_document_line and update_document_lines without opening any schema.

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

Usage Guidelines4/5

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

Preconditions are stated (existing НЕПРОВЕДЁННЫЙ document, row number 1-based, last row not removable) and the dry-run/confirm flow is flagged. It does not, however, point at an alternative such as update_document_lines for bulk changes or say what to do when the line does not exist.

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

write.document.update_document_linesИзменить строки документаA

Заменяет табличную часть «Товары» существующего документа новым набором строк и пересчитывает сумму. Поддержаны: счёт покупателю, поступление, реализация (и товарами, и услугами), акт об оказании услуг. Строки пишутся в ту табличную часть, которая у документа заполнена («Товары» или «Услуги»). Документ должен быть НЕПРОВЕДЁННЫМ (если проведён — сначала отмените проведение через post_document). По умолчанию dry-run; применение — при confirm=true.

NameRequiredDescriptionDefault
refYesRef_Key документа
linesYesНовый полный набор строк (заменяет прежние — реквизиты старых строк не сохраняются, задавайте content и счета заново)
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYesИмя документа, напр. Document_РеализацияТоваровУслуг

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that the previous lines are wholly replaced, that lines are written to whichever tabular section is populated («Товары» or «Услуги»), that the total is recalculated, that 1С does not auto-fill «Содержание», and that dry-run is the default with an operationId that must be reused on retry after a timeout. The loss of old line requisites is disclosed even though destructiveHint=false, so the agent is warned where the annotation is silent.

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

Conciseness5/5

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

Five short sentences, front-loaded with the verb and the effect, then supported document types, then targeting rule, then prerequisite, then the dry-run/confirm protocol. No filler; the slight tension between the opening «Товары» and the later «Товары» или «Услуги» is resolved within the same paragraph.

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

Completeness5/5

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

For a multi-parameter mutating tool this covers everything an agent needs to call it safely: supported entity sets, the unposted precondition, section targeting, full-replacement warning, and the preview/confirm handshake. Return values are covered by the output schema, so the description need not restate them.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents every field in depth, so the baseline is 3. The description still adds meaning the schema does not: that the entire tabular section is replaced rather than merged, and which section the `lines` array lands in — a routing detail not derivable from the parameter definitions.

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

Purpose5/5

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

States a specific verb and resource ("Заменяет табличную часть ... новым набором строк и пересчитывает сумму") plus the exact document types it covers (счёт покупателю, поступление, реализация, акт об оказании услуг). The replacement semantics ("новый полный набор строк") clearly separate it from the sibling add_document_line / remove_document_line tools without needing to name them.

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

Usage Guidelines4/5

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

Gives an explicit prerequisite (document must be НЕПРОВЕДЁННЫЙ) and routes the agent to post_document to unpost first, plus the dry-run/confirm=true workflow. It stops short of explicitly contrasting with add_document_line for the case where only one line should change, leaving that choice inferential.

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

write.entity.create_folderСоздать папку (группу) справочникаA

Создаёт папку/группу в иерархическом справочнике 1С (по умолчанию — Контрагенты). Опционально вкладывает в родительскую папку (parent — имя папки или Ref_Key). В 1С «папки» = группы справочника; отдельных тегов в типовой Бухгалтерии нет. dry-run/confirm.

NameRequiredDescriptionDefault
nameYesНазвание папки
parentNoРодительская папка — имя или Ref_Key (для вложенности)
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetNoИерархический справочник (по умолчанию Catalog_Контрагенты)Catalog_Контрагенты
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the dry-run/confirm pattern, which is a two-step preview-then-write flow. It does not mention permissions or duplicate-name handling, so it stops short of full transparency.

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

Conciseness4/5

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

Front-loaded with the action and target, then parent nesting, then the 1C folder/group caveat. No filler sentences, though the trailing 'dry-run/confirm' fragment is terse to the point of being a note rather than explanatory prose.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description covers defaults, nesting, domain semantics and the confirmation workflow. The only meaningful gap is guidance on choosing this tool over the overlapping sibling create_group.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters including confirm, operationId, entitySet and database are already documented in the schema. The description adds only marginal framing — that 'parent' produces nesting and that the default entitySet is Контрагенты — which largely restates schema content.

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

Purpose4/5

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

States a specific verb and resource ('Создаёт папку/группу в иерархическом справочнике 1С') with the default target named (Контрагенты) and clarifies the 1C-specific equivalence of folders and catalog groups. It does not distinguish itself from the sibling write.counterparty.create_group, which appears to overlap in intent.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the description shows when the parent parameter applies (nested folders) and the dry-run/confirm sequencing, but never says when to use this generic tool versus write.counterparty.create_group or write.entity.move_to_folder. No exclusions or prerequisites are given.

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

write.entity.mark_for_deletionПометить на удалениеA
Destructive

Ставит/снимает пометку на удаление у объекта (как в 1С) — мягкое удаление, физически данные не стираются. По умолчанию предпросмотр (dry-run); для применения повторите с confirm=true. Полезно, чтобы убрать ошибочно созданную запись.

NameRequiredDescriptionDefault
refYesRef_Key объекта (GUID)
markNotrue — пометить на удаление, false — снять пометку
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYesИмя объекта, напр. Catalog_Контрагенты

Output Schema

NameRequiredDescription
refNo
noteNo
dryRunNo
payloadNo
updatedNo
databaseNo
willPatchNo
deletionMarkNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and openWorldHint=true, but the description adds information the annotations cannot convey: the operation is a soft delete, data is not physically erased, and by default nothing is written (dry-run). That meaningfully de-risks the call. It omits the operationId round-trip and permission expectations, so not a full 5.

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

Conciseness5/5

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

Three short sentences, front-loaded with the toggle semantics, then the dry-run/confirm rule, then the motivating use case. No filler and no repetition of schema detail.

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

Completeness4/5

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

With full schema coverage, existing output schema and annotations carrying the safety profile, the description covers the two things an agent must know: it is reversible/soft and it defaults to dry-run. Only the operationId-continuation and database-default nuances are left solely to the schema, which is acceptable.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already documents ref, mark, confirm (including the operationId handshake), database and entitySet. The description restates the mark toggle and the confirm workflow at a high level but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb and its inverse ('ставит/снимает пометку на удаление') applied to a named resource ('объект'), and immediately clarifies the 1C soft-delete semantics, which distinguishes it from write.entity.update_entity and the other write.* siblings. An agent can tell what the tool does without opening the schema.

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

Usage Guidelines4/5

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

It gives a concrete use case ('убрать ошибочно созданную запись') and the two-step workflow (default dry-run, repeat with confirm=true). It does not, however, name an alternative tool or state when NOT to use this (e.g., versus update_entity for real edits), so it stops short of explicit exclusions.

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

write.entity.move_to_folderПереместить объект в папкуB

Перемещает элемент справочника (напр. контрагента) в папку/группу — задаёт родителя (Parent_Key). folder — имя папки или Ref_Key. По умолчанию справочник Контрагенты. dry-run/confirm.

NameRequiredDescriptionDefault
refYesRef_Key перемещаемого элемента
folderYesПапка назначения — имя или Ref_Key
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetNoСправочник (по умолчанию Catalog_Контрагенты)Catalog_Контрагенты

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is given. The description adds that the operation sets Parent_Key and that a preview/confirm cycle exists, but it remains silent on important behavior: whether a missing folder is created or errors out, and whether child elements move with the object. The dry-run mechanics are actually spelled out in the schema's confirm parameter, not here.

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

Conciseness4/5

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

Four short fragments, front-loaded with the action and the parent-key effect; no filler. The trailing 'dry-run/confirm.' is telegraphic and would be better placed with the confirm guidance, but the entry stays compact and scannable.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and annotations cover the safety profile. Still, for a mutation that rewires hierarchy, an agent would benefit from knowing what happens when the folder is unresolved and what gets changed on the object; those gaps keep it at minimum viable.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are documented in the schema, including folder accepting a name or Ref_Key and the confirm/dry-run protocol. The description restates rather than extends this — it repeats 'folder — имя папки или Ref_Key' and the Контрагенты default verbatim. Baseline 3 applies when the schema carries the meaning.

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

Purpose4/5

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

States a concrete verb+resource: moves a catalog element (e.g. контрагент) into a folder/group by setting the parent (Parent_Key), and notes the default catalog is Контрагенты. This differentiates it reasonably from write.entity.create_folder and write.entity.update_entity, though the near-duplicate sibling write.counterparty.set_group is never mentioned, so an agent cannot fully separate the two.

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

Usage Guidelines3/5

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

Usage is only implied by the phrase 'По умолчанию справочник Контрагенты' and the terse 'dry-run/confirm' note. There is no explicit statement of when to use this instead of write.counterparty.set_group or write.entity.create_folder (e.g. folder must already exist vs. be created), leaving real selection ambiguity among siblings.

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

write.entity.update_entityИзменить объект (общий)A

Изменяет произвольные поля объекта 1С через PATCH по Ref_Key. Имена полей — технические (узнать через describe_entity), напр. {"ИНН":"7701234567"}. По умолчанию предпросмотр (dry-run); применение — при confirm=true. Мощный инструмент: меняйте только те поля, что указали. После записи поля перечитываются: успех — только если 1С сохранила всё. Договор и счета расчётов банковских документов этим инструментом не меняются — write.document.apply_bank_settlement_settings.

NameRequiredDescriptionDefault
refYesRef_Key объекта (GUID)
fieldsYesПоля для изменения: { техническоеИмя: значение }
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
entitySetYesИмя объекта, напр. Catalog_Контрагенты

Output Schema

NameRequiredDescription
refNo
noteNo
notesNo
dryRunNo
fieldsNo
updatedNo
databaseNo
replayedNo
verifiedNo
entitySetNo
willPatchNo
descriptionNo
operationIdNo
readbackNoteNo

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true) by disclosing the dry-run-by-default safety gate, the re-read verification step and the all-or-nothing success criterion after write. The "change only the fields you specified" warning and the banking-document exclusion add real mutation semantics. Minor gap: no mention of required permissions or rate/timeout behavior at the description level.

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

Conciseness4/5

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

Densely packed but front-loaded: purpose and mechanism first, then dry-run/confirm, then the safety caveat and exclusion. Every sentence carries information, though the prose is compact enough that the field-naming hint and the exclusion slightly compete for attention. No filler.

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

Completeness4/5

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

For a 5-parameter, nested-object, open-world mutation tool with an output schema and full annotation coverage, the description covers purpose, workflow, safety and exclusions adequately. The operationId/retry protocol lives in the confirm parameter description rather than the tool description, which is acceptable given the output schema exists, but the description never notes that the response includes such a preview handle.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning on top: technical field names must be discovered via describe_entity, with a concrete payload example ({"ИНН":"7701234567"}) that illustrates the fields object shape. It also foregrounds the default dry-run behavior of confirm. It does not explain entitySet allowed values beyond the schema example.

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

Purpose5/5

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

States a specific verb and resource ("Изменяет произвольные поля объекта 1С через PATCH по Ref_Key") and clearly delimits scope: only the fields passed are touched. It also names the sibling it is not used for (bank document contract/settlement settings), so an agent can distinguish it from the many write.* siblings without opening schemas.

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

Usage Guidelines5/5

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

Explicit workflow: look up technical field names via describe_entity first, default call is a dry-run, apply with confirm=true. It also names an exclusion with the exact alternative tool (write.document.apply_bank_settlement_settings), which is the strongest form of when-not-to-use guidance.

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

write.money.create_bank_writeoffСоздать списание с расчётного счётаA

Создаёт документ «Списание с расчётного счёта» (исходящий платёж с банка). НЕПРОВЕДЁННЫЙ; провести — post_document. Вид операции ОБЯЗАТЕЛЕН и не угадывается (напр. «ОплатаПоставщику», «ПеречислениеНалога», «ПеречислениеЗП», «ПереводНаДругойСчет», «ПрочееСписание»). Для оплаты поставщику с договором заполняется расшифровка: счёт расчётов — по настройке договора, источник виден в предпросмотре (обычно 60), сумма взаиморасчётов — для рублёвого договора. dry-run/confirm.

NameRequiredDescriptionDefault
dateNoДата YYYY-MM-DD (по умолчанию сегодня)
amountYesСумма списания
commentNoКомментарий
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора (для расшифровки взаиморасчётов)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
purposeTextNoНазначение платежа (текст)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
operationKindYesВид операции (ОБЯЗАТЕЛЬНО, не угадывать): ОплатаПоставщику / ПеречислениеНалога / ПеречислениеЗП / ПереводНаДругойСчет / ПрочееСписание …
orgBankAccountNoБанковский счёт организации — печатается в документе как реквизиты для оплаты. Название/номер счёта (напр. «Сбербанк» или «40802…») либо Ref_Key. Без указания берётся ОСНОВНОЙ счёт организации.
cashflowItemRefNoRef_Key статьи ДДС
counterpartyRefNoRef_Key контрагента (для расчётов)

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare non-read-only, non-destructive, open-world; the description adds substantive traits: the document is created НЕПРОВЕДЁННЫЙ, operationKind is mandatory and must not be guessed, and the confirm/operationId idempotency loop is described. Missing are permission or side-effect notes (e.g. whether the writeoff affects balances only after posting), but the essential behavior is disclosed.

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

Conciseness4/5

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

Front-loaded with the document type, then the unposted constraint, then the mandatory operation kind, then the settlement rule. The trailing fragment 'dry-run/confirm' is telegraphic and less structured than the rest, but overall there is little waste.

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

Completeness4/5

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

For a 13-parameter mutation tool with an output schema, the description covers the matters that matter: unposted state, mandatory operation kind, the preview-to-confirm loop, and the settlement breakdown rule. It leaves the relative positioning against other money-write siblings (payout order, cash payment) implicit, which is the main residual gap.

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

Parameters4/5

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

With 100% schema coverage the baseline is 3, but the description adds meaning beyond the schema: operationKind must not be guessed and is exemplified, and contractRef drives derivation of the settlement account from the contract settings, visible in preview (usually 60). That is real guidance the schema does not provide.

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

Purpose5/5

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

States a specific verb+resource: creates a «Списание с расчётного счёта» document (outgoing bank payment), and immediately scopes it as unposted. It also names the sibling that continues the flow (post_document), so an agent can place it in a pipeline without opening the schema.

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

Usage Guidelines4/5

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

Clear when-to-use: unposted writeoff, posting delegated to post_document, and the dry-run/confirm protocol is spelled out. It also gives the condition for filling the settlement breakdown (supplier payment with a contract). It stops short of distinguishing this from nearby siblings such as create_payout_order or create_cash_payment, which an agent could plausibly confuse.

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

write.money.create_cash_paymentСоздать расходный кассовый ордер (РКО)A

Создаёт «Расходный кассовый ордер» (выдача наличных из кассы). НЕПРОВЕДЁННЫЙ; провести — post_document. Вид операции ОБЯЗАТЕЛЕН (напр. «ОплатаПоставщику», «ВыдачаПодотчетномуЛицу», «ВзносНаличнымиВБанк», «ВыплатаЗаработнойПлатыПоВедомостям»). Для оплаты по договору заполняется расшифровка: счёт расчётов — по настройке договора, источник виден в предпросмотре, сумма взаиморасчётов — для рублёвого договора. dry-run/confirm.

NameRequiredDescriptionDefault
dateNoДата YYYY-MM-DD (по умолчанию сегодня)
basisNoОснование (текст)
amountYesСумма
cashRefNoRef_Key кассы организации (СчетКасса)
commentNoКомментарий
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
operationKindYesВид операции (ОБЯЗАТЕЛЬНО, не угадывать)
cashflowItemRefNoRef_Key статьи ДДС
counterpartyRefNoRef_Key контрагента (для расчётов)

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnly=false, destructive=false and openWorld=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the created document is left unposted, posting requires a separate call, and the preview/confirm cycle with operationId prevents duplicates. Much of the dry-run detail, however, is duplicated from the confirm parameter's schema text rather than newly contributed.

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

Conciseness4/5

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

Front-loaded with the identity and the unposted-state caveat, then the mandatory field, then the contract nuance. The telegraphic, fragment-heavy style ('НЕПРОВЕДЁННЫЙ; провести — post_document') is dense but efficient; nothing is wasted, though the 'dry-run/confirm' tail is a redundant pointer to the confirm schema text.

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

Completeness4/5

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

With 13 parameters, an output schema, and full schema descriptions, the description covers the things structured fields cannot: mutation semantics, the unposted state, the posting sibling, and the mandatory operation type. It leaves the cash/contract selection prerequisites (which refs are required for which operationKind) and permission/auth expectations implicit.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it enumerates valid operationKind values ('ОплатаПоставщику', 'ВыдачаПодотчетномуЛицу', etc.) that the schema only says 'не угадывать' for, and explains the contract settlement breakdown logic behind contractRef/counterpartyRef. It still doesn't explain how the 'сумма взаиморасчётов' maps onto a concrete parameter.

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

Purpose5/5

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

Names a specific verb and a specific 1C document type (Расходный кассовый ордер — cash disbursement), and clarifies the direction of money flow ('выдача наличных из кассы'), which implicitly separates it from the sibling create_cash_receipt. It also states the resulting document state ('НЕПРОВЕДЁННЫЙ') and points at post_document for the follow-up step.

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

Usage Guidelines4/5

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

Explicitly routes the agent to post_document for posting and mandates the dry-run/confirm workflow, plus warns that operationKind is mandatory and must not be guessed. It does not, however, contrast this tool with the nearby alternatives (create_payment, create_payout_order, create_bank_writeoff), so the choice between cash vs bank disbursement is left to inference from the title.

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

write.money.create_cash_receiptСоздать приходный кассовый ордер (ПКО)A

Создаёт «Приходный кассовый ордер» (приём наличных в кассу). НЕПРОВЕДЁННЫЙ; провести — post_document. Вид операции ОБЯЗАТЕЛЕН (напр. «ОплатаПокупателя», «ПрочийПриход», «ПолучениеНаличныхВБанке», «ВозвратОтПодотчетногоЛица»). Для оплаты по договору заполняется расшифровка: счёт расчётов — по настройке договора, источник виден в предпросмотре, сумма взаиморасчётов — для рублёвого договора. dry-run/confirm.

NameRequiredDescriptionDefault
dateNoДата YYYY-MM-DD (по умолчанию сегодня)
basisNoОснование (текст)
amountYesСумма
cashRefNoRef_Key кассы организации (СчетКасса)
commentNoКомментарий
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
operationKindYesВид операции (ОБЯЗАТЕЛЬНО, не угадывать)
cashflowItemRefNoRef_Key статьи ДДС
counterpartyRefNoRef_Key контрагента (для расчётов)

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so safety is partly covered. The description adds genuine behavioral context: the document is created unposted, and a dry-run/confirm protocol with operationId re-use prevents duplicates on retry. It does not state required permissions or what happens to the cash balance, but that is largely derivable from creation semantics.

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

Conciseness5/5

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

Four tightly packed sentences, front-loaded with what is created and its unposted state, then the mandatory operation kind, then the settlement nuance, then the dry-run/confirm contract. No filler or repetition.

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

Completeness4/5

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

With 13 parameters, an output schema present, and annotations supplied, the description covers the essential workflow risks: posting is separate, operationKind must not be guessed, and confirmation requires reusing operationId. Minor gaps like default cash account or database selection are already handled by the schema.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description still adds value by enumerating operationKind categories («ОплатаПокупателя», «ПрочийПриход», …) and by explaining that for contract payments the settlement account comes from the contract settings and the settlement amount applies to ruble contracts. That domain meaning is not present in the schema descriptions.

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

Purpose5/5

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

States a specific verb and resource in both Russian and English terms («Создаёт «Приходный кассовый ордер» (приём наличных в кассу)») and immediately separates it from the posting step via 'НЕПРОВЕДЁННЫЙ; провести — post_document'. An agent can distinguish this from write.money.create_cash_payment and post_document without reading schemas.

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

Usage Guidelines4/5

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

Gives the key alternative explicitly (post_document for posting) and mandates that operationKind be chosen deliberately, with example values. It also describes when the contract settlement breakdown applies. It stops short of contrasting with the sibling cash/payment creators (create_cash_payment, create_payment), which is the main remaining routing ambiguity.

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

write.money.create_paymentСоздать оплату от покупателяA

Создаёт «Поступление на расчётный счёт» (оплата от покупателя) на сумму, по контрагенту и договору. Документ НЕПРОВЕДЁННЫЙ; при проведении проводка Дт 51 Кт 62 (счёт расчётов — по настройке договора, источник виден в предпросмотре). Сумма взаиморасчётов для рублёвого договора заполняется сама; для договора в валюте или у.е. курс укажите в 1С, иначе 1С проведёт оплату без проводок. Банковский счёт организации берётся по названию или первый. dry-run/confirm.

NameRequiredDescriptionDefault
dateNoДата YYYY-MM-DD (по умолчанию сегодня)
amountYesСумма оплаты
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefYesRef_Key договора
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
operationKindNoВид операции (ВидОперации). Обычно НЕ задавайте: по умолчанию «ОплатаПокупателя» или значение из настройки базы (ODATA_ACCOUNTING_CONFIG, operationKinds.customerPayment). Нужен, только если в конфигурации другое значение — не угадывайте.
orgBankAccountNoБанковский счёт организации — печатается в документе как реквизиты для оплаты. Название/номер счёта (напр. «Сбербанк» или «40802…») либо Ref_Key. Без указания берётся ОСНОВНОЙ счёт организации.
counterpartyRefYesRef_Key покупателя

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, destructive=false, openWorld=true) it discloses that the created document is left unposted, that posting yields Дт 51 Кт 62 with the settlement account derived from contract settings, that currency/u.e. contracts require a rate in 1C or the payment posts without entries, and that the org bank account defaults to the main one. These are exactly the mutation consequences an agent cannot infer from structured fields.

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

Conciseness4/5

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

The core purpose and posting behavior are front-loaded, and each subsequent sentence carries distinct information (unposted state, currency caveat, account defaulting). The clipped trailing 'dry-run/confirm.' is terse and slightly ambiguous, and the dense accounting jargon makes it heavier than ideal.

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

Completeness5/5

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

For a 10-parameter mutation with an output schema, the description covers what matters: what document is created, its unposted state, the posting produced, currency-rate pitfalls, and default resolution for organization/bank account/default database. The dry-run/confirm protocol is fully spelled out, leaving no operational gap for correct invocation.

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

Parameters3/5

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

Schema coverage is already 100%, so the baseline is 3. The description adds modest value on defaults (bank account taken by name or the first/main one, amounts auto-filled for rouble contracts) but does not extend most individual parameters beyond what the schema text already says.

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

Purpose5/5

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

The description names a concrete verb and an exact 1C document type («Поступление на расчётный счёт», оплата от покупателя) produced from amount, counterparty and contract. That resource is distinguishable from the sibling write.money.create_bank_writeoff (outgoing) and write.money.create_cash_receipt (cash desk) without opening any schema.

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

Usage Guidelines4/5

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

It gives clear operating conditions: always run dry-run first, get user consent, then resend with operationId and identical arguments, and retry confirmation with the same id after a timeout. It also warns when to set operationKind ('обычно НЕ задавайте… не угадывайте') and when a rate must be supplied for currency contracts. It stops short of explicitly naming which sibling tool to pick instead for cash or outgoing payments.

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

write.money.create_payout_orderСоздать платёжное поручение (исходящее) контрагентуA

Создаёт документ «Платёжное поручение» — исходящую выплату контрагенту (напр. оплата по агентскому договору / услугам, зеркало платёжки, уже ушедшей в банк). Документ ВСЕГДА создаётся НЕПРОВЕДЁННЫМ (Posted=false) — эта операция намеренно не проводит документ, проведение делайте отдельно через post_document, если вообще нужно. Номер (number) — задаётся явно вызывающим (обычно чтобы совпасть с номером уже отправленной банковской платёжки), не генерируется автоматически. По умолчанию dry-run (confirm=false); создание — при confirm=true. Счёт организации и валюта — резолвятся автоматически, если не заданы.

NameRequiredDescriptionDefault
dateNoДата документа YYYY-MM-DD (по умолчанию сегодня)
amountYesСумма документа
numberYesНомер документа — задайте явно (напр. чтобы совпасть с номером банковской платёжки). 1С автонумерует новые документы только если Number не передан вовсе — но здесь он обязателен.
commentNoКомментарий к документу
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
vatRateNoСтавка НДСБезНДС
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
payerInnNoИНН плательщика (по умолчанию — ИНН организации)
priorityNoОчередность платежа (ОчередностьПлатежа)
payerTextNoТекст плательщика (по умолчанию — имя организации)
contractRefNoRef_Key договора с контрагентом (ДоговорКонтрагента_Key)
currencyRefNoRef_Key валюты документа; без указания — рубль (643)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
purposeTextYesНазначение платежа (НазначениеПлатежа)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
recipientInnNoИНН получателя
recipientKppNoКПП получателя
operationKindNoВид операции (ВидОперации), напр. ОплатаПоставщикуОплатаПоставщику
recipientTextYesТекст получателя — как печатается в платёжке (ТекстПолучателя)
orgBankAccountNoБанковский счёт организации — печатается в документе как реквизиты для оплаты. Название/номер счёта (напр. «Сбербанк» или «40802…») либо Ref_Key. Без указания берётся ОСНОВНОЙ счёт организации.
responsibleRefNoRef_Key ответственного (Ответственный_Key)
cashflowItemRefNoRef_Key статьи движения денежных средств (СтатьяДвиженияДенежныхСредств_Key)
counterpartyRefYesRef_Key контрагента-получателя (из find_counterparty)
counterpartyAccountRefNoRef_Key банковского счёта контрагента (СчетКонтрагента_Key)

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A3.8/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description adds real behavioral context: the document is ALWAYS created unposted (Posted=false), number is never auto-generated and must be supplied, and org account/currency are resolved automatically. That materially changes how an agent should behave. It stops short of covering idempotency/duplicate risk or the preview result shape, but the schema covers those.

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

Conciseness4/5

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

Five sentences, front-loaded with the purpose and then the critical behavioral caveats (unposted, explicit number, dry-run default). Some content overlaps the schema, but nothing is filler and the ordering is sensible.

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

Completeness5/5

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

For a 24-parameter, high-blast-radius creation tool with full annotations, 100% schema coverage, and an output schema, the description covers exactly the non-obvious parts: non-posting behavior, mandatory manual numbering, dry-run default, and automatic account/currency resolution. An agent has what it needs to call this safely.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already documents confirm, operationId, number, and the auto-resolution defaults in detail, so the description's parameter notes largely restate structured data. It adds no syntax, format, or validation meaning beyond what the schema supplies — baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource — creating a "Платёжное поручение" outbound payment document to a counterparty — and clarifies the intended scenario (mirroring a payment order already sent to the bank, agency/service payments). It does not, however, distinguish this tool from close siblings such as write.money.create_bank_writeoff or write.money.create_payment, so an agent cannot pick among them from this text alone.

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

Usage Guidelines3/5

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

It names post_document as the alternative for posting, which is genuinely useful routing guidance, and specifies the dry-run/confirm protocol. But the most consequential choice — this tool versus the other money-creation siblings (create_payment, create_bank_writeoff, create_cash_payment) — is never addressed, leaving selection ambiguous.

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

write.operation.statusСтатус операции записиA

Состояние операции записи по operationId из предпросмотра. После потери ответа созданный объект сверяется по назначенной ссылке (старые операции — по метке), строки документа — по числу строк, настройка регистра — по точному составному ключу и отпечатку проверяемых полей. Совпадение фиксирует успех без повторной отправки. Для изменения группы, Post/Unpost и неподтверждённого результата регистра ответ unverifiable удерживает повтор и требует ручной сверки. Отсутствие объекта само по себе не разрешает новый запрос: 1С могла ещё выполнять его, сколько бы времени ни прошло, — ответ not_found. Закрыть операцию как not_applied можно только с markNotApplied=true после того, как человек сам сверил базу. Новый предпросмотр допустим после not_applied либо rejected с устранённой причиной. Ничего не записывает в 1С.

NameRequiredDescriptionDefault
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
operationIdYesoperationId из предпросмотра создания
markNotAppliedNoТолько по явному решению человека, который сам сверил базу 1С и убедился, что записи нет. Сверка всё равно выполняется: найденный объект фиксируется как успех. Не раньше чем через 120 с после попытки.

Output Schema

NameRequiredDescription
refNo
noteNo
numberNo
statusYes
databaseNo
entitySetNo
lastErrorNo
operationIdYes

TDQS

A4.8/5.0
Behavior5/5

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

The annotations only say that this operation is not read-only and does not destroy data. On top of that, the description explains the verification strategy for each object type (assigned link, label, line count, composite key plus field fingerprint), the meaning of the unverifiable and not_found outcomes, and the rule that 'a missing object does not by itself authorize a retry because 1C may still be executing.' It also clarifies that nothing is written into 1C. This is exactly the behavioral context the annotations do not provide.

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

Conciseness4/5

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

Each sentence adds a distinct behavioral fact, and the central point comes first: status lookup, then verification rules, then the retry and close-out rules. The text is dense, and the multi-clause sentences about register settings and document lines require careful reading, but nothing is redundant.

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

Completeness5/5

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

The definition covers verification logic, the possible outcomes, the guardrails against duplicate writes, and the close-out procedure. An output schema exists, so return shapes need no explanation, yet the description still explains what the key statuses mean. This is sufficient for an agent to use this tool safely without further documentation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline would be 3, but the description adds workflow meaning: operationId must come from a preview; markNotApplied is legitimate only after a human has checked the database; and a successful match is recorded as success even if the operation is marked not applied. The 120-second floor lives in the schema rather than in the description, but the surrounding reasoning is still supplied.

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

Purpose5/5

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

The opening sentence names a specific verb and resource: the state of a write operation, identified by the operationId returned by a preview. This distinguishes it from the many sibling creation tools, which perform the actual writes. An agent can tell from the first line that this is a read-side status check on an already-submitted write operation.

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

Usage Guidelines5/5

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

The description states explicitly when this tool must be used (after a lost response to verify whether the object was created), when replies are inconclusive (unverifiable, not_found), and when a new preview is allowed (only after not_applied or a rejected result whose cause has been fixed). It also states the prerequisite for markNotApplied (a human has manually verified the 1C database). Few alternatives are named by their own names, but the workflow position is unambiguous.

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

write.purchase.create_purchaseСоздать поступление от поставщикаA

Создаёт документ «Поступление товаров и услуг» (закупка у поставщика) с табличной частью «Товары». Документ НЕПРОВЕДЁННЫЙ; провести — вручную в 1С или post_document (тогда 1С сформирует проводки Дт 41/19 Кт 60; счёт расчётов — по настройке договора, источник виден в предпросмотре). Позиции могут нести content (Содержание строки) — для услуг вроде доставки. По умолчанию dry-run; создание — при confirm=true. Контрагент — поставщик, договор — вида «СПоставщиком».

NameRequiredDescriptionDefault
dateNoДата документа YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции документа
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
warehouseNoНазвание склада (если в базе несколько)
contractRefNoRef_Key договора (необязательно)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
sumIncludesVatNoСумма включает НДС
counterpartyRefYesRef_Key контрагента

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only establish non-read-only, open-world, non-destructive behavior, while the description adds substantial operational context: the document is created unposted, post_document generates Dt 41/19 Kt 60 entries, settlement account depends on contract settings, and dry-run is the default. It also explains that service lines should carry content, which is valuable behavioral guidance.

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

Conciseness5/5

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

The description is four sentences and front-loads the core action before covering posting behavior, line content, dry-run/confirm, and supplier/contract constraints. It is dense but every sentence adds useful information without filler.

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

Completeness4/5

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

The tool is complex with 10 parameters and nested line items, but it has an output schema, full schema descriptions, and annotations. The description covers the key non-obvious workflow points (dry-run, confirm, unposted document, posting follow-up, supplier/contract rule), leaving routine parameter details to the schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds semantic constraints beyond the schema: the counterparty must be a supplier and the contract should be of type «СПоставщиком». It also reinforces that line content is especially relevant for service lines such as delivery.

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

Purpose5/5

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

The description opens with a specific verb and resource: it creates the document «Поступление товаров и услуг» (purchase from a supplier) with a «Товары» table section. It explicitly states the document is unposted and points to post_document for posting, which clearly separates this creation tool from the posting sibling.

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

Usage Guidelines4/5

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

It gives clear usage context: this is for a supplier purchase receipt, posting is done manually or via post_document, and creation requires confirm=true after a dry-run. It does not explicitly compare or exclude sibling purchase document tools such as create_received_invoice or create_supplier_invoice.

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

write.purchase.create_received_invoiceСоздать счёт-фактуру полученныйA

Создаёт «Счёт-фактура полученный» НА ОСНОВАНИИ поступления товаров и услуг. Реквизиты наследуются от основания; дату входящего счёта-фактуры продавца указывают вручную (в поступлении её нет). НЕПРОВЕДЁННЫЙ; провести — post_document. dry-run/confirm.

NameRequiredDescriptionDefault
dateNoДата регистрации YYYY-MM-DD (по умолчанию сегодня)
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
incomingDateNoДата входящего счёта-фактуры продавца YYYY-MM-DD
operationCodeNoКод вида операции (по умолчанию 01)
baseDocumentRefYesRef_Key документа-основания (поступление товаров и услуг)
baseDocumentEntityNoИмя набора документа-основания, если это не «Поступление…»

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare it is a non-read-only, non-destructive, open-world write; the description adds substantive behavior beyond that — the created document is left unposted, most attributes are inherited from the base document, and the seller's incoming invoice date must be supplied manually because it is absent on the receipt. It does not discuss failure modes or required permissions, and the dry-run/confirm mechanics live mainly in the schema.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and the required basis, then the inheritance rule, then the posting state and alternative. Nothing is superfluous and the key constraint (unposted; use post_document) is stated in a scannable clause.

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

Completeness4/5

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

With annotations present, all eight parameters documented, and an output schema available, the description covers what an agent needs to call it correctly. Minor gaps remain: it does not indicate how to obtain the baseDocumentRef (e.g., via document search tools) or what happens when baseDocumentEntity is omitted.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by explaining that requisites inherit from the base document and that incomingDate exists only because the receipt lacks it. That explains the intent behind two of the parameters rather than merely restating them.

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

Purpose5/5

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

Names a specific verb and resource ('Создаёт «Счёт-фактура полученный»') and pins the required basis ('НА ОСНОВАНИИ поступления товаров и услуг'), so an agent knows exactly what artifact is produced and from what source. It also explicitly contrasts with the sibling post_document by stating the result is unposted.

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

Usage Guidelines4/5

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

Clear usage context: create from a goods/services receipt, then use post_document to post. It does not explicitly say when to choose this over closely related siblings such as create_supplier_invoice or create_purchase, leaving that distinction to the agent's inference.

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

write.purchase.create_supplier_invoiceЗарегистрировать счёт от поставщикаA

Создаёт документ «Счёт на оплату поставщика» — регистрирует входящий счёт-основание для оплаты (подходит для предоплаты, когда товар ещё не пришёл). Проводок НЕ делает (счёт не проводится), счета учёта не нужны. Табличная часть «Товары» вмещает и товары, и услуги (напр. доставку — задайте content/Содержание). Реквизиты входящего счёта: incomingNumber/incomingDate. По умолчанию dry-run; создание — при confirm=true. Контрагент — поставщик, договор — вида «СПоставщиком».

NameRequiredDescriptionDefault
dateNoДата документа YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции счёта (товары и услуги в одной таблице)
commentNoКомментарий к документу
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора (вид «СПоставщиком»)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
incomingDateNoДата входящего счёта YYYY-MM-DD
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
incomingNumberNoНомер входящего счёта поставщика
sumIncludesVatNoСумма включает НДС
counterpartyRefYesRef_Key контрагента-поставщика
supplierBankAccountRefNoRef_Key банковского счёта поставщика (БанковскийСчетКонтрагента)

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the annotations (non-readonly, non-destructive, open-world), the description discloses that no postings are generated and no accounting accounts are required, and that the default call is a dry-run requiring confirm=true to write. It does not discuss idempotency beyond the operationId note carried in the schema, or permission requirements.

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

Conciseness4/5

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

Purpose and the key constraint (no postings) are front-loaded, and every sentence carries substantive information about behavior or prerequisites. The density of parentheticals makes it slightly harder to scan than it could be, but there is no filler.

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

Completeness4/5

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

With 13 parameters but only 2 required, full schema coverage, and an output schema, the description covers the critical operational points: dry-run/confirm, supplier-type counterparty and contract, and goods-vs-services lines. Nothing major is missing for correct invocation, though the dry-run user-consent protocol could be stated more prominently.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already documents confirm, operationId, content, and the «СПоставщиком» contract requirement in detail. The description reinforces a few of these (incomingNumber/incomingDate, content for services) but adds little meaning that the schema does not already carry, so the baseline 3 applies.

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

Purpose4/5

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

The description opens with a specific verb and resource ("Создаёт документ «Счёт на оплату поставщика»") and scopes it as an incoming invoice-basis for payment used for prepayment before goods arrive. It also states what the tool is not (no postings, no accounting accounts), which separates it from posting and received-invoice siblings, though it never names those siblings explicitly.

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

Usage Guidelines4/5

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

It gives a concrete use case (prepayment, goods not yet delivered) and spells out the dry-run → confirm workflow, plus the prerequisite that the counterparty be a supplier and the contract of type «СПоставщиком». Missing is an explicit "use create_received_invoice instead when…" routing statement against the closest sibling.

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

write.sales.create_actСоздать акт (реализация услуг)A

Создаёт «Реализация (акт, накладная)» с табличной частью УСЛУГИ (без склада/остатков). Документ НЕПРОВЕДЁННЫЙ; проводки при проведении Дт 62 Кт 90.01 (без 41; счёт расчётов — по настройке договора, источник виден в предпросмотре). ВАЖНО для услуг: задавайте content в строке — это «Содержание», текст, который печатается в акте и УПД (номер приложения, номер договора, период оказания). 1С его не заполнит. Счета доходов/расходов при необходимости задаются явно (напр. 90.01.2 / 90.02.2). dry-run/confirm. Контрагент — покупатель; позиции — услуги-номенклатура.

NameRequiredDescriptionDefault
dateNoДата YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции-услуги
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
incomeAccountNoСчёт доходов для ВСЕХ строк (напр. «90.01.2»); счёт в строке важнее
operationKindNoВид операции (ВидОперации). Обычно НЕ задавайте: по умолчанию «Услуги» или значение из настройки базы (ODATA_ACCOUNTING_CONFIG, operationKinds.salesAct). Нужен, только если в конфигурации другое значение — не угадывайте.
expenseAccountNoСчёт расходов для ВСЕХ строк (напр. «90.02.2»); счёт в строке важнее
orgBankAccountNoБанковский счёт организации — печатается в документе как реквизиты для оплаты. Название/номер счёта (напр. «Сбербанк» или «40802…») либо Ref_Key. Без указания берётся ОСНОВНОЙ счёт организации.
sumIncludesVatNoСумма включает НДС
counterpartyRefYesRef_Key покупателя

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that the document is created unposted, what postings it will produce when posted, how settlement accounts are derived, and that the content field is critical because 1C will not fill it. It also explains the preview/confirm workflow and avoids contradiction with openWorldHint or destructiveHint=false.

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

Conciseness4/5

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

The description is front-loaded with the core action and is appropriately sized for a 13-parameter write tool. It is dense and semicolon-heavy, but every sentence conveys operational information without obvious filler.

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

Completeness5/5

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

Given the output schema and full input-schema descriptions, the definition covers the key behavioral context an agent needs: unposted status, posting behavior, content importance, account override notes, and the dry-run/confirm safety workflow. No critical gap remains for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already carries most parameter meaning. The description reinforces critical fields such as content, income/expense accounts, and buyer semantics, and adds a note about contract settlement settings being visible in preview, but most parameter detail is duplication of the schema.

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

Purpose4/5

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

The description names a specific verb and document type: creates «Реализация (акт, накладная)» with a services table and explicitly excludes warehouse/stock handling. That distinguishes it from warehouse-oriented siblings, but it does not explicitly differentiate from the closely named sibling write.sales.create_services_act.

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

Usage Guidelines4/5

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

It provides clear context for when this tool applies: services act, no warehouse, buyer counterparty, service nomenclature lines, and dry-run/confirm workflow. It does not name alternative tools or spell out when-not-to-use cases, so guidance is strong but not exhaustive.

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

write.sales.create_invoiceСоздать счёт покупателюA

Создаёт счёт на оплату покупателю (документ) с табличной частью «Товары». Документ создаётся НЕПРОВЕДЁННЫМ (черновик) — провести можно вручную в 1С или инструментом post_document. Для услуг задавайте content в строке — это «Содержание», именно оно печатается в счёте. По умолчанию предпросмотр (dry-run); создание — при confirm=true. Контрагент и (опц.) договор — по Ref_Key; позиции — по Ref_Key номенклатуры.

NameRequiredDescriptionDefault
dateNoДата документа YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции счёта
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора (необязательно)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
orgBankAccountNoБанковский счёт организации — печатается в документе как реквизиты для оплаты. Название/номер счёта (напр. «Сбербанк» или «40802…») либо Ref_Key. Без указания берётся ОСНОВНОЙ счёт организации.
sumIncludesVatNoСумма включает НДС
counterpartyRefYesRef_Key контрагента-покупателя

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), it discloses the key behavioral trait that the record is created as an unposted draft, not a posted document. It also explains the dry-run-by-default flow, the confirm/operationId idempotency contract, and that the main bank account is used when none is given — exactly the mutation context an agent needs.

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

Conciseness4/5

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

The description is front-loaded with purpose, then draft status, then the dry-run workflow, which is the right order for an agent. A few clauses (the 'content' explanation) restate schema text, but nothing is wasted or misleading.

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

Completeness5/5

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

With 10 parameters, a nested lines array, an output schema, and openWorldHint=true, the description still covers the essential gaps: draft-vs-posted state, the two-step confirm flow, idempotency via operationId, and defaulting rules. Nothing an agent needs to invoke it safely is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds genuine usage-level meaning on top by tying 'content' to service lines and the printed invoice/УПД text, and by stating that counterparty/contract are referenced by Ref_Key. Most other parameters are left to the already-rich schema.

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

Purpose5/5

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

The description names a specific verb and resource (создаёт счёт на оплату покупателю, документ с табличной частью «Товары») and immediately frames it as a draft, which separates it from posting tools. It also implicitly distinguishes the invoice (счёт на оплату) from the issued invoice (create_issued_invoice) by describing the printable 'Содержание' semantics.

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

Usage Guidelines4/5

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

It gives clear operating guidance: the document is created unposted and can be posted later in 1C or via post_document, and for service lines you must fill 'content'. It does not explicitly say when to pick this over sibling write.sales.create_issued_invoice or create_shipment, so the alternative-selection guidance is partial.

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

write.sales.create_issued_invoiceСоздать счёт-фактуру выданныйA

Создаёт «Счёт-фактура выданный» НА ОСНОВАНИИ реализации (или иного документа отгрузки). Реквизиты (организация, контрагент, договор, суммы, НДС) наследуются от документа-основания. НЕПРОВЕДЁННЫЙ; провести — post_document. dry-run/confirm.

NameRequiredDescriptionDefault
dateNoДата и дата выставления YYYY-MM-DD (по умолчанию сегодня)
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
operationCodeNoКод вида операции (по умолчанию 01)
baseDocumentRefYesRef_Key документа-основания (реализация товаров и услуг)
baseDocumentEntityNoИмя набора документа-основания, если это не «Реализация…» (напр. Document_ОтчетКомитентуОПродажах)

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only declare write/non-destructive/open-world; the description adds materially more: the created document is unposted, requisites are inherited rather than supplied, and the operation follows a dry-run/confirm flow. Permissions, numbering behavior, and duplicate handling are not covered, keeping it below a 5.

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

Conciseness4/5

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

Four short sentences, front-loaded with the create action and basis, then the unposted state, then the confirm protocol. No filler; the only mild inefficiency is that 'dry-run/confirm' at the end duplicates what the confirm parameter description already covers in detail.

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

Completeness5/5

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

For a 7-parameter mutation tool with full schema coverage, an output schema, and populated annotations, the description supplies the essential missing pieces: the mandatory base document, the inherited-field model, and the post-creation step. An agent has enough to call it correctly in a dry-run-first workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by stating that organization, counterparty, contract, amounts, and VAT are inherited from the base document — explaining why no such parameters exist and reinforcing that baseDocumentRef is the controlling input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Создаёт «Счёт-фактура выданный»') and states the creating basis (реализация or another shipment document), which lets an agent distinguish it from generic invoice-creation siblings. It does not explicitly contrast itself with write.sales.create_invoice or write.purchase.create_received_invoice, so differentiation relies partly on the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use context (must be based on a shipment/realization document) and an explicit next step ('НЕПРОВЕДЁННЫЙ; провести — post_document'), plus the dry-run/confirm protocol. It stops short of naming exclusion cases, e.g. when to use create_invoice instead of an issued invoice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write.sales.create_services_actСоздать акт об оказании услугA

Создаёт «Акт об оказании производственных услуг» (услуги с учётом доходов/расходов по номенклатурной группе). Отличается от create_act тем, что требует номенклатурную группу (субконто счёта 90.01) — она НЕ угадывается. Проводки Дт 62 Кт 90.01, НДС 90.03 (счёт расчётов — по настройке договора, источник виден в предпросмотре). НЕПРОВЕДЁННЫЙ; провести — post_document. dry-run/confirm.

NameRequiredDescriptionDefault
dateNoДата YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции-услуги
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
contractRefNoRef_Key договора
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
incomeAccountNoСчёт доходов для ВСЕХ строк (напр. «90.01.2»); счёт в строке важнее
expenseAccountNoСчёт расходов для ВСЕХ строк (напр. «90.02.2»); счёт в строке важнее
sumIncludesVatNoСумма включает НДС
counterpartyRefYesRef_Key покупателя
nomenclatureGroupRefYesRef_Key номенклатурной группы (ОБЯЗАТЕЛЬНО, субконто счёта доходов 90.01 — не угадывается)

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say this is a non-read, open-world, non-destructive write. The description adds substantive behavior beyond that: the document is created unposted, the postings generated (Дт 62 Кт 90.01, VAT 90.03), that the settlement account comes from contract settings and is visible in the preview, and the dry-run/confirm safety workflow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, front-loaded with the distinguishing constraint, then accounting behavior, then document state, then the confirm workflow. No filler and no repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter write tool with an output schema, the description covers everything an agent needs before calling: what it creates, the required non-guessable key, resulting postings, that the result is unposted, and the dry-run/confirm protocol. Return values are correctly left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description still adds meaning: it stresses that nomenclatureGroupRef is mandatory and explicitly NOT inferred, and it explains that income/expense accounts fall back to the «Счета учёта номенклатуры» register and then to 90.01.1/90.02.1.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource («Создаёт «Акт об оказании производственных услуг»») and immediately names the distinguishing characteristic versus the sibling create_act: the mandatory nomenclature group (subconto of account 90.01). An agent can tell this apart from create_act without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It routes clearly: use this instead of create_act when a nomenclature group is required, use post_document to post the result, and always dry-run before confirming. What is missing is an explicit exclusion — e.g. when to prefer create_shipment or create_invoice for goods versus services — so the guidance is clear but not fully bounded.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write.sales.create_shipmentСоздать реализацию покупателюA

Создаёт документ «Реализация товаров и услуг» (отгрузка покупателю) с табличной частью «Товары». Документ НЕПРОВЕДЁННЫЙ; провести — вручную в 1С или post_document (тогда 1С сформирует проводки Дт 62 Кт 90, Дт 90 Кт 41 и др.; счёт расчётов — по настройке договора, источник виден в предпросмотре). Позиции могут нести content (Содержание строки — печатается в УПД) и свои счета доходов/расходов. По умолчанию dry-run; создание — при confirm=true. Контрагент — покупатель, договор — вида «СПокупателем».

NameRequiredDescriptionDefault
dateNoДата документа YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции документа
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
warehouseNoНазвание склада (если в базе несколько)
contractRefNoRef_Key договора (необязательно)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
incomeAccountNoСчёт доходов для ВСЕХ строк документа — код как в 1С (напр. «90.01.2») или Ref_Key. Счёт, заданный в строке, важнее. Без указания — из регистра «Счета учёта номенклатуры», иначе 90.01.1.
expenseAccountNoСчёт расходов для ВСЕХ строк документа — код как в 1С (напр. «90.02.2») или Ref_Key. Счёт, заданный в строке, важнее. Без указания — из регистра «Счета учёта номенклатуры», иначе 90.02.1.
orgBankAccountNoБанковский счёт организации — печатается в документе как реквизиты для оплаты. Название/номер счёта (напр. «Сбербанк» или «40802…») либо Ref_Key. Без указания берётся ОСНОВНОЙ счёт организации.
sumIncludesVatNoСумма включает НДС
counterpartyRefYesRef_Key контрагента

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing that the created document is left unposted, what posting would produce (Дт 62 Кт 90, Дт 90 Кт 41), where the settlement account comes from, and that positions can carry content and per-line accounts. It also documents the dry-run default and operationId-based idempotent retry, which is critical for a write tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the unposted/dry-run caveats, and every sentence carries operational information. The parenthetical accounting-entry digression is useful but makes the paragraph dense and slightly harder to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter write tool with an output schema, the description covers the mutation semantics, the preview/confirm workflow, idempotency on retry, and the downstream posting path. An agent has everything needed to invoke it safely without opening other tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents every parameter, including content, per-line accounts and operationId. The description only reiterates that lines may carry content and income/expense accounts and that the contract must be of type «СПокупателем», adding little semantics beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names the exact document type created («Реализация товаров и услуг», shipment to buyer) and its tabular section «Товары», which separates it from sibling sales tools such as create_issued_invoice, create_act and create_services_act. The verb+resource pair is unambiguous and the buyer/contract-type constraint is stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says the document is created unposted and routes posting to manual 1C action or the post_document sibling, and states the dry-run-first / confirm=true protocol. It does not contrast against create_issued_invoice or create_act (invoice vs. shipment), so the agent must infer the choice between sales document types.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write.warehouse.create_inventoryСоздать инвентаризацию товаровA

Создаёт документ «Инвентаризация товаров на складе» (сверка факт/учёт). Документ НЕ проводится (движений не делает) — служит основанием для оприходования/списания. dry-run/confirm. Для каждой позиции: фактическое и учётное количество.

NameRequiredDescriptionDefault
dateNoДата YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции инвентаризации
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
warehouseNoНазвание склада (если несколько)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false and destructiveHint=false; the description adds the substantive behavioral fact that the document is NOT posted and creates no movements, so the agent knows this is a non-posting write. That is meaningfully more than the annotations provide, though it omits error/permission behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short clauses, front-loaded with the core purpose and the not-posted caveat. The fragment 'dry-run/confirm' is cryptic shorthand that would read better as a full sentence, but nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full schema coverage, the description need only convey purpose and the non-posting/dry-run behavior, which it does. Minor gap: it says nothing about warehouse/organization scoping or what the resulting document reference is, but the schema and output schema carry those.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter, including the detailed confirm/operationId protocol. The line 'Для каждой позиции: фактическое и учётное количество' merely restates the lines item fields, adding no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Создаёт документ «Инвентаризация товаров на складе»') and clarifies the reconciliation scope (fact vs. accounting). It also implicitly separates itself from the warehouse siblings create_surplus/create_writeoff by stating the document is only a basis for оприходование/списание, though it never names those siblings directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage signal in the description is the terse 'dry-run/confirm' token, which hints at the preview-then-commit workflow but does not explain it. The actual when/how guidance (show preview first, get consent, reuse operationId) lives in the schema's 'confirm' field, not in the description itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write.warehouse.create_return_from_customerСоздать возврат товаров от покупателяA

Создаёт документ «Возврат товаров от покупателя» с табличной частью «Товары». НЕПРОВЕДЁННЫЙ; провести — post_document (проводки сторнируют реализацию: Дт 90.02 Кт 41, Дт 62 Кт 90.01 со знаком минус; счёт расчётов — по настройке договора, источник виден в предпросмотре). dry-run/confirm. Контрагент — покупатель.

NameRequiredDescriptionDefault
dateNoДата документа YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции документа
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
warehouseNoНазвание склада (если в базе несколько)
contractRefNoRef_Key договора (необязательно)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
incomeAccountNoСчёт доходов для ВСЕХ строк документа — код как в 1С (напр. «90.01.2») или Ref_Key. Счёт, заданный в строке, важнее. Без указания — из регистра «Счета учёта номенклатуры», иначе 90.01.1.
expenseAccountNoСчёт расходов для ВСЕХ строк документа — код как в 1С (напр. «90.02.2») или Ref_Key. Счёт, заданный в строке, важнее. Без указания — из регистра «Счета учёта номенклатуры», иначе 90.02.1.
sumIncludesVatNoСумма включает НДС
counterpartyRefYesRef_Key контрагента

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly=false, destructive=false, openWorld=true) the description adds real value: the document is unposted, the postings reverse the sale (Дт 90.02 Кт 41, Дт 62 Кт 90.01 with negative sign), and the settlement account comes from the contract with its source visible in the preview. The dry-run/confirm requirement is also disclosed. However, it says nothing about side effects on stock balances, duplicate protection beyond operationId, or what the preview contains, so it is strong but not exhaustively transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with what is created, then the posting/workflow constraints. Dense accounting jargon (Дт/Кт entries) in the middle sentence is useful but makes the block harder to scan; nothing is outright wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation with an output schema and annotations, the description covers creation semantics, posting path, and the confirmation workflow. What is missing is the relationship to an originating sale/shipment document and warehouse stock impact, which an agent would likely want before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline would be 3. The description still adds meaning by clarifying that counterpartyRef must be a buyer and that the settlement account is derived from the contract settings rather than passed in. It does not explain the line-level account overrides or sumIncludesVat, but those are already well documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: creates the document «Возврат товаров от покупателя» with the «Товары» tabular section, and 'Контрагент — покупатель' implicitly separates it from the sibling write.warehouse.create_return_to_supplier. It stops short of naming that sibling explicitly, so the differentiation relies on the agent knowing the Russian document names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says the document is created НЕПРОВЕДЁННЫЙ and routes posting to post_document, and it spells out the dry-run → confirm sequence. It does not cover when to prefer this over create_return_to_supplier (e.g. buyer vs supplier context), leaving that one inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write.warehouse.create_return_to_supplierСоздать возврат товаров поставщикуA

Создаёт документ «Возврат товаров поставщику» с табличной частью «Товары». НЕПРОВЕДЁННЫЙ; провести — post_document (проводки сторнируют поступление: Дт 60 Кт 41/19; счёт расчётов — по настройке договора, источник виден в предпросмотре). dry-run/confirm. Контрагент — поставщик.

NameRequiredDescriptionDefault
dateNoДата документа YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции документа
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
warehouseNoНазвание склада (если в базе несколько)
contractRefNoRef_Key договора (необязательно)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
sumIncludesVatNoСумма включает НДС
counterpartyRefYesRef_Key контрагента

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing that the document is left unposted, that posting reverses the receipt with specific entries (Дт 60 Кт 41/19), and that the settlement account derives from the contract settings and is visible in the preview. Missing only a note on duplicate-risk/operationId reuse, which lives in the schema rather than the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the object being created, then constraints, then the posting alternative, then the workflow gate. It is telegraphic and dense but every clause carries operational meaning; a slightly more structured phrasing would read better than the semicolon chain.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation with an output schema and safety annotations, the description covers what an agent most needs: unposted state, the posting follow-up, accounting effect, and the dry-run gate. Return-shape details are correctly omitted since an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description still adds meaning by tying contractRef to the settlement-account resolution rule and by framing confirm as a preview-then-confirm gate. It does not explain other parameters (warehouse, organization, sumIncludesVat), so it stops short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Создаёт документ «Возврат товаров поставщику»") plus the tabular section it fills ("Товары"). It also disambiguates from the closest sibling by naming post_document as the separate posting step and noting the counterparty is a supplier, which separates it from create_return_from_customer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says the document is created НЕПРОВЕДЁННЫЙ and routes posting to post_document, so the agent knows the alternative and the condition selecting it. The dry-run/confirm protocol is stated as a mandatory flow rather than left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write.warehouse.create_surplusСоздать оприходование товаровA

Создаёт документ «Оприходование товаров» (излишки). НЕПРОВЕДЁННЫЙ; провести — post_document (проводки Дт 41 Кт 91.01). Можно указать документ-основание — инвентаризацию. dry-run/confirm.

NameRequiredDescriptionDefault
dateNoДата YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции документа
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
warehouseNoНазвание склада (если несколько)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
inventoryRefNoRef_Key инвентаризации-основания (необязательно)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing that the created document is unposted, that posting produces entries Дт 41 Кт 91.01, and that confirm=false performs a preview with no write. This is exactly the behavioral context an agent needs for a mutating tool with destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four telegraphic clauses, front-loaded with the resource and its unposted state, then the follow-up tool, the optional basis document, and the preview rule. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full output schema, 100% parameter coverage, and detailed annotations, the description supplies the remaining essentials: unposted status, accounting effect, follow-up tool, and the preview/confirm protocol.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents confirm, operationId, inventoryRef and warehouse in detail, so the description only duplicates the dry-run/confirm idea and the inventory-basis hint. It adds little semantic value beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Создаёт документ «Оприходование товаров» (излишки)') and immediately distinguishes the result state as unposted, separating it from sibling create_writeoff/create_inventory and from post_document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the posting step to post_document and states that an inventory document may serve as the basis, plus the dry-run/confirm workflow. It stops short of contrasting surplus receipt against writeoff or plain inventory creation, which an agent must infer from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write.warehouse.create_transferСоздать перемещение товаровA

Создаёт документ «Перемещение товаров» между складами. НЕПРОВЕДЁННЫЙ; провести — post_document (проводки Дт 41(склад-получатель) Кт 41(склад-отправитель)). dry-run/confirm.

NameRequiredDescriptionDefault
dateNoДата YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции документа
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
toWarehouseYesНазвание склада-получателя
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.
fromWarehouseYesНазвание склада-отправителя

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, but the description adds the key non-obvious state: the created document is UNPOSTED, and posting requires a separate call with specific accounting entries (Dt 41 recipient / Kt 41 sender). That meaningfully exceeds what annotations convey, though the dry-run/confirm phrase largely repeats the confirm parameter's own schema description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact clauses, front-loaded with the action, then the created state, then the follow-up. No redundant wording; the terse "dry-run/confirm" fragment still earns its place as a safety cue.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter coverage, the description supplies what structured fields cannot: the unposted status and the posting path with accounting implications. Nothing an agent needs to call it correctly appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-level detail beyond what the schema already documents for fromWarehouse, toWarehouse, lines, confirm, and operationId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Создаёт документ «Перемещение товаров» между складами") and immediately names the sibling post_document as the alternative for the next step. An agent can distinguish this from create_writeoff or create_surplus by the explicit between-warehouses scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes posting to post_document, which is the natural follow-up action, and signals the dry-run/confirm pattern. It does not explain when to choose a transfer over a write-off or surplus, but the from/to warehouse framing makes that distinction fairly self-evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write.warehouse.create_writeoffСоздать списание товаровA

Создаёт документ «Списание товаров» (недостача/порча). НЕПРОВЕДЁННЫЙ; провести — post_document (проводки Дт 94 Кт 41). Можно указать документ-основание — инвентаризацию. dry-run/confirm.

NameRequiredDescriptionDefault
dateNoДата YYYY-MM-DD (по умолчанию сегодня)
linesYesПозиции документа
confirmNofalse (по умолчанию) — только предпросмотр (dry-run), запись НЕ выполняется. true — выполнить создание. Сначала всегда показывайте dry-run и получайте согласие пользователя; при подтверждении передавайте operationId из результата предпросмотра и те же аргументы. После таймаута повторяйте подтверждение с тем же id, не создавая новый предпросмотр.
databaseNoИмя базы 1С из list_databases. Без указания — база по умолчанию.
warehouseNoНазвание склада (если несколько)
operationIdNoUUID из предпросмотра. Передайте его при confirm=true, чтобы повтор не создал дубликат.
inventoryRefNoRef_Key инвентаризации-основания (необязательно)
organizationNoОрганизация (юрлицо) для фильтра: часть названия, ИНН или Ref_Key из list_organizations. Без указания — все организации базы.

Output Schema

NameRequiredDescription
refNo
codeNo
noteNo
notesNo
dryRunNo
createdNo
payloadNo
databaseNo
replayedNo
entitySetNo
willCreateNo
descriptionNo
operationIdNo
writableBaseNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false; the description adds genuinely new behavior: the document is created unposted with no ledger impact until post_document, and posting yields Дт 94 Кт 41. The dry-run/confirm mention duplicates what the confirm/operationId schema fields already spell out in detail, so it adds little beyond annotations plus schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded: creation, posting state, posting path, basis document, dry-run. The telegraphic fragment 'dry-run/confirm.' is the weakest element since the schema covers that workflow exhaustively, but nothing is bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described; the remaining essentials for a mutation tool — that it creates an unposted document, how to post it, and that a basis inventory may be attached — are all present. Nothing an agent needs in order to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents date, lines, confirm, operationId, inventoryRef, warehouse, database and organization. The description only gestures at the inventory basis document, which the inventoryRef field already explains; no additional meaning (units, valuation rules, multi-warehouse behavior) is contributed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (creates the «Списание товаров» document) and immediately qualifies the business meaning as недостача/порча, which distinguishes it from the sibling create_surplus. It also clarifies the document's state (НЕПРОВЕДЁННЫЙ), so an agent knows exactly what artifact it gets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes posting to post_document and notes that an inventory can be supplied as the basis document, plus a dry-run/confirm workflow cue. It never states when NOT to use it (e.g. surplus goods → create_surplus, returns → create_return_to_supplier), so the sibling routing is only partly covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 75 tool updatesv0.12.0
    • First observedread.accounting.check_month_close
    • First observedread.accounting.get_account_card
    • First observedread.accounting.get_account_turnover
    • First observedread.accounting.get_balance_origin
    • First observedread.accounting.get_contract_settlement_settings
    • First observedread.accounting.get_document_postings
    • First observedread.accounting.get_settlement_settings
    • First observedread.analytics.get_cash_balance
    • First observedread.analytics.get_cashflow
    • First observedread.analytics.get_creditors
    • First observedread.analytics.get_deal_history
    • First observedread.analytics.get_debtors
    • First observedread.analytics.get_inventory
    • First observedread.analytics.get_payments_breakdown
    • First observedread.analytics.get_purchases_breakdown
    • First observedread.analytics.get_sales
    • First observedread.analytics.get_sales_breakdown
    • First observedread.analytics.get_taxes_paid
    • First observedread.analytics.get_unpaid_invoices
    • First observedread.audit.get_document_history
    • First observedread.counterparty.find_counterparty
    • First observedread.counterparty.get_counterparty
    • First observedread.counterparty.get_customer_history
    • First observedread.counterparty.get_reconciliation
    • First observedread.counterparty.get_supplier_history
    • First observedread.document.get_document
    • First observedread.document.search_documents
    • First observedread.organization.get_organization_card
    • First observedread.schema.describe_entity
    • First observedread.schema.list_entities
    • First observedread.system.health_check
    • First observedread.system.list_databases
    • First observedread.system.list_organizations
    • First observedwrite.accounting.set_contract_settlement_settings
    • First observedwrite.accounting.set_settlement_settings
    • First observedwrite.catalog.create_contract
    • First observedwrite.catalog.create_nomenclature
    • First observedwrite.catalog.update_nomenclature
    • First observedwrite.counterparty.create_bank_account
    • First observedwrite.counterparty.create_contact_person
    • First observedwrite.counterparty.create_counterparty
    • First observedwrite.counterparty.create_group
    • First observedwrite.counterparty.set_group
    • First observedwrite.counterparty.update_counterparty
    • First observedwrite.document.add_document_line
    • First observedwrite.document.align_bank_payment_amounts
    • First observedwrite.document.apply_bank_settlement_settings
    • First observedwrite.document.copy_document
    • First observedwrite.document.post_document
    • First observedwrite.document.remove_document_line
    • First observedwrite.document.update_document_lines
    • First observedwrite.entity.create_folder
    • First observedwrite.entity.mark_for_deletion
    • First observedwrite.entity.move_to_folder
    • First observedwrite.entity.update_entity
    • First observedwrite.money.create_bank_writeoff
    • First observedwrite.money.create_cash_payment
    • First observedwrite.money.create_cash_receipt
    • First observedwrite.money.create_payment
    • First observedwrite.money.create_payout_order
    • First observedwrite.operation.status
    • First observedwrite.purchase.create_purchase
    • First observedwrite.purchase.create_received_invoice
    • First observedwrite.purchase.create_supplier_invoice
    • First observedwrite.sales.create_act
    • First observedwrite.sales.create_invoice
    • First observedwrite.sales.create_issued_invoice
    • First observedwrite.sales.create_services_act
    • First observedwrite.sales.create_shipment
    • First observedwrite.warehouse.create_inventory
    • First observedwrite.warehouse.create_return_from_customer
    • First observedwrite.warehouse.create_return_to_supplier
    • First observedwrite.warehouse.create_surplus
    • First observedwrite.warehouse.create_transfer
    • First observedwrite.warehouse.create_writeoff

TDQS

A3.5/5.0

Scored across 75 tools

Disambiguation3/5

Most tools target distinct resources and actions, but several direct overlaps exist: read.accounting.get_settlement_settings and read.accounting.get_contract_settlement_settings have near-identical descriptions (same for the write pair), write.entity.create_folder vs write.counterparty.create_group, write.entity.move_to_folder vs write.counterparty.set_group, and generic write.entity.update_entity vs specific update_counterparty/update_nomenclature. An agent can usually pick correctly from descriptions, but these duplicate pairs create real misselection risk.

Naming Consistency4/5

Names follow a clear namespaced pattern (read.<domain>.<verb_noun>, write.<domain>.<verb_noun>), e.g. read.analytics.get_sales, write.warehouse.create_writeoff. Minor deviations exist: write.operation.status lacks a verb, and legacy alias pairs carry different names for the same tool, but the overall convention is predictable.

Tool Count1/5

75 tools is far beyond a comfortable surface for an accounting-domain MCP; there are also literal duplicate aliases and many near-duplicate document creators (create_act, create_services_act, create_shipment, create_invoice, create_supplier_invoice). The surface is heavy enough to overwhelm tool selection and should be consolidated.

Completeness4/5

Coverage is deep: schema introspection, document search/get, extensive read analytics (sales, debtors, cashflow, settlement settings), plus writes for most document types, catalogs, and entity updates. Gaps are minor: no hard delete/rollback of documents (only mark_for_deletion), and some entities (e.g. price lists, users) are only reachable via generic update_entity rather than dedicated tools.

Maintenance

ActivityActive
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Bridges AI agents to 1C:Enterprise via OData, enabling natural language queries of business entities like counterparties and invoices with read-only access.
    8
    46 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables users to ask natural-language questions about live 1C:Enterprise data and receive answers from read-only OData sources, covering sales, inventory, items, and counterparties; supports direct connections or an SSH tunnel for IP-allowlisted installations.
    9
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients such as Cursor and Claude to query and inspect 1C:Enterprise infobase data via COM without configuration extensions or changes, using 1C query language and metadata tools.
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables ChatGPT's desktop Codex app to query a live 1C (1С) database through OData in read-only mode, so users can ask plain-language questions about sales, stock, items, and counterparties, and get answers, charts, and dashboards without exports or programming.
    4
    MIT