ariekogan/ateam-mcp

ariekogan/ateam-mcp

от ariekogan
ateam-mcp - MCP-сервер, дающий AI-ассистентам (ChatGPT, Claude) создавать, проверять и разворачивать многоагентные системы через платформу ADAS без ручного конфигурирования.

ateam-mcp

Give any AI the ability to build, validate, and deploy production multi-agent systems.

This is an MCP server that connects AI assistants — ChatGPT, Claude, Gemini, Copilot, Cursor, Windsurf, and any MCP-compatible environment — directly to the ADAS platform.

An AI developer says "Build me a customer support system with order tracking and escalation" — and their AI assistant handles the entire lifecycle: reads the spec, builds skill definitions, validates them, deploys to production, and verifies health. No manual JSON authoring, no docs reading, no copy-paste workflows.

Why this matters

Today, building multi-agent systems requires deep platform knowledge, manual configuration, and switching between docs, editors, and dashboards. ateam-mcp eliminates all of that by making the ADAS platform a native capability of the AI tools developers already use.

The AI assistant becomes the developer interface:

Developer: "Create an identity verification agent that checks documents,
            validates faces, and escalates fraud cases"

AI Assistant:
  → reads ADAS spec (adas_get_spec)
  → studies working examples (adas_get_examples)
  → builds skill + solution definitions
  → validates iteratively (adas_validate_skill, adas_validate_solution)
  → deploys to production (adas_deploy_solution)
  → verifies everything is running (adas_get_solution → health)

Developer: "Add a new skill that handles address verification"

AI Assistant:
  → deploys into the existing solution (adas_deploy_skill)
  → redeploys (adas_redeploy)
  → confirms health
Инструменты были проиндексированы:
ateam_auth

Аутентификация с A-Team. Требуется перед любой операцией, учитывающей тенант (чтение решений, развертывание, тестирование и т. д.). Пользователь может получить свой API-ключ по адресу https://mcp.ateam-ai.com/get-api-key. Только глобальные конечные точки (spec, examples, validate) работают без аутентификации. ВАЖНО: Даже если настроены переменные окружения (ADAS_API_KEY), вы ОБЯЗАНЫ явно вызывать ateam_auth - только env vars недостаточно. Для кросс-тенантных административных операций используйте master_key вместо api_key.

Параметры
  • api_keystring

    Your A-Team API key (e.g., adas_xxxxx)

  • master_keystring

    Master key for cross-tenant operations. Authenticates across ALL tenants without per-tenant API keys. Requires tenant parameter.

  • tenantstring

    Tenant name (e.g., dev, main). Optional with api_key if format is adas_<tenant>_<hex>. REQUIRED with master_key.

  • urlstring

    Optional API URL override (e.g., https://dev-api.ateam-ai.com). Use this to target a different environment without restarting the MCP server.

ateam_bootstrap

ОБЯЗАТЕЛЬНАЯ точка входа для A-Team MCP. ДОЛЖНА вызываться, когда пользователь приветствует, говорит «привет», спрашивает, что это, просит помощи, изучает возможности или при первом подключении MCP. Возвращает объяснение платформы, примеры решений и инструкции по поведению ассистента. НЕ импровизируйте с приветствием, вместо этого вызывайте этот инструмент.

Параметры

Без параметров.

ateam_build_and_run

РАЗВЕРНУТЬ ТЕКУЩУЮ ВЕТКУ MAIN НА A-TEAM CORE. ⚠️ САМАЯ ТЯЖЕЛАЯ ОПЕРАЦИЯ (60-180 с): проверяет solution+skills → разворачивает все connectors+skills на Core (пересоздаёт MCP серверы) → проверяет здоровье → опционально запускает warm test → автоматически пушит в GitHub. 🌳 DEV/PROD РАБОЧИЙ ПРОЦЕСС: 1. Редактировать файлы → ateam_github_patch (по умолчанию пишет в ветку dev) 2. (Опционально) Посмотреть, что скоро отправится → ateam_github_diff 3. Отправить dev → main → ateam_github_promote (слияние + автоматический тег prod-YYYY-MM-DD-NNN) 4. Развернуть main на Core → ateam_build_and_run Этот инструмент ВСЕГДА разворачивает ветку main — параметра ref нет. Чтобы развернуть незаконченную dev-работу, сначала продвигайте её. АВТОМАТИЧЕСКИ ОПРЕДЕЛЯЕТ GitHub репозиторий: если опустить mcp_store и репозиторий существует, код коннектора автоматически подтягивается из main. При первом развертывании требуется mcp_store. После этого редактируйте через ateam_github_patch + promote, затем build_and_run. Для небольших изменений предпочтительнее ateam_patch (быстрее, инкрементально). Требуется аутентификация.

Параметры
  • connectorsobject[]

    Optional: connector metadata (id, name, transport). Entry points auto-detected from mcp_store.

  • githubboolean

    Optional: if true, pull connector source code from main. AUTO-DETECTED: if you omit both mcp_store and github, the system checks if a repo exists and pulls from main automatically.

  • mcp_storeobject

    Optional: connector source code files. Key = connector id, value = array of {path, content}.

  • skillsobject[]

    Optional after first deploy: skill definitions. If omitted, auto-pulled from main (skills/{id}/skill.json).

  • solutionobject

    Full solution definition. Required on first deploy. After first deploy, just pass solution_id instead — everything is auto-pulled from GitHub main.

  • solution_idstring

    The solution ID. Use this INSTEAD of passing the full solution object — the solution definition is auto-pulled from main. Required if solution object is omitted.

  • test_messagestring

    Optional: send a test message after deployment to verify the skill works. Returns the full execution result.

  • test_skill_idstring

    Optional: which skill to test (defaults to the first skill).

ateam_chain_status

SLIM chain status — молниеносный опрос на чипе. Принимает chain_id (из ateam_conversation), дёшево возвращает агрегированный статус ВСЕЙ ЦЕПОЧКИ: chain_status + chain_done (true только когда ВСЯ цепочка — корневая задача + каждый handoff + подвызов askAnySkill — находится в терминальном состоянии), а также pending_question, result и короткую строку прогресса. Это то, что вы опрашиваете в цикле после ateam_conversation — НЕ ateam_get_chain (она возвращает полное дерево; слишком тяжелая для периодического опроса). Отдельная задача может завершиться, пока цепочка ещё выполняется, поэтому опрашивайте chain_done, а не статус задачи. Цикл: вызывайте каждые ~2 с, пока chain_done === true (или не установлен pending_question — ассистент ждёт ответа от пользователя). Затем прочитайте result / получите полное дерево один раз через ateam_get_chain, если нужны детали по каждой задаче.

Параметры
  • actor_idstring

    Optional. WHO is asking. A job belongs to an actor and Core enforces that on per-job reads, so a tenant key alone is refused. Usually unnecessary — the session remembers the actor from ateam_conversation/ateam_test_skill. Pass it to inspect a job run by a DIFFERENT actor (e.g. a real user's).

  • chain_idstringобязательный

    The chain id returned by ateam_conversation (the conversation's identity). Any job id in the chain also works — Core resolves the chain aggregate.

  • job_idstring

    Alias for chain_id — any job in the chain resolves to the chain aggregate. The handler has always accepted it; without this declaration MCP stripped it before the handler could see it.

ateam_connector_logs

Читает, что процесс коннектора на самом деле ВЫВЕЛ в stderr. Это единственное место, где виден внутренний сбой коннектора: инструмент, который перехватывает собственную ошибку, всё равно возвращает ok:true, и виджет затем отображает пустое состояние, которое выглядит как реальные данные. Реальный случай (2026-08-11): у коннектора дашборда ledger.getData получил 401 Authentication required от Core, проглотил его, вернул пустой ledger и отобразил 0.00 везде — при этом загрузка сказала ok, инструмент сказал ok:true, а поверхностный зонд сказал surface_ok. Слово 'Authentication' появилось ТОЛЬКО здесь. ИСПОЛЬЗУЙТЕ ЕГО всякий раз, когда инструмент успешен, но данные пустые, неверные или нулевые — такая комбинация является признаком проглоченной ошибки, и 'вызов вернул ok' не является доказательством, что он сработал. Передавайте возвращённый cursor обратно как since, чтобы читать только то, что появилось с момента вашего последнего просмотра, так вы сможете обрамить действие и увидеть, что именно он вывел. Только коннекторы stdio (решение) передают stderr через Core; коннектор platform/HTTP отвечает ok:false с причиной.

Параметры
  • connector_idstringобязательный

    The connector ID (e.g. 'accounting-dashboard-mcp')

  • errors_onlyboolean

    Keep only lines that read as errors (401/failed/exception/refused/…)

  • limitnumber

    Max lines (default 100, max 300)

  • sincenumber

    Cursor from a previous call — returns only lines printed after it. Omit for the whole retained tail.

  • solution_idstringобязательный

    The solution ID

ateam_conversation

Отправляет сообщение развернутому решению и возвращает результат. skill_id не нужен — система сама направляет запрос нужному навыку. Поддерживает многошаговые диалоги: передайте actor_id из предыдущего ответа, чтобы продолжить беседу (например, ответить на подтверждение). Каждый вызов создает новое задание, но один и тот же actor_id сохраняет контекст разговора.

Параметры
  • actor_idstring

    Optional: actor ID from a previous response to continue the conversation. Omit for a new conversation.

  • messagestringобязательный

    The message to send (e.g., 'send email to X' or 'I confirm')

  • solution_idstringобязательный

    The solution ID

ateam_create_connector

Создаёт каркас нового MCP-коннектора с server.js + package.json + README. Устраняет ~50% идентичного шаблонного кода (настройка MCP-сервера, регистрация инструментов, stdio-транспорт). Затем вы заполняете реализации инструментов. Установите ui_capable=true, чтобы включить заглушки ui.listPlugins / ui.getPlugin (файлы исходников плагинов добавляются отдельно через ateam_create_plugin). После создания каркаса файлы загружаются в Core по тому же пути, что и ateam_upload_connector.

Параметры
  • connector_idstringобязательный

    Connector ID (lowercase-with-dashes, no spaces). Becomes the directory name.

  • namestring

    Human-readable name for the connector (e.g. 'Hue Lights'). Defaults to connector_id.

  • solution_idstringобязательный

    The solution ID

  • ui_capableboolean

    If true, include ui.listPlugins/ui.getPlugin handler stubs. Default: false.

ateam_create_plugin

Создай каркас UI-плагина (iframe HTML, React Native TSX или оба варианта) внутри существующего коннектора. Это устраняет ~50% однотипного шаблонного кода (импорты, хуки темы/моста, протокол postMessage, форма экспорта по умолчанию). Остаётся только написать тело компонента. Используй kind='iframe' только для веба, 'rn' только для мобильных, 'adaptive' для обоих. Автообнаружение (Phase 5 of the strip) подхватит новый плагин при следующем деплое без объявления манифеста.

Параметры
  • connector_idstringобязательный

    Existing connector to add the plugin into (e.g. 'personal-assistant-ui-mcp')

  • kindenum

    Render mode. 'adaptive' (default) produces both iframe + RN scaffolds.

  • plugin_namestringобязательный

    Plugin name (lowercase-with-dashes). E.g. 'memories-panel'. Becomes the dir name.

  • solution_idstringобязательный

    The solution ID

ateam_delete_connector

⚠️ КАСКАДНОЕ ВОЗДЕЙСТВИЕ — любой навык, у которого engine.bootstrap_tools или tools[] ссылаются на инструмент из этого коннектора, ПРОВАЛИТ своё следующее выполнение. Останавливает и удаляет коннектор из A-Team Core; удаляет ссылки из определения решения (grants, platform_connectors, ui_plugins id, начинающиеся с mcp:<connector-id>:*) и определения навыка (массив connectors); очищает файлы mcp-store. ТАКЖЕ УДАЛЯЕТ ИСХОДНЫЙ КОД: connectors/<id>/ удаляется из репозитория (одновременно main И dev) в том же вызове, поэтому удаление НЕОБРАТИМО. Это ИЗМЕНИЛОСЬ 23 августа 2026 года: раньше исходный код сохранялся, и можно было вызвать ateam_build_and_run(github:true), чтобы восстановить коннектор. Из-за этого удаление отменяло само себя при последующей публикации, причём только в некоторых состояниях, поскольку массив connectors[] собирается из ключей mcp_store ТОЛЬКО когда он пуст. Если хотите сохранить код, скопируйте его (ateam_get_connector_source) ДО удаления. Если удаление из репозитория не удалось, ответ сообщит об этом в поле github — Core чист, но исходный код всё ещё на месте. ТРЕБУЕТ confirm:true.

Параметры
  • confirmbooleanобязательный

    REQUIRED. Must be exactly true. A missing/false value refuses the call with a recovery hint.

  • connector_idstringобязательный

    The connector ID to remove (e.g. 'device-mock-mcp')

  • solution_idstringобязательный

    The solution ID (e.g. 'smart-home-assistant')

ateam_delete_skill

⚠️ НЕОБРАТИМО в Core + Builder FS — убивает работающий процесс MCP, удаляет из реестра навыков, удаляет запись в Mongo, убирает из solution.skills[] и solution.linked_skills, а также удаляет файлы навыка из Builder FS. ТРЕБУЕТ confirm:true. ВОССТАНОВЛЕНИЕ: навык остаётся в GitHub — ateam_github_pull пересобирает всё решение (отдельного пути восстановления навыка нет).

Параметры
  • confirmbooleanобязательный

    REQUIRED. Must be exactly true. A missing/false value refuses the call with a recovery hint.

  • skill_idstringобязательный

    The skill ID to remove (e.g. 'linkedin-agent')

  • solution_idstringобязательный

    The solution ID (e.g. 'personal-adas')

ateam_delete_solution

⚠️ НЕОБРАТИМО — уничтожает состояние Mongo, запущенные MCP-процессы и файловую систему Builder для всего решения и каждого скилла. ТРЕБУЕТ confirm:true И confirm_solution_id, который повторяет идентификатор уничтожаемого решения (защита от опечаток и галлюцинированных ID). ВОССТАНОВЛЕНИЕ: GitHub-репозиторий нетронут; ateam_github_pull пересобирает решение из main. Предпочитайте его повторному развёртыванию по памяти.

Параметры
  • confirmbooleanобязательный

    REQUIRED. Must be exactly true. A missing/false value refuses the call with a recovery hint.

  • confirm_solution_idstringобязательный

    REQUIRED. Must exactly equal solution_id. This defeats typos and hallucinated ids — you can't wipe a solution you couldn't spell.

  • solution_idstringобязательный

    The solution ID to delete

ateam_design_advisor

CONSULT THIS DURING DESIGN — before and while you design a skill/solution. Describe what you're building; it returns POINTERS to the platform capabilities that fit (per-actor storage, widgets, triggers, sub-agents, mobile data, run-scripts, multi-skill, GitHub, …), each with the /spec topic to read next (via ateam_get_spec) and the tool to wire it. Also returns 'missing' hints (capabilities your goal implies but the design hasn't wired) and lifecycle hints (e.g. connect GitHub when the project will iterate). ADVISORY ONLY — you decide and own the design. Stateless: pass the current design_state each call; consult it as often as you like as the design evolves. If the reply carries truncated: true, the answer ran past the length budget and was CUT OFF: what is there is correct, but a capability's ABSENCE proves nothing — ask again with a narrower goal, or use ateam_spec_search, before concluding the platform lacks something.

Параметры
  • design_stateobject

    Optional. The design so far (skills, connectors, capabilities already wired) so the advisor can point at what's still missing. Pass {} at the start.

  • goalstringобязательный

    What you're trying to build, in your own words (e.g. 'a coach that tracks each user's meals from photos and shows a dashboard').

ateam_get_chain

Проверяет полное дерево цепочки — весь прогон, начиная с chain_id, с проходом по каждому handoff и askAnySkill subcall. Используйте, когда цепочка уже запущена и вы хотите проанализировать структуру: какой skill вызвал какой, насколько глубоко ушло дерево вызовов, какой инструмент внутри какого задания вызвал какой под-инструмент. Две основные формы: - response.data.chainJobs[] — одна запись на каждое задание в цепочке. Поля: jobId, skill, status, iteration, depth (0 = корень, +1 за каждый переход askAnySkill subcall), relation ('root' | 'subcall' | 'handoff'), parentJobId, parentSkill, goal. - response.data.executionSteps[] — каждый вызов инструмента во всех заданиях цепочки, с пометками _skill, _jobId, _depth (= глубина задания), _relation, _parentSkill, _parentJobId, _toolDepth (вложенность инструмента в инструмент через opId/parentOpId). Отличается от ateam_test_status по назначению: status предназначен для опроса в реальном времени задания, которое вы только что запустили; get_chain — для пост-анализа дерева (отладка многоскиловых потоков, регрессионное тестирование, сравнение двух запусков). Аутентификация: передаёт ваш авторизованный api_key. Арендатор определяется самим ключом. Область действия субъекта: вы можете просматривать только цепочки, начинающиеся с заданий, к которым у вашего субъекта есть доступ.

Параметры
  • actor_idstring

    Optional. WHO is asking. A job belongs to an actor and Core enforces that on per-job reads, so a tenant key alone is refused. Usually unnecessary — the session remembers the actor from ateam_conversation/ateam_test_skill. Pass it to inspect a job run by a DIFFERENT actor (e.g. a real user's).

  • chain_idstring

    THE EXECUTION'S IDENTITY — what ateam_conversation returns and what you actually hold. A chain is the whole run: root job + every handoff + every askAnySkill subcall. Prefer this.

  • job_idstring

    Alias for chain_id. Any job inside the chain works — Core walks up to the root — but you rarely hold one; prefer chain_id.

  • skill_slugstring

    Optional. The skill slug for the job — speeds up the lookup when the job isn't in memory and must be loaded from storage. Omit if you don't have it; lookup still works but does an extra round-trip.

ateam_get_connector_source

Читает исходные файлы развернутого MCP-коннектора. Возвращает все файлы (server.js, package.json и т.д.), хранящиеся в mcp_store для этого коннектора. Используйте это ПЕРЕД патчингом или переписыванием коннектора: всегда сначала читайте текущий код, чтобы вносить точечные исправления, а не слепые перезаписи целиком.

Параметры
  • connector_idstringобязательный

    The connector ID to read (e.g. 'home-assistant-mcp')

  • pathstring

    Optional. Read ONE file (e.g. 'server.js', 'ui-dist/panel/index.html'). Omit to get a file manifest (paths + sizes, no content) — a whole connector's source exceeds the ~50KB output limit and truncates, so read files one at a time.

  • solution_idstringобязательный

    The solution ID (e.g. 'smart-home-assistant')

ateam_get_examples

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

Параметры
  • typeenumобязательный

    Example type: 'skill' = Order Support Agent, 'connector' = stdio MCP connector, 'connector-ui' = UI-capable connector, 'solution' = full 3-skill e-commerce solution, 'script-cache-skill' = fat-tool skill with script_cache opt-in (reference implementation of script-level JIT shortcuts — study this before building any browser-automation skill), 'ui-plugin-native' = complete working React Native (mobile) UI plugin (rn-src/index.tsx + esbuild build:rn → rn-bundle, @adas/plugin-sdk, es2015), 'ui-plugin-iframe' = complete working web (iframe) UI plugin with the postMessage protocol, 'device-tools' = a solution's OWN tools that execute ON THE PHONE (runtime:"device") — BOTH halves and why they must agree: the plugin-bundle implementation, the connector manifest that declares it (Core cannot introspect a phone, so the manifest is the entire contract), and the skill wiring without which the skill gets none of them. Read this before designing anything that needs a LIVE device reading rather than the last synced one, 'index' = list all available examples

ateam_get_execution_logs

Получает логи выполнения для решения: последние задания с трассировкой шагов, вызовами инструментов, ошибками и временем выполнения. Необходимо для отладки того, что на самом деле произошло во время выполнения навыка. (Продвинутый.)

Параметры
  • actor_idstring

    The actor whose job this is. REQUIRED for per-job detail: a job belongs to an actor and Core refuses the detail endpoint without one (the list form does not check). Use the same actor_id you passed to ateam_conversation.

  • chain_idstring

    The CHAIN id — what ateam_conversation returns and ateam_chain_status takes. Prefer this: it is the id you actually hold. Resolved to the underlying job for you.

  • job_idstring

    Optional: get detailed trace for a specific job ID

  • limitnumber

    Max jobs to return (default: 10, max: 50)

  • skill_idstring

    Optional: filter logs to a specific skill

  • solution_idstringобязательный

    The solution ID

ateam_get_lessons

Прочитай, что ПРЕДЫДУЩИЕ запуски этого решения узнали, сначала новые, с ограничением. Вызывай это во время ориентации, ДО планирования: это единственное, что переносит контекст между запусками, и это дёшево. Каждая запись говорит, какой инструмент ввёл в заблуждение предыдущий запуск, дословную ошибку, что было попробовано вместо этого и сработало ли это. Пустой список - это настоящий ответ (ничего пока не узнано).

Параметры
  • limitnumber

    Max entries, newest first (default 20)

  • solution_idstringобязательный

    The solution ID

ateam_get_metrics

Получает метрики выполнения — время, статистику инструментов, узкие места, сигналы и рекомендации. (Расширенное.)

Параметры
  • actor_idstring

    Optional. WHO is asking. A job belongs to an actor and Core enforces that on per-job reads, so a tenant key alone is refused. Usually unnecessary — the session remembers the actor from ateam_conversation/ateam_test_skill. Pass it to inspect a job run by a DIFFERENT actor (e.g. a real user's).

  • chain_idstring

    Optional: deep analysis for the job behind a CHAIN id — what ateam_conversation returns and what you actually hold. Resolved to the job for you.

  • job_idstring

    Optional: deep analysis for a specific job

  • skill_idstring

    Optional: recent metrics for a specific skill

  • solution_idstringобязательный

    The solution ID

ateam_get_progress

Что уже сделано в этой сборке — читай это в первую очередь при продолжении запуска, до любого вызова ориентации. Здесь возвращается текущий статус по каждому шагу (последняя запись имеет приоритет) плюс недавняя история. Затем собирай только те шаги, которых НЕТ или которые ещё не подтверждены (verified). Отсутствие записи НЕ значит «ничего не делалось» — журнал мог появиться раньше шага, или запуск мог завершиться до записи. Это быстрый путь, а не новый источник истины: проверяй, прежде чем пересобирать что-то дорогое. Дополняет team_get_lessons, который фиксирует, что СЛОМАЛОСЬ. А здесь фиксируется, что РАБОТАЕТ.

Параметры
  • limitnumber

    History entries to return (default 60). steps is always complete.

  • solution_idstringобязательный

    The solution ID

ateam_get_solution

Чтение состояния решения: определение, навыки, работоспособность, статус или экспорт. Используйте это для проверки развернутых решений.

Параметры
  • limitnumber

    Optional byte-paging: max bytes of the serialized result to return in this page (pair with 'offset'). Omit both for the whole result (may truncate at the output cap).

  • offsetnumber

    Optional byte-paging: start returning the serialized result from this byte offset. Use with 'limit' to page a result larger than the ~50KB output cap; the response's _paging.next_offset gives the next page (null when done). Concatenate the content slices across pages, then JSON.parse.

  • sectionstring

    Optional (with skill_id): return ONLY this section of the skill instead of the whole definition — avoids the ~50KB output truncation on big skills. Dotted paths work (e.g. 'role', 'tools', 'intents.supported', 'policy', 'engine'). Omit for the full skill; use ateam_show_skill_minimal for the slim authoring view.

  • skill_idstring

    Optional: read a specific skill by ID (original or internal)

  • solution_idstringобязательный

    The solution ID

  • viewenumобязательный

    What to read: 'definition' = full solution def, 'skills' = list skills, 'health' = live health check, 'status' = deploy status, 'export' = exportable bundle, 'validate' = re-validate from stored state, 'connectors_health' = connector status

ateam_get_spec

Получите спецификацию A-Team — схемы, правила валидации, системные инструменты, руководства для агентов и шаблоны. Начните здесь после начальной загрузки (bootstrap), чтобы понять, как создавать навыки и решения. Используйте 'section', чтобы получить только одну часть спецификации навыка (гораздо меньше полной спецификации). Используйте 'search' для поиска конкретных полей или концепций во всей спецификации. При проектировании персоны, которая оркестрирует логику с помощью run_python_script (шаблон Python-as-orchestrator), также получите topic='python_helpers' — это возвращает ссылку на пространство имён вспомогательных функций adas.. Навыки, разработанные без знания adas., создают в 5-10 раз большие / более хрупкие скрипты. При подключении виджетов (UI-плагинов) к решению, получите topic='widgets' — это возвращает спецификацию виджетов (модель каталога, блоки how_to_use, форму opener_call, правила формулировок персоны, семантику привязки), чтобы вы могли правильно объявить ui_plugins. Для реального каталога виджетов, фактически доступных в развёрнутом тенанте, используйте ateam_get_widget_catalog вметсо.

Параметры
  • searchstring

    Optional: filter the spec to only sections containing this search term. Works with any topic. Example: search='bootstrap' returns only fields/sections mentioning 'bootstrap'.

  • sectionenum

    Optional: get just one section of the skill spec (only works with topic='skill'). Sections: 'engine' = model/reasoning/planner optimization/bootstrap tools, 'tools' = tool definitions/meta tools, 'intents' = intents/problem/scenarios, 'policy' = access control/grants/workflows, 'triggers' = automation triggers, 'connectors' = connector linking/channels, 'role' = persona/goals, 'template' = minimal quick start, 'guide' = build steps/common mistakes

  • topicenumобязательный

    What to fetch: 'realizations' = HOW to build a capability: for each one the valid physical routes with use_when / do_not_use_when / execution / freshness, so device-dependent design picks a route deliberately instead of by accident. 'capabilities' = START HERE IF YOU ARE NEW — the capability index, organised by what a solution DOES rather than by our build artifacts: can I see what the user sees? talk with them out loud? know where they are and that they are moving? act while they sleep? remember each user? show them something? Each question gets a one-word answer (yes / yes-with-gaps / not yet / unknown) and the topics to read next. Every other topic below is named after an ARTIFACT, so if you do not already know our vocabulary this is the only door you can find by thinking about your own problem. 'overview' = API overview + endpoints, 'skill' = full skill spec, 'solution' = full solution spec, 'enums' = all enum values, 'connector-multi-user' = multi-user connector guide, 'python_helpers' = adas.* helper namespace for run_python_script orchestration (read this when designing personas that read state → call tools → checkpoint → status; without it, scripts hand-roll JSON parsing and tool delegation = 5-10x larger and brittler), 'widgets' = widget (UI plugin) spec: catalog model, how_to_use block shape (solution.json snippet + opener_call + persona_phrasing + binding_notes), and rules for declaring ui_plugins. Pair with ateam_get_widget_catalog for the live per-tenant inventory. 'ui-plugins' = the DEEP React Native (mobile) plugin build guide: author in rn-src/, compile with a build:rn esbuild script (format=cjs, target=es2015, external react/react-native/@adas/plugin-sdk) to rn-bundle/index.bundle.js, plain-object export — read this before authoring any MOBILE widget. 'device-capabilities' = THE DEVICE CAPABILITY MATRIX, GENERATED from the mobile SDK's own artefacts and stamped with their hashes: every native.* API (mechanical one-shot verbs), every deviceState.* domain (semantic state a reasoning loop reads, with freshness + confidence) and every server-called device.* tool, each with status (done / partial / shape-only / missing) and what is left. READ THIS before concluding the phone cannot do something — camera, video, scanning, vision, sensors, location, on-device storage. Absence from any other spec topic is NOT evidence. 'monitoring' = THE MONITORING CONTRACT: which tools are safe to call in a poll loop (with cost / poll interval / whether output stays bounded as the run grows), which are not and what to use instead, plus the running ateam-mcp version. Read this BEFORE writing any loop that watches a build — the safe poll is ateam_chain_status, never ateam_get_chain.

ateam_get_widget_catalog

Получает живой каталог виджетов (UI-плагинов), доступных в решении данного экземпляра. Возвращает виджеты, входящие в состав платформы + решения + объявленные навыком, каждый с готовым к вставке блоком how_to_use (фрагмент solution.json + opener_call + persona_phrasing + binding_notes). Используйте это при подключении виджетов к навыку или решению: блок how_to_use предназначен для дословного копирования в запись ui_plugins[] в solution.json и в формулировку открывающей фразы персонажа. Так вам не придётся писать ничего вручную. Каталог отражает то, что фактически развёрнуто в экземпляре прямо сейчас, а не абстрактную спецификацию (для самой спецификации используйте ateam_get_spec topic='widgets'). Источники: • 'platform' = виджеты, входящие в состав платформы (всегда доступны). • 'solution' = виджеты, входящие в состав решения данного экземпляра. • 'skill' = виджеты, объявленные конкретным навыком в решении. Аутентификация: передаёт ваш аутентифицированный api_key в Core (без участия мастер-секрета). Область действия экземпляра определяется самим ключом.

Параметры
  • formatenum

    Optional. 'full' (default) returns each widget with its paste-ready how_to_use block (solution.json snippet, opener_call, persona_phrasing, binding_notes). 'summary' returns just id/name/origin/description for a quick overview.

  • include_unusedboolean

    Optional. If true, includes widgets that are available but not currently referenced by any skill or ui_plugins entry. Default false (only widgets actually wired into the solution).

  • originenum

    Optional. Filter by widget origin. 'all' (default) returns everything. 'platform' = platform-bundled only. 'solution' = solution-bundled only. 'skill' = skill-declared only.

  • solution_idstring

    Optional. The solution to query. Defaults to the tenant's current solution.

ateam_get_workflows

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

Параметры

Без параметров.

ateam_github_diff

ПРЕДВАРИТЕЛЬНАЯ ПРОВЕРКА ПЕРЕД ПРОДВИЖЕНИЕМ. По умолчанию сравнивает dev (голова) и main (база): показывает точно, какие коммиты и файлы будут отправлены, если следующим вызвать ateam_github_promote(). Используйте это, когда хотите: • Просмотреть изменения перед продвижением в продакшн • Узнать, опережает ли dev main вообще (возвращает ahead_by: 0, если продвигать нечего) • Проверить произвольные сравнения веток/тегов/коммитов (переопределить base/head)

Параметры
  • basestring

    Base branch/tag/sha (the target — what you're comparing TO). Default: 'main'.

  • headstring

    Head branch/tag/sha (the source — what you're comparing FROM). Default: 'dev'.

  • solution_idstringобязательный

    The solution ID

ateam_github_list_versions

Выводит список всех доступных контрольных точек (теги safe-*) для решения. Показывает имя тега, дату, счётчик и SHA коммита. Используйте перед откатом, чтобы увидеть доступные точки восстановления.

Параметры
  • solution_idstringобязательный

    The solution ID

ateam_github_log

Просматривает историю коммитов для GitHub-репозитория решения. Показывает последние коммиты с сообщениями, SHA, временными метками и ссылками. По умолчанию читает из main (прод). Укажите ref: 'dev', чтобы увидеть текущую работу.

Параметры
  • limitnumber

    Max commits to return (default: 10)

  • refstring

    Branch to read commits from. Default: 'main'.

  • solution_idstringобязательный

    The solution ID

ateam_github_patch

Редактирует файл в GitHub-репозитории решения и делает коммит. Два режима: 1. FULL FILE: передаёшь content — заменяет весь файл (подходит для новых или маленьких файлов) 2. SEARCH/REPLACE: передаёшь search + replace — точечное редактирование без отправки полного файла (предпочтительно для больших файлов вроде server.js) Всегда используй search/replace для больших файлов (>5 КБ). Сначала всегда читай файл через ateam_github_read, чтобы получить точный текст для поиска. ПО УМОЛЧАНИЮ работает с веткой dev — изменения не трогают прод. Используй ateam_github_promote, чтобы перенести из dev → main, когда будет готово. Передавай ref:'main' только для экстренных исправлений.

Параметры
  • branchstring

    Branch to read/write (alias for ref). Declared so MCP does not strip it — an undeclared argument is dropped silently, which made a branch:"dev" read return main with no error.

  • contentstring

    The full file content to write (mode 1 — full file replacement)

  • messagestring

    Optional commit message (default: 'Update <path>')

  • pathstringобязательный

    File path to create/update (e.g. 'connectors/home-assistant-mcp/server.js')

  • refstring

    Target branch. Default: 'dev' (safe — won't touch prod). Use 'main' only for emergency hotfixes.

  • replacestring

    Text to replace the search string with (mode 2 — required with search)

  • searchstring

    Exact text to find in the file (mode 2 — search/replace). Must match exactly including whitespace.

  • solution_idstringобязательный

    The solution ID

ateam_github_promote

ПЕРЕНОС DEV В PROD. Сливает ветку dev с main и автоматически помечает новый HEAD в main как safe-YYYY-MM-DD-NNN. Используйте после тестирования вашей разработки в dev, когда вы готовы развернуть изменения в production. Рабочий процесс: 1) ateam_github_patch (записывает в dev) → 2) ateam_github_promote (сливает dev→main) → 3) ateam_build_and_run (развёртывает main). Передайте dry_run:true, чтобы увидеть, что будет перенесено, без слияния. ПРИ КОНФЛИКТЕ СЛИЯНИЯ 409: main содержит коммиты, которые dev никогда не получал. Вызовите ateam_github_sync_from_main(solution_id), чтобы слить main в dev, затем снова выполните promote. Только если ЭТО также вернёт 409, значит обе стороны редактировали одни и те же строки — это требует участия человека (откройте PR на GitHub).

Параметры
  • dry_runboolean

    If true: show the diff (commits + files about to ship) without merging. Default: false.

  • labelstring

    Optional: human-readable label for the auto-tag (e.g., 'v2 stable', 'before refactor')

  • skip_tagboolean

    If true: merge without creating an auto-tag. Default: false (auto-tag enabled).

  • solution_idstringобязательный

    The solution ID

ateam_github_pull

Развёртывает решение ИЗ его репозитория GitHub. Читает .ateam/export.json + исходный код коннектора из репозитория и передаёт их в конвейер развёртывания. Использует это для восстановления предыдущей версии или развёртывания из GitHub как источника истины.

Параметры
  • solution_idstringобязательный

    The solution ID to pull and deploy from GitHub

ateam_github_push

Отправляет текущее развёрнутое решение в GitHub. Автоматически создаёт репозиторий при первом использовании. Фиксирует атомарно полный пакет (решение + навыки + исходный код коннектора). Используйте после ateam_build_and_run, чтобы версионировать ваше решение, или в любой момент, когда хотите сделать снимок текущего состояния.

Параметры
  • messagestring

    Optional commit message (default: 'Deploy <solution_id>')

  • solution_idstringобязательный

    The solution ID (e.g. 'smart-home-assistant')

ateam_github_read

Читает любой файл из репозитория GitHub решения. Возвращает содержимое файла. Используйте, чтобы читать исходный код коннектора, определения скиллов или любой версионированный файл. По умолчанию читает из main (развёрнутое/продакшн состояние). Передайте ref: 'dev', чтобы читать незавершённую работу.

Параметры
  • branchstring

    Branch to read/write (alias for ref). Declared so MCP does not strip it — an undeclared argument is dropped silently, which made a branch:"dev" read return main with no error.

  • pathstringобязательный

    File path in the repo (e.g. 'connectors/home-assistant-mcp/server.js', 'solution.json', 'skills/order-support/skill.json')

  • refstring

    Branch, tag, or commit SHA to read from. Default: 'main' (prod). Use 'dev' to read in-progress work.

  • solution_idstringобязательный

    The solution ID

ateam_github_reconcile

Объедините расходящиеся ветки dev и main. Используйте, когда ateam_github_promote возвращает PROMOTE_NEEDS_HUMAN или PROMOTE_PRECONDITION_FAILED — то есть автоматическое обратное слияние main→dev не смогло разрешиться само. Сначала попробуйте sync_from_main; этот инструмент вызывает его внутренне (обычное слияние сохраняет обе стороны без принятия решения) и переходит к эскалации только тогда, когда git действительно конфликтует. При конфликте он создаёт коммит слияния с ДВУМЯ родителями, чтобы истории действительно соединились. Это важно: копирование дерева одной ветки поверх другой делает содержимое одинаковым, но не оставляет базы для слияния, поэтому следующее же продвижение снова конфликтует — одинаковое содержимое не означает согласованную историю. Конфликтующие файлы разрешаются пофайлово, ПОБЕЖДАЕТ НОВЕЙШИЙ, и каждое решение фиксируется. Свежесть — это эвристика, а не намерение: читайте решения. В реальном тенанте main содержал более новый solution.json, а dev — более новый widget, так что слепой выбор откатил бы один из них. КОМУ ЭТО НУЖНО: любому тенанту, чьи деплои предшествуют исправлению маршрутизации dev, который несёт коммиты только из main, написанные самой платформой, и сталкивается с этим при первом же продвижении после. Передайте dry_run:true, чтобы увидеть решения до записи чего-либо.

Параметры
  • dry_runboolean

    Report the per-file decisions without writing the merge commit.

  • solution_idstringобязательный

    The solution ID

ateam_github_rollback

Откати прод (ветку main) до предыдущего состояния. ADDITIVE — НЕ уничтожает историю. Создаёт новый коммит поверх main, дерево которого совпадает с деревом целевого коммита. История всего, что находится между целевым коммитом и текущим main, сохраняется (можно откатить откат). Порядок действий: 1) ateam_github_list_versions (найти тег safe-*) → 2) ateam_github_rollback(target: 'safe-...') → 3) ateam_build_and_run (разворачивает откаченное состояние).

Параметры
  • solution_idstringобязательный

    The solution ID

  • targetstringобязательный

    Tag (e.g., 'safe-2026-05-19-001') or commit SHA to revert main to. Use ateam_github_list_versions to find safe-* tags.

ateam_github_status

Проверяет, есть ли у решения репозиторий GitHub, его URL и последний коммит. Использует это, чтобы убедиться, что интеграция с GitHub работает для решения.

Параметры
  • solution_idstringобязательный

    The solution ID

ateam_github_sync_from_main

ПРИВОДИТ dev В АКТУАЛЬНОЕ СОСТОЯНИЕ ПО main — сливает main в dev. Зеркало ateam_github_promote. ИСПОЛЬЗУЙТЕ ЭТО, КОГДА PROMOTE ВОЗВРАЩАЕТ 409. promote переносит только dev → main, поэтому как только что-то попадает напрямую в main — hotfix, правка вручную, ateam_github_rollback или запись, которая ушла не в ту ветку — dev отстаёт и больше никогда нельзя сделать promote. Без этого инструмента расхождение с A-Team не исправить: варианты остаются только через веб-интерфейс GitHub или прямой вызов API. Рабочий процесс при 409: 1) ateam_github_diff (убедиться, что status:'diverged') → 2) ateam_github_sync_from_main → 3) ateam_github_promote. Сначала передайте dry_run:true, чтобы увидеть, какие именно коммиты и файлы попадут в dev, ничего не меняя. Это настоящий merge, не force: если main и dev изменили ОДНИ И ТЕ ЖЕ строки, тоже возвращается 409, и такой случай действительно требует вмешательства человека (откройте PR).

Параметры
  • dry_runboolean

    If true: show the commits + files that would merge into dev, change nothing. Default: false. Call this first.

  • solution_idstringобязательный

    The solution ID

ateam_github_write

Записывает файл в GitHub-репозиторий решения. Используйте это для создания новых файлов коннекторов или замены существующих — один файл за вызов. Это ОСНОВНОЙ способ записи кода коннектора после первого развёртывания. Записывайте каждый файл по отдельности (server.js, package.json, ресурсы UI), затем вызывайте ateam_github_promote() для отправки в продакшн (dev→main), затем ateam_build_and_run() для развёртывания. ПО УМОЛЧАНИЮ используется ветка dev.

Параметры
  • contentstringобязательный

    The full file content

  • messagestring

    Optional commit message (default: 'Write <path>')

  • pathstringобязательный

    File path to write (e.g. 'connectors/my-mcp/server.js', 'connectors/my-mcp/package.json')

  • refstring

    Target branch. Default: 'dev'.

  • solution_idstringобязательный

    The solution ID

ateam_list_solutions

Выведи список всех решений, развернутых в Skill Builder.

Параметры

Без параметров.

ateam_log_lesson

Запиши ОДИН урок, извлечённый в этом запуске, чтобы СЛЕДУЮЩИЙ запуск не учил его заново. Строительный агент начинает каждый запуск с нуля — он не знает, какой инструмент ввёл в заблуждение предыдущий запуск или какой обходной путь помог его обойти. Записывай урок в тот момент, когда инструмент вводит тебя в заблуждение И ты находишь выход. ТОЛЬКО ДОБАВЛЕНИЕ. Ты не можешь редактировать или удалять предыдущие уроки, и ты не указываешь временную метку — сервер проставляет её, поэтому её нельзя подделать. ОГОВОРКА О ПРОИСХОЖДЕНИИ, озвученная потому, что более ранняя формулировка давала завышенные обещания: job_id и actor записываются ТОЛЬКО когда вызывающий передаёт x-adas-job-id / x-adas-actor-id. Агент, вызывающий этот инструмент, не делает этого, поэтому эти поля обычно равны null — урок сейчас нельзя связать с запуском, который его породил, и по файлу нельзя отличить «три запуска столкнулись с этим» от «один запуск столкнулся с этим трижды». Не помещай идентификатор задания в error для компенсации; сохраняй это поле дословно. ЗАПИСЫВАЙ ТОЛЬКО ТО, ЧТО НАБЛЮДАЛ. Цитируй ошибку ДОСЛОВНО; никогда не перефразируй её и никогда не пиши теорий о внутреннем устройстве платформы. Неправильный урок хуже, чем отсутствие урока, потому что следующий запуск не может его проверить и будет действовать на его основе. Используй kind='misleading_success', когда вызов СООБЩИЛ об успехе, но то, что ты хотел, не произошло — этот класс самый дорогой для повторного обнаружения и невидим для лога, который записывает только сбои.

Параметры
  • errorstringобязательный

    The VERBATIM error or failed_steps fragment. Not a paraphrase.

  • kindenum

    failure = it errored; surprise = it worked but not as documented; misleading_success = it REPORTED success while the intended effect did not happen

  • solution_idstringобязательный

    The solution this lesson belongs to

  • toolstringобязательный

    The tool that misled you, e.g. "ateam_build_and_run"

  • workaroundstring

    What you did instead (optional)

  • workedboolean

    Did the workaround work? Omit if you never found out — 'unknown' is a real answer

ateam_log_progress

Записывай, что шаг сборки выполнен, чтобы потом не переделывать. Пиши СРАЗУ ПО ХОДУ, а не в конце — тем, кому нужен журнал, время не ждёт. ПОЧЕМУ: иначе продолжение не поймёт, что уже сделано, и запустит всё заново (bootstrap, get_workflows, list_solutions, get_solution, get_spec, get_examples, github_read), чтобы вытащить из документов то, что уже было — и распухнет промпт до того, что провайдер просто зависнет. Замер на 13 запусках: тормоза растут от РАЗМЕРА ПРОМПТА (~60k), а не от числа шагов. ateam_get_progress — ОДИН вызов вместо девяти. Статус — три значения, и важно третье: built — артефакт существует (файлы записаны, закоммичены) deployed — платформа его приняла verified — ТЫ ВЫЗВАЛ И ПОЛУЧИЛ НАСТОЯЩИЕ ДАННЫЕ verified ТРЕБУЕТ verified_by, а ответ на деплой — не проверка. connected и tools > 0 — это факты из tools/list: у клиники 9 инструментов, а каждый storage-вызов возвращал 401. Журнал, который заканчивается на deployed, фиксирует сборку как завершённую. Логируй заново тот же шаг при продвижении (built → deployed → verified) — важно последнее состояние, без истории изменений. Если шаг ОТКАТИЛСЯ, пиши его заново с более низким статусом: тишина не должна читаться как «всё в порядке».

Параметры
  • detailstring

    One line of what exists — e.g. '10 tools, 8 seeded appointments'.

  • solution_idstringобязательный

    The solution ID

  • statusenumобязательный

    built = artefact exists · deployed = platform accepted it · verified = you called it and got real data back

  • stepstringобязательный

    STABLE slug a later run can MATCH rather than enumerate: 'connector:<id>', 'skill:<id>', 'widget:<name>', 'seed:<what>'. Keep it identical across runs — a renamed step reads as a new one.

  • verified_bystring

    REQUIRED when status is 'verified': the literal call that proved it and what came back, e.g. 'ateam_test_connector(clinic-data-mcp, appointments.list_all) → 23 rows'. Storing the evidence beside the claim is what makes the journal auditable instead of self-reported.

ateam_patch

Точечно обновляет ЛЮБОЕ поле в определении навыка или решения, переразвёртывает и по желанию перетестирует — всё за один шаг. ⚠️ MERGE-BY-DEFAULT (v0.4.0) — Массивы защищены от молчаливой замены. Запись массива напрямую в solution.linked_skills / ui_plugins / platform_connectors / handoffs / grants / triggers (и т.д.) и skill.tools / connectors / handoffs / scenarios ОТКЛОНЯЕТСЯ, чтобы не потерять соседние элементы. Добавляйте или удаляйте элементы с помощью суффиксов _push / _delete / _update; соглашайтесь на полную замену массива, только когда вы действительно этого хотите. ОПЕРАЦИИ (безопасны по построению): 1. Скалярные (через точку): { "problem.statement": "новое значение", "role.persona": "Вы — ..." } 2. Глубоко вложенные: { "intents.thresholds.accept": 0.9, "policy.escalation.enabled": true } 3. ДОБАВЛЕНИЕ в массив: { "tools_push": [{ name: "new_tool", description: "..." }] } 4. УДАЛЕНИЕ из массива: { "tools_delete": ["tool_name"] } 5. ИЗМЕНЕНИЕ одного элемента: { "tools_update": [{ name: "existing_tool", description: "обновлено" }] } 6. ПОЛНАЯ ЗАМЕНА массива (по желанию): { "linked_skills": [...], "linked_skills_replace": true } — или { _replace: true, ... } для замены всех массивов в этом вызове. ПРИМЕРЫ ДЛЯ РЕШЕНИЯ (target='solution'): - ДОБАВЛЕНИЕ навыка в решение: updates: { "linked_skills_push": ["my-new-skill"] } ← НЕ { linked_skills: ["my-new-skill"] } (будет ОТКЛОНЕНО — потеряете остальные навыки) - УДАЛЕНИЕ навыка: updates: { "linked_skills_delete": ["old-skill"] } - ДОБАВЛЕНИЕ UI-плагина: updates: { "ui_plugins_push": [{ id: "mcp:conn:panel", ... }] } - ДОБАВЛЕНИЕ передачи (handoff): updates: { "handoffs_push": [{ id: "h1", ... }] } ПРИМЕРЫ ДЛЯ НАВЫКА (target='skill' + skill_id): - Изменение персоны: updates: { "role.persona": "Вы — дружелюбный ассистент" } - Добавление к персоне: updates: { "persona_append": "\n\nВСЕГДА отвечай в 2 предложениях." } - Добавление ограничения: updates: { "policy.guardrails.never_push": ["Никогда не сообщай пароли"] } - Добавление инструмента: updates: { "tools_push": [{ name: "conn.tool", description: "...", inputs: [...], output: {...} }] } - Изменение намерения: updates:…

Параметры
  • dry_runboolean

    If true, apply the patch in memory and return the diff (arrays_merged, arrays_replaced, dropped_ids, added_ids, would_write_bytes) WITHOUT writing to GitHub or redeploying. Preview a change before committing to it.

  • include_definitionboolean

    If true, return the FULL patched definition. Default false — the result returns a compact patched_summary instead, because the full definition can exceed the ~50KB output limit and truncate the rest of the result (redeploy status, widget_health).

  • skill_idstring

    Required when target is 'skill'. The skill ID to patch.

  • solution_idstringобязательный

    The solution ID

  • sourceenum

    Where the solution/skill definition lives. Omit (DEFAULT) — prefer the tenant's GitHub repo (GitHub is master), but AUTO-DEGRADE to the Builder FS store if the tenant hasn't connected a repo, so a simple def patch always succeeds (it's pushed to GitHub once connected). 'github' — force GitHub; fails loud if not connected (use when you specifically require the repo write). 'local' — force the Builder FS store, no GitHub (repo-less bootstrap tenant). Redeploy is local in all modes.

  • targetenumобязательный

    What to update: 'solution' for solution definition, 'skill' for skill definition fields (problem, role, intents, tools, policy, engine, scenarios, etc.)

  • test_messagestring

    Optional: re-test the skill after patching. Requires skill_id.

  • updatesobjectобязательный

    The update payload. Use dot notation for nested scalars (e.g. 'problem.statement': 'new value'). For arrays, use _push/_delete/_update suffixes (e.g. 'tools_push', 'tools_delete'). You can update ANY field in the skill definition: problem, role, intents, tools, policy, engine, scenarios, glossary, etc.

ateam_redeploy

Переразвернуть навыки БЕЗ изменения определений. ⚠️ ТЯЖЁЛАЯ ОПЕРАЦИЯ: заново генерирует MCP серверы (код на Python) для каждого навыка, отправляет каждый в A-Team Core, перезапускает коннекторы и проверяет обнаружение инструментов. Занимает 30-120 секунд в зависимости от количества навыков. Используйте после перезапусков коннекторов, сбоев Core или устаревшего состояния. Для инкрементальных изменений предпочитайте ateam_patch (обновляет и переразвёртывает за один шаг).

Параметры
  • skill_idstring

    Optional: redeploy a single skill only. Omit to redeploy ALL skills in the solution.

  • solution_idstringобязательный

    The solution ID to redeploy

ateam_show_skill_minimal

Показывает минимальное представление авторской части навыка — только persona, connectors, handoff_when, style и policy guardrails. ~10× меньше, чем ateam_get_solution(view:'skills') для того же навыка. Используйте, когда нужно только несократимое авторское содержимое (Phase 9 of the strip).

Параметры
  • skill_idstringобязательный

    The skill ID

  • solution_idstringобязательный

    The solution ID

ateam_show_solution_minimal

Показывает минимальное представление решения — только имя, описание, стиль, routing_mode, identity_mode, ID навыков и ID коннекторов. Пропускает развёрнутые метаданные, автосгенерированные передачи, разрешения, ui_plugins и результаты валидации. Используйте для быстрой проверки без многословных полей (9-й этап очистки).

Параметры
  • solution_idstringобязательный

    The solution ID

ateam_spec_search

Семантический поиск по ВСЕЙ документации /spec платформы ateam, глубокий запасной механизм для ateam_design_advisor. Задайте вопрос на естественном языке вида «как мне...» и получите наиболее релевантные фрагменты документации (с их темой и заголовком), затем прочитайте полную тему через ateam_get_spec(topic). Используйте это, когда подсказки советника недостаточно, или для получения подробностей/примеров по чему угодно, включая темы вне основного списка возможностей. Только для чтения.

Параметры
  • querystringобязательный

    Natural-language question, e.g. 'how do I send a proactive daily reminder?' or 'per-user persistence'.

  • top_knumber

    How many chunks to return (default 8, max 25).

ateam_status_all

Показывает статус синхронизации с GitHub для ВСЕХ тенантов и решений за один вызов. Требует аутентификации по мастер-ключу. Возвращает сводную таблицу решений каждого тенанта с их статусом синхронизации с GitHub.

Параметры

Без параметров.

ateam_sync_all

Синхронизировать ВСЕ тенанты: отправить Builder FS → GitHub, затем вытянуть GitHub → Core MongoDB. Требуется аутентификация с мастер-ключом. Возвращает сводную таблицу с результатами для каждого тенанта/решения.

Параметры
  • pull_onlyboolean

    Only pull from GitHub to Core (skip push). Default: false (full sync).

  • push_onlyboolean

    Only push to GitHub (skip pull to Core). Default: false (full sync).

ateam_test_abort

Прерывает выполняющийся тест. Передаёт chain_id, чтобы прервать ВЕСЬ прогон, каждую задачу в цепочке, и возвращает сведения об остановленных. Прерывание по job_id останавливает только эту задачу, оставляя handoffs выполняющимися. Останавливается на следующей границе итерации. (Продвинутое.)

Параметры
  • actor_idstring

    Optional. WHO is asking. A job belongs to an actor and Core enforces that on per-job reads, so a tenant key alone is refused. Usually unnecessary — the session remembers the actor from ateam_conversation/ateam_test_skill. Pass it to inspect a job run by a DIFFERENT actor (e.g. a real user's).

  • chain_idstring

    THE EXECUTION'S IDENTITY — what ateam_conversation returns and what you actually hold. A chain is the whole run: root job + every handoff + every askAnySkill subcall. Prefer this.

  • job_idstring

    Abort ONE job only. Prefer chain_id: aborting the root leaves handoffs running while reporting the test aborted.

  • skill_idstring

    The skill ID

  • solution_idstringобязательный

    The solution ID

ateam_test_connector

Вызывает инструмент на работающем коннекторе и возвращает результат. Используется для тестирования отдельных инструментов коннектора (например, triggers.list, entities.list, google.command) без развёртывания на клиенте. Коннектор должен быть подключён и работать.

Параметры
  • argsobject

    Optional: arguments to pass to the tool

  • connector_idstringобязательный

    The connector ID (e.g., 'home-assistant-mcp', 'google-home-mcp')

  • solution_idstringобязательный

    The solution ID

  • toolstringобязательный

    The tool name to call (e.g., 'triggers.list', 'entities.list', 'google.devices')

ateam_test_notification

Отправляет НАСТОЯЩЕЕ уведомление существующему актору в развёрнутом решении — для сквозного тестирования пути уведомлений, инициированных системой (каналы telegram/push/app). В отличие от ateam_test_skill (синтетический тестовый актор без каналов) и ateam_conversation (поток, инициированный пользователем), этот вызов идёт по пути /api/internal/notify-user, который используют PCM и другие смежные сервисы — поэтому реальные включённые каналы актора действительно получают сообщение. Используется для: • Дымового теста разветвления по каналам (telegram/push/app — доходит ли?) • Проверки результата доставки (статус ok/failed для каждого канала в ответе). Аутентификация: передаёт ваш api_key в Core (без привлечения master-secret). Tenant привязывается самим ключом — технически невозможно отправить уведомление в чужой tenant. ⚠️ БЕЗОПАСНОСТЬ: • Текст уведомления получает префикс [TEST] — виден пользователю, защита от фишинга. • Ограничение частоты: 10 вызовов в минуту на сессию. • Каждый вызов аудируется (кто вызвал, tenant, актор, хэш содержимого) независимо от результата. • actor_id ограничен вашим tenant — попытка обратиться к чужому tenant отклоняется из-за изоляции по tenant в Core на уровне Mongo. • reply_handler НЕ поддерживается при аутентификации через api-key (Core его игнорирует). Направление следующего ответа пользователя в произвольный навык — это поверхность для повышения привилегий. Для тестов маршрутизации и вовлечения используйте ateam_test_skill.

Параметры
  • actor_idstringобязательный

    Target actor ID in your tenant (e.g. 'usr_arie_admin_0001'). Must exist; Core rejects if not found in your tenant.

  • contentstringобязательный

    Notification text. Will be sent to all of the actor's enabled channels, prefixed with [TEST] for the recipient.

  • metadataobject

    Optional metadata merged into message.metadata. Useful for correlation IDs.

  • solution_idstringобязательный

    The solution ID (required for tenant scoping + audit context).

  • sourcestring

    Audit label for message.source. Default 'ateam-test'.

  • urgencyenum

    Notification urgency. Default 'normal'.

ateam_test_pipeline

Тестирует конвейер принятия решений (определение намерения → планирование) для навыка БЕЗ выполнения инструментов. Возвращает классификацию намерения, первое запланированное действие и время. Используйте это, чтобы отладить, почему навык неправильно классифицирует намерение или планирует неверное действие.

Параметры
  • messagestringобязательный

    The test message to classify and plan for

  • skill_idstringобязательный

    The skill ID to test

  • solution_idstringобязательный

    The solution ID

ateam_test_skill

Отправляет тестовое сообщение в развёрнутый скилл и возвращает результат выполнения. Режимы ожидания (wait_for): • 'root' (по умолчанию, обратная совместимость) — ждать завершения корневой задачи сообщения, вернуть результат одной задачи. Быстро, игнорирует любые подскиллы, которым корневая задача делегировала через askAnySkill. • 'chain' — ждать, пока КАЖДАЯ задача в цепочке (корневая + handoffs + вызовы askAnySkill, рекурсивно) не достигнет терминального состояния, затем вернуть полное дерево цепочки. Используйте при тестировании многоскилльных потоков (оркестратор → воркеры, билдеры → суббилдеры и т.д.). Поле response.chain содержит chainJobs[] с parentJobId/relation/depth и executionSteps[] с вложенностью инструментов (opId/parentOpId/_toolDepth). Legacy: wait:false эквивалентно wait_for:'never' — сразу возвращает job_id для опроса через ateam_test_status. wait:true — то же, что и wait_for:'root' по умолчанию.

Параметры
  • actor_idstring

    Optional actor ID for conversation continuity. Pass the actor_id from a previous test response to continue the conversation. Omit to auto-generate a test actor (test_<timestamp>_<random>, auto-expires in 24h).

  • chain_timeout_msnumber

    Optional. Max total ms to wait when wait_for:'chain'. Default 300000 (5 min). Long-running chains (skill-factory, large bundle builds) may need higher. Clamped to [10000, 900000].

  • messagestringобязательный

    The test message to send to the skill

  • skill_idstringобязательный

    The skill ID to test (original or internal ID)

  • solution_idstringобязательный

    The solution ID

  • waitboolean

    Legacy: if false, return job_id immediately for polling. If true or omitted, behaves like wait_for:'root'. Prefer wait_for going forward.

  • wait_forenum

    What to wait for before returning. 'root' (default) = root job done; 'chain' = every chain job terminal (use for multi-skill flows); 'never' = return job_id immediately (poll via ateam_test_status). When 'chain', the response includes the chain tree under response.chain.

ateam_test_status

Опрашивает прогресс асинхронного теста. Передайте chain_id для ВСЕГО прогона (рекомендуется — завершение корневого задания НЕ означает, что прогон завершён; может ещё выполняться передача). Передайте job_id, чтобы опросить одно задание: количество итераций, шаги вызова инструментов, статус и результат по завершении. Установите include_chain:true, чтобы ТАКЖЕ включить полное дерево цепочки (каждое задание в цепочке, начиная с этого job_id, со связями родитель-потомок). Используйте, когда это задание отправляет вызовы подзадач через askAnySkill и вы хотите получить единый снимок всего многоскиллового состояния вместо опроса каждого дочернего job_id по отдельности.

Параметры
  • actor_idstring

    Optional. WHO is asking. A job belongs to an actor and Core enforces that on per-job reads, so a tenant key alone is refused. Usually unnecessary — the session remembers the actor from ateam_conversation/ateam_test_skill. Pass it to inspect a job run by a DIFFERENT actor (e.g. a real user's).

  • chain_idstring

    THE EXECUTION'S IDENTITY — what ateam_conversation returns and what you actually hold. A chain is the whole run: root job + every handoff + every askAnySkill subcall. Prefer this.

  • include_chainboolean

    If true, includes response.chain — the full chain tree rooted at this job_id (chainJobs[] with parentJobId/relation/depth, executionSteps[] with tool-nesting). Costs one extra Core call. Default false (back-compat).

  • job_idstring

    ONE job inside the chain, when you want that job alone. Omit and pass chain_id for the whole run — a root job can be 'completed' while a handoff is still running.

  • skill_idstring

    The skill ID

  • solution_idstringобязательный

    The solution ID

ateam_test_voice

Симулирует голосовой разговор с развёрнутым решением. Запускает полный голосовой пайплайн (сессия → верификация вызывающего → промпт → диспетчер навыков → ответ), используя текст вместо аудио. Возвращает каждый шаг с ответом бота, статусом верификации, вызовами инструментов и сущностями. Используйте это, чтобы тестировать голосовые решения от начала до конца без телефонного звонка.

Параметры
  • messagesstring[]обязательный

    Array of user messages to send sequentially (simulates a multi-turn phone conversation)

  • phone_numberstring

    Optional: simulated caller phone number (e.g., '+14155551234'). If the number is in the solution's known phones list, the caller is auto-verified.

  • skill_slugstring

    Optional: target a specific skill by slug instead of using voice routing.

  • solution_idstringобязательный

    The solution ID

  • timeout_msnumber

    Optional: max wait time per skill execution in milliseconds (default: 60000).

ateam_upload_connector

Загрузить код коннектора в Core и перезапустить - БЕЗ переразвёртывания навыков. По умолчанию СЛИВАЕТ с состоянием GitHub на ref (значение по умолчанию: 'dev'). Отправка частичного набора файлов ТОЛЬКО накладывает эти файлы — остальная часть коннектора сохраняется из GitHub. Чтобы полностью заменить директорию коннектора (как раньше), передайте replace:true. Режимы: • github:true (без файлов) — развернуть состояние GitHub на ref как есть. • github:true + files:[] — состояние GitHub на ref как БАЗА, ваши файлы накладываются поверх (входящие побеждают). • files:[] (без github) — по умолчанию СЛИЯНИЕ с состоянием GitHub на ref. Отказывается, если базы GitHub нет (никакого молчаливого удаления). • files:[] + replace:true — полная замена. Стирает директорию коннектора и записывает только переданные файлы. Используйте осознанно. Распространённые ловушки, которые предотвращает такое поведение: • Баг до исправления (2026-06-06): отправка только ui-dist HTML удаляла server.js + node_modules — коннектор ломался до полной перезагрузки. Сейчас: эти файлы сливаются с базой GitHub. • Баг до исправления: github:true молча читал из main, даже когда патчи были на dev. Сейчас: по умолчанию — dev; передайте ref:'main', чтобы использовать старый путь.

Параметры
  • connector_idstringобязательный

    The connector ID to upload (e.g. 'personal-assistant-ui-mcp')

  • filesobject[]

    Files to upload — each needs 'path' plus ONE of content (inline string) or content_base64 (escape-safe base64; preferred for multi-file connectors). By default merges with the GitHub state at ref. Set replace:true to wipe the connector dir and write only these files.

  • forceboolean

    RECOVERY: respawn the connector + re-inject its CURRENT env even when the source is UNCHANGED. Normally an unchanged-source upload no-ops (unchanged:true) and leaves the process running. But a connector spawned before a shared-secret rotation keeps the STALE secret — it still lists tools (looks healthy) yet 401s on every per-actor call, with no recovery short of a fake source edit. Use ateam_upload_connector(solution_id, connector_id, github:true, force:true) to pull the current source and force a fresh respawn (which picks up the current secret). Default: false.

  • githubboolean

    If true, pull connector files from GitHub repo at ref. Default: false. Combine with files:[] to use GitHub as the base and overlay your files.

  • refstring

    GitHub branch to read from for the BASE state. Default: 'dev' (matches ateam_github_patch). Pass 'main' to read from production. Pre-2026-06-05 callers that relied on the silent-main default must pass ref:'main' explicitly.

  • replaceboolean

    Opt into FULL REPLACE: wipe the connector dir and write only the provided files. Default: false (= merge with GitHub state at ref). Use with intent — sending an incomplete file set with replace:true will break the connector.

  • solution_idstringобязательный

    The solution ID

ateam_verify

ОДИН вызов возвращает реальное конечное состояние выполнения решения: подключённые коннекторы, обнаруженные инструменты, каждый объявленный виджет, который действительно отображается, развёрнутые навыки — и точное указание на то, что именно не работает. Используйте его вместо того, чтобы гадать и проверять после развёртывания или исправления: он говорит правду (что реально запущено) и называет конкретную причину сбоя, а не общее предупреждение. Надёжен при любом подключении (запрос проходит через Builder, а не напрямую к Core).

Параметры
  • solution_idstringобязательный

    The solution ID to verify.

ateam_verify_consistency

Проверяет, синхронизированы ли состояние файловой системы Builder и состояние GitHub для решения. Только чтение — НЕ запускает деплой. Возвращает: • ok: true + drifts: [], если всё совпадает • ok: false + drifts: [{path, kind}], со списком файлов, которые различаются (типы: fs_missing, gh_missing, content_differs) Расхождение может появиться, когда GitHub пишет, а Builder FS не получает обновление зеркала (сбой сети, перезапуск контейнера посередине записи). Boot-синхронизация исправляет большую часть при следующем перезапуске бэкенда; этот инструмент выявляет расхождение раньше. Запускай после серии вызовов ateam_github_patch, чтобы убедиться, что бэкенд Builder согласован с GitHub, перед тем как вызывать ateam_build_and_run.

Параметры
  • solution_idstringобязательный

    The solution ID to verify

ateam_verify_surface

ПРОВЕРЯЕТ, что коннектор ui_plugin действительно отрисовывается С ДАННЫМИ — обязательное доказательство того, что видимое пользователю исправление UI выполнено. Плагин получает данные через postMessage от родительского окна, поэтому открытие его iframe в изоляции показывает пустое состояние и «подтверждает» ту самую ошибку, которую вы проверяете. Этот инструмент открывает плагин в НАСТОЯЩЕЙ поверхности хоста в headless Chromium, записывает каждый вызов инструмента MCP, который он делает, и возвращает { ok, verdict, visible_text, calls, failures }. Он различает «выдуманное имя инструмента» / «правильный инструмент, без данных» / «плагин никогда не запрашивал». FAIL-CLOSED: сбой в browser-mcp возвращает ok:false verdict:'inconclusive' (никогда не мягкий проход). Запускать ПОСЛЕ исправления UI/данных; цитируйте visible_text в своём отчёте. Требуется аутентификация.

Параметры
  • actor_idstring

    Optional actor to render as; defaults to the solution's context actor.

  • expectobject

    Optional assertion: { tools: ['memory.get', ...] } — each MUST be called by the plugin, else ok:false.

  • plugin_idstringобязательный

    The ui_plugin id to probe, e.g. 'mcp:accounting-mcp:spending-dashboard'.

  • solution_idstringобязательный

    The solution id.

Похожие MCP-сервера

localstack/localstack-mcp-server

localstack/localstack-mcp-server

официальный

MCP-сервер для управления LocalStack — эмулятором облака. Разворачивайте стек (Terraform, CDK, SAM), анализируйте логи и инжектируйте сбои. Помогает разработчикам и DevOps быстрее отлаживать облачн...

TypeScript27
rohitg00/kubectl-mcp-server

rohitg00/kubectl-mcp-server

MCP сервер для управления Kubernetes через естественный язык. Позволяет AI-ассистентам отлаживать сбои подов, развертывать приложения, оптимизировать затраты и проверять безопасность без ручного kubectl. Подходит DevOps и SRE.

Python956
depwire/depwire

depwire/depwire

Depwire – MCP сервер для AI-ассистентов, строящий детерминированный граф зависимостей кода на 16 языках. Позволяет симулировать удаление символов, проверять безопасность и оценивать архитектурное здоровье. Все 23 инструмента работают локально, без отправки кода.

TypeScript61
peter-j-thompson/semanticapi-mcp

peter-j-thompson/semanticapi-mcp

Semantic API MCP сервер для поиска API по описанию на естественном языке. Агенты Claude и ChatGPT получают endpoint, параметры, auth и примеры кода. Ускоряет поиск и интеграцию API.

Python1
babelcloud/gru-sandbox

babelcloud/gru-sandbox

GBOX - MCP сервер, дающий ИИ-агентам возможность управлять Android и Linux окружениями для тестирования и автоматизации. Подключается к Claude Code, Cursor и другим агентам через MCP, расширяя их возможности.

Go181
quantgeekdev/docker-mcp

quantgeekdev/docker-mcp

MCP сервер для управления Docker через Claude AI. Создавай контейнеры, разворачивай Compose-стэки и смотри логи — всё без командной строки. Идеально для DevOps, автоматизации развертывания и мониторинга. Минимум кликов, максимум контроля над инфраструктурой.

Python501
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин