Перейти к содержанию

Каталог MCP-инструментов

Expecto предоставляет всю свою функциональность через MCP-сервер, так что ИИ-ассистент (Claude Desktop, Claude Code, Cursor или собственный клиент) может управлять платформой напрямую: онбордить поставщиков, собирать контракты и трансформеры, запускать сессии и проверять результаты. На этой странице перечислены все доступные инструменты, сгруппированные по доменам.

Подключение и аутентификацию описывает Quickstart для разработчиков (раздел «Тот же сценарий через MCP»). Коротко: направьте клиент на <EXPECTO_BASE_URL>/mcp/ и аутентифицируйтесь тем же заголовком X-API-Key, что и для REST API.

Как читать каталог

Описания ниже — однострочные. Ваш MCP-клиент раскрывает полную входную схему каждого инструмента (имена параметров, типы, обязательность) через интроспекцию — большинство клиентов показывают её при осмотре или вызове инструмента. Параметры в скобках — это входные значения, которые принимает инструмент; какие из них обязательны, зависит от инструмента. Эквивалентная REST-поверхность интерактивно задокументирована на <EXPECTO_BASE_URL>/api/docs.

Все инструменты ограничены организацией, стоящей за вашим API-ключом. Инструменты, изменяющие состояние (create_*, update_*, delete_*, run_*, approve_*, …), требуют соответствующего разрешения у ключа.

Идентичность и health

Инструмент Назначение
get_identity Возвращает принципала, организацию и эффективные разрешения за API-ключом.
health Проверяет статус и версию MCP-сервера.

Проекты

Инструмент Назначение
list_projects Список проектов организации (опциональный поиск).
get_project Полные данные проекта: entity, каталоги, контракты, получатели и context_schema (обязательные scalars/tables session-контекста, которые надо задать перед запуском пайплайна).
get_project_instructions Прочитать операционные инструкции проекта (markdown).
create_project Создать проект (delivery standard); опц. задать output_format экспорта.
update_project Изменить настройки проекта (режим одобрения, режим создания сессий, порог блокировки, output_format экспорта).
set_project_context_schema Заменить схему контекста сессии проекта (скаляры + таблицы, у каждого required / filled_by). Прочитать текущую через get_project, смёржить и передать целиком; поля, наполняемые интеграцией, помечать filled_by: "integration".
update_project_instructions Заменить операционные инструкции проекта.
delete_project Удалить проект и все его scoped-ресурсы.
attach_entity_to_project Привязать существующую entity к проекту под семантической ролью.
detach_entity_from_project Отвязать entity от проекта по имени роли.
attach_catalog_to_project Привязать org-level каталог к проекту.
detach_catalog_from_project Отвязать org-level каталог от проекта.

Entity

Целевые схемы плюс построчные правила валидации.

Инструмент Назначение
list_entities Список entity (целевых схем) организации.
get_entity Данные entity, включая схему и правила валидации.
create_entity Создать новую entity (org-level или project-scoped).
update_entity Изменить имя или описание entity.
delete_entity Удалить entity вместе со схемой/правилами.
set_entity_schema Создать или заменить JSON Schema entity.
get_entity_schema Получить определение JSON Schema entity.
create_entity_rule Создать правило валидации на entity. message принимает строку или многоязычный объект ({"en": …, "de": …, "ru": …}, ключ "en" обязателен).
update_entity_rule Изменить существующее правило валидации. message принимает строку или многоязычный объект.
delete_entity_rule Удалить правило валидации с entity.

Контракты данных

Соглашения о формате поставщика и их неизменяемые ревизии.

Инструмент Назначение
list_data_contracts Список контрактов данных (соглашений о формате поставщика).
get_data_contract Данные контракта, включая ревизии и источники.
create_data_contract Создать новый контракт данных (опционально с собственным external_id, уникальным в организации).
add_source_to_contract Добавить источник (роль + тип + конфигурация парсинга) в ревизию.
create_revision Создать новую черновую ревизию на существующем контракте.
activate_revision Активировать черновую ревизию (с периодом valid_from).
update_data_contract Изменить имя, описание или external_id контракта (пустая строка очищает значение; используется при создании сессии v1 как data_contract: {"external_id": …}).
delete_data_contract Удалить контракт со всеми ревизиями/источниками.

Трансформеры

Маппинги полей из источников контракта в целевую схему entity.

Инструмент Назначение
list_transformers Список трансформеров контракта данных.
get_transformer Трансформер со всеми маппингами полей.
create_transformer Создать трансформер (маппинги из контракта в entity; опциональные построчные фильтры по ролям).
update_transformer_mappings Заменить маппинги полей трансформера, опционально — и построчные фильтры.
validate_transformer_expressions Проверить все выражения маппинга (и построчные фильтры) трансформера.
preview_transformer_sql Показать скомпилированный DuckDB SQL трансформера.
delete_transformer Удалить трансформер из контракта данных.

Построчные фильтры (row_filters_json). create_transformer и update_transformer_mappings принимают опциональную карту {роль: предикат}. Каждый предикат — булево выражение DuckDB SQL; входные строки, для которых он ложен, отбрасываются до маппинга и не попадают ни в данные entity, ни в валидацию, сверку или экспортный пакет. Так можно исключить из выгрузки в SAP явно не-маппящиеся счета, например {"postings": "\"Konto\" NOT IN (SELECT \"code\" FROM cat_kontenplan__provider WHERE \"mapping_type\" = 'ignore')"}. При обновлении отсутствие row_filters_json оставляет фильтры без изменений; {} их очищает. Число отброшенных строк отражается в сводке трансформации сессии.

Каталоги

Наборы справочных данных (планы счетов, кодовые таблицы, списки исключений). Каталог ограничен организацией, проектом или — через data_provider_id — одним поставщиком.

Инструмент Назначение
list_catalogs Список каталогов. Фильтр по project_id или по data_provider_id для provider-scoped каталогов.
get_catalog_data Прочитать столбцы и строки каталога (с пагинацией).
create_catalog Создать каталог — org-level, project-scoped (project_id) или provider-scoped (data_provider_id).
update_catalog Изменить имя или описание каталога.
delete_catalog Удалить каталог вместе с данными.
import_catalog_data Импортировать CSV/Excel в каталог (заменяет существующие данные).
add_catalog_column Добавить колонку (со значением по умолчанию) без переимпорта — существующие строки сохраняются.
edit_catalog_cell Задать одну ячейку по индексу строки, напр. пометить счёту mapping_type = 'ignore'.

Поставщики данных

Поставщики, которые сдают данные. Поставщику выдаётся доступ к проекту, у него могут быть учётные записи участников и собственные provider-scoped каталоги.

Инструмент Назначение
list_data_providers Список поставщиков (data providers). Возвращённый id используется как data_provider_id для provider-scoped каталогов.
get_data_provider Детали одного поставщика по id.
create_data_provider Создать поставщика (name, опционально external_id, language en/de/ru).
update_data_provider Переименовать, сменить external_id, задать язык сообщений language (en/de/ru) или is_active.
deactivate_data_provider Деактивировать поставщика (мягкое удаление — is_active = false).
list_provider_members Список учётных записей, привязанных к поставщику.
add_provider_member Привязать пользователя по user_id или email с ролью role (contributor / manager); неизвестный email автоматически заводится в организацию.
remove_provider_member Отвязать участника (по id членства).
list_provider_access Список грантов доступа поставщика к проектам.
grant_provider_access Выдать доступ к project_id (опционально в рамках data_contract_id).
revoke_provider_access Отозвать грант доступа (по id гранта).

Интеграции, источники контекста и исходящие привязки

Подключения к внешним системам и настройка проекта вокруг них. Адаптер подключения объявляет возможности: context (автоматическое наполнение контекста сессии — BuiltAPI, PostgreSQL) и/или outbound (запись событий сессии во внешнюю платформу — Salesforce). Источники контекста позволяют вызывающей стороне передавать только параметры запроса (например, период и номер фонда) — остальное Expecto запрашивает сам при создании сессии; исходящие привязки отправляют результаты проверки наружу по завершении прогона.

Инструмент Назначение
list_connection_types Каталог поддерживаемых типов подключений: каждая запись несёт capabilities типа (context / outbound) и метаданные формы для создания подключения этого типа — форму base_url, форму credentials (один токен или структурированные поля) и config-поля с признаком обязательности. Вызывайте перед create_integration_connection.
create_integration_connection Создать подключение уровня организации (name, type = builtapi, postgres или salesforce, base_url — URL API, DSN postgresql:// или My Domain-URL инстанса Salesforce, config_json — workspace_id для BuiltAPI, api_version для Salesforce, credentials только на запись — строка-токен или {client_id, client_secret} для OAuth-типов).
list_integration_connections Список подключений; в ответах есть capabilities (context / outbound) и has_credentials, но никогда — сам секрет.
update_integration_connection Переименовать, изменить конфигурацию, ротировать (credentials) или удалить (clear_credentials) токен, переключить is_active.
test_integration_connection Проверить сохранённое подключение (connection_id, хранимые креденшелы) или несохранённые параметры дешёвым аутентифицированным вызовом; возвращает {ok, error_kind, message}.
delete_integration_connection Удалить подключение; отклоняется, пока на него ссылаются источники контекста или исходящие привязки какого-либо проекта.
set_project_context_sources Объявить, что запрашивать: источники с запросом к BuiltAPI — records_search (filter + projection) или aggregation (Mongo-пайплайн с $lookup) — либо sql-запрос к PostgreSQL (одиночный read-only SELECT); подстановки {{ context.* }} / {{ session.* }} — и таблицей/скаляром контекста, который наполняет каждый источник. Запросы к BuiltAPI пагинируются автоматически и забирают все строки; необязательный take — общий лимит строк (1–100 000), а не размер страницы. Без take результат больше 100 000 строк завершается явной ошибкой вместо тихой обрезки.
get_project_context_sources Прочитать настройку источников контекста проекта.
test_context_source Пробный прогон запроса одного источника с примерными значениями плейсхолдеров; возвращает превью (число строк, колонки, первые строки) или семантическую ошибку, без создания сессии.
fetch_session_context Повторно выполнить автоматический сбор контекста сессии (доступно до подтверждения); результат — в context_fetch_report.
set_project_outbound_bindings Объявить, какие события сессии куда записываются: привязки с outbound-подключением, events (например, session.checked, session.failed) и адаптер-специфичный mapping — для Salesforce: sobject + fields с шаблонами {{ … }} по полям конверта (session_id, run_id, health, …) и {{ context.* }}.
get_project_outbound_bindings Прочитать исходящие привязки проекта.

Поля, наполняемые интеграцией, помечайте в контекстной схеме проекта как filled_by: "integration" — тогда они не требуются от вызывающей стороны; незавершённый или неудавшийся сбор блокирует пайплайн до parse с понятными причинами по каждому источнику.

Руководства по платформам (настройка на стороне Salesforce, виды запросов, лимиты, семантика ошибок) — в разделе Интеграции.

Вебхуки

Исходящие вебхуки для событий жизненного цикла сессии (совместимы со Standard Webhooks). Эндпоинты уровня организации или проекта; секрет подписи показывается один раз и хранится зашифрованным Fernet.

Инструмент Назначение
list_webhook_endpoints Список webhook-эндпоинтов организации.
get_webhook_endpoint Детали эндпоинта по id.
create_webhook_endpoint Создать эндпоинт (url, event_types, опц. project_id, опц. auth-заголовок). Секрет возвращается только при reveal_secret=true.
update_webhook_endpoint Изменить URL, типы событий, активность или auth-заголовок.
delete_webhook_endpoint Удалить эндпоинт и его доставки.
rotate_webhook_secret Ротировать секрет подписи (виден один раз при reveal_secret=true).
send_webhook_ping Отправить синтетический webhook.ping для проверки связи.
list_webhook_deliveries Список попыток доставки — одного эндпоинта, одного подключения (connection_id) или всей организации; доставки исходящих привязок несут connection_id / project_id / binding_name, успешная хранит ссылку на созданную запись.
get_webhook_delivery Детали доставки, включая выдержку из последнего ответа.
replay_webhook_delivery Повторить прошлую доставку — эндпоинтные с исходным подписанным телом, доставки привязок — через адаптер.

Бизнес-правила

Межсущностная сверка и проверки на уровне проекта (DuckDB SQL / выражение).

Инструмент Назначение
list_business_rules Список бизнес-правил проекта.
get_business_rule Конкретное бизнес-правило со всеми деталями.
create_business_rule Создать бизнес-правило (опционально с привязкой через applicable_when_sources). message принимает строку или многоязычный объект ({"en": …, "de": …, "ru": …}, ключ "en" обязателен).
update_business_rule Изменить бизнес-правило. message принимает строку или многоязычный объект.
delete_business_rule Удалить бизнес-правило из проекта.

Сессии

Один акт доставки: файлы → парсинг → трансформация → валидация → проверка → подтверждение → одобрение → экспорт.

Инструмент Назначение
list_sessions Список сессий (фильтр по проекту, статусу, health, поиску).
get_session Данные сессии: файлы (с parse_validation_summary по каждому файлу), трансформеры, статус пайплайна, а также context_validation_errors и file_validation_errors.
create_session Создать сессию доставки для контракта + периода (+ поставщика).
upload_session_file Загрузить файл под роль источника.
run_session_pipeline Запустить полный пайплайн (парсинг → трансформация → валидация → проверка); возвращает job_id (для опроса статуса) и run_id — стабильный ID созданного прогона (один на каждое выполнение, см. GET /sessions/{id}/runs). При провале pre-flight-проверки возвращает error + details с перечнем отсутствующих полей контекста или файлов. Сессию с health=blocked можно перезапустить (каждый вызов создаёт новый прогон; blocked держится, пока новый прогон не пройдёт чисто). Если автоматический сбор контекста ещё идёт, парсинг выполняется сразу (технический результат контекста не ждёт), а затем прогон ждёт перед трансформацией — get_job_status показывает run_status = waiting, waiting_for = context_fetch — и продолжается сам, когда сбор завершится (те же run_id / job_id); упавший сбор или ожидание дольше таймаута закрывают его как errors.
set_session_context Задать значения контекста сессии (скаляры и таблицы).
get_session_parse_issues Ошибки валидации парсинга по одному загруженному файлу: счётчики summary, groups по паре (проверка, колонка) с количеством, подсказками формата и примерами строк, плюс постраничный сырой список issues. Единственный способ получить полные ошибки парсинга — get_session отдаёт только сводку.
get_session_violations Нарушения валидации по трансформеру сессии.
get_session_check_violations Нарушения по конкретному бизнес-правилу.
confirm_session Подтвердить проверенную сессию (проверено отправителем).
approve_session Одобрить подтверждённую сессию (финальная подпись перед экспортом).
reject_session Отклонить подтверждённую сессию и вернуть на исправление.
export_session Экспорт выходного пакета сессии как трекаемого job; у проекта должен быть настроен output format.
add_session_comment Добавить комментарий к сессии.
list_session_comments Список комментариев сессии в хронологическом порядке.

Задания (jobs)

Асинхронная работа (запуски пайплайна, экспорты, импорты) отслеживается как задания.

Инструмент Назначение
get_job_status Статус асинхронного задания (запуск пайплайна, экспорт, импорт). Для задания пайплайна дополнительно run_id, run_status и waiting_for (context_fetch, пока прогон ждёт сбор контекста).
list_jobs Недавние асинхронные задания организации.