Skip to main content
Glama

Server Details

Build, validate, and deploy multi-agent AI solutions from any AI environment.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
ariekogan/ateam-mcp
GitHub Stars
1
Server Listing
ateam-mcp

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.4/5 across 47 of 47 tools scored. Lowest: 3.2/5.

Server CoherenceA
Disambiguation4/5

Most tools have clearly distinct purposes, with detailed descriptions that differentiate similar functions like chain polling vs. chain inspection. However, there is slight overlap between ateam_design_advisor, ateam_get_spec, and ateam_spec_search, which all serve design guidance, potentially causing confusion if descriptions are not read carefully.

Naming Consistency4/5

The naming mostly follows a consistent verb_noun pattern with the 'ateam_' prefix (e.g., ateam_get_solution, ateam_create_connector, ateam_test_skill). Minor deviations include ateam_patch (missing object) and ateam_redeploy (verb only), but overall the pattern is predictable and clear.

Tool Count3/5

With 47 tools, the count is high and exceeds the typical 15-tool threshold for a well-scoped set. However, the tools cover a broad and complex platform (auth, deployment, testing, GitHub integration, scaffolding), and each tool appears to have a distinct role, making the count borderline acceptable rather than excessive.

Completeness4/5

The tool set covers the full lifecycle of building, deploying, testing, and managing A-Team solutions, including design, GitHub integration, and verification. Minor gaps exist, such as no explicit tool for deleting individual files (though patching can overwrite) and no standalone skill listing, but these are not critical dead ends for an agent.

Available Tools

47 tools
ateam_authInspect

Authenticate with A-Team. Required before any tenant-aware operation (reading solutions, deploying, testing, etc.). The user can get their API key at https://mcp.ateam-ai.com/get-api-key. Only global endpoints (spec, examples, validate) work without auth. IMPORTANT: Even if environment variables (ADAS_API_KEY) are configured, you MUST call ateam_auth explicitly — env vars alone are not sufficient. For cross-tenant admin operations, use master_key instead of api_key.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional API URL override (e.g., https://dev-api.ateam-ai.com). Use this to target a different environment without restarting the MCP server.
tenantNoTenant name (e.g., dev, main). Optional with api_key if format is adas_<tenant>_<hex>. REQUIRED with master_key.
api_keyNoYour A-Team API key (e.g., adas_xxxxx)
master_keyNoMaster key for cross-tenant operations. Authenticates across ALL tenants without per-tenant API keys. Requires tenant parameter.
ateam_bootstrapInspect

REQUIRED onboarding entrypoint for A-Team MCP. MUST be called when user greets, says hi, asks what this is, asks for help, explores capabilities, or when MCP is first connected. Returns platform explanation, example solutions, and assistant behavior instructions. Do NOT improvise an introduction — call this tool instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

ateam_build_and_runInspect

DEPLOY THE CURRENT MAIN BRANCH TO A-TEAM CORE. ⚠️ HEAVIEST OPERATION (60-180s): validates solution+skills → deploys all connectors+skills to Core (regenerates MCP servers) → health-checks → optionally runs a warm test → auto-pushes to GitHub.

🌳 DEV/PROD WORKFLOW:

  1. Edit files → ateam_github_patch (writes to dev branch by default)

  2. (Optional) Preview what's about to ship → ateam_github_diff

  3. Ship dev → main → ateam_github_promote (merges + auto-tags prod-YYYY-MM-DD-NNN)

  4. Deploy main to Core → ateam_build_and_run

This tool ALWAYS deploys the main branch — there is no ref parameter. To deploy in-progress dev work, first promote it.

AUTO-DETECTS GitHub repo: if you omit mcp_store and a repo exists, connector code is pulled from main automatically. First deploy requires mcp_store. After that, edit via ateam_github_patch + promote, then build_and_run. For small changes prefer ateam_patch (faster, incremental). Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
githubNoOptional: 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.
skillsNoOptional after first deploy: skill definitions. If omitted, auto-pulled from main (skills/{id}/skill.json).
solutionNoFull solution definition. Required on first deploy. After first deploy, just pass solution_id instead — everything is auto-pulled from GitHub main.
mcp_storeNoOptional: connector source code files. Key = connector id, value = array of {path, content}.
connectorsNoOptional: connector metadata (id, name, transport). Entry points auto-detected from mcp_store.
solution_idNoThe 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_messageNoOptional: send a test message after deployment to verify the skill works. Returns the full execution result.
test_skill_idNoOptional: which skill to test (defaults to the first skill).
ateam_chain_statusInspect

SLIM chain status — the chip-quick poll. Given a chain_id (from ateam_conversation), returns the WHOLE-CHAIN aggregate status cheaply: chain_status + chain_done (true only when the ENTIRE chain — root job + every handoff + askAnySkill subcall — is terminal), plus pending_question, result, and a short progress line.

This is what you poll on a loop after ateam_conversation — NOT ateam_get_chain (that returns the full tree; too heavy for periodic polling). A single job can finish while the chain is still running, so poll chain_done, not a job's status.

Loop: call every ~2s until chain_done === true (or pending_question is set — the assistant is waiting on the user). Then read result / fetch the full tree once via ateam_get_chain if you need per-job detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idYesThe chain id returned by ateam_conversation (the conversation's identity). Any job id in the chain also works — Core resolves the chain aggregate.
ateam_conversationInspect

Send a chat message to a deployed solution. No skill_id needed — the system auto-routes to the right skill.

ALWAYS ASYNC: returns a chain_id immediately — the assistant's reply is NOT in this response (a conversation can run for minutes across handoffs + subcalls, so a synchronous wait would hit the 100s edge timeout → 524).

POLL BY CHAIN, NEVER BY JOB: an individual job can terminate while the chain is still running, so poll ateam_chain_status(chain_id) on a loop (~2s) and stop when chain_done === true (or pending_question is set — the assistant is waiting on the user). That is the cheap chip-quick poll (Core's whole-chain computeChainStatus — the same thing the standard chat uses). Use ateam_get_chain(chain_id) only ONCE at the end if you want the full tree / per-job detail — it's too heavy to loop on.

Multi-turn: pass the actor_id from a previous response back in to continue the same thread (e.g. reply to a confirmation prompt). Each call starts a new chain; the same actor_id maintains conversation context.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe message to send (e.g., 'send email to X' or 'I confirm')
actor_idNoOptional: actor ID from a previous response to continue the conversation. Omit for a new conversation.
solution_idYesThe solution ID
ateam_create_connectorInspect

Scaffold a new MCP connector with server.js + package.json + README. Eliminates ~50% of identical boilerplate (MCP server setup, tool registration, stdio transport). You then fill in the tool implementations. Set ui_capable=true to include ui.listPlugins / ui.getPlugin stubs (plugin source files added separately via ateam_create_plugin). After scaffolding, the files are uploaded to Core via the same path as ateam_upload_connector.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoHuman-readable name for the connector (e.g. 'Hue Lights'). Defaults to connector_id.
ui_capableNoIf true, include ui.listPlugins/ui.getPlugin handler stubs. Default: false.
solution_idYesThe solution ID
connector_idYesConnector ID (lowercase-with-dashes, no spaces). Becomes the directory name.
ateam_create_pluginInspect

Scaffold a UI plugin (iframe HTML, React Native TSX, or both) inside an existing connector. Eliminates ~50% of identical plugin boilerplate (imports, theme/bridge hooks, postMessage protocol, default export shape). You then fill in the component body. Use kind='iframe' for web-only, 'rn' for mobile-only, 'adaptive' for both. Also writes ui-dist//manifest.json with the required render block.

⚠️ RENDERING IS NOT AUTOMATIC. At deploy, Phase 5 discovers plugins by calling each connector's ui.listPlugins + ui.getPlugin — a plugin only appears (and renders) if the connector ADVERTISES it there with a render.{mode, iframeUrl?, reactNative?} block. Dropping the scaffold files alone does NOT register it. If the connector generates its plugin list from ui-dist//manifest.json, the emitted manifest is picked up automatically; if the connector has a HARDCODED list (e.g. personal-assistant-ui-mcp: UI_PLUGINS[] + PLUGIN_MANIFESTS{} in server.js), you MUST add this plugin there (copy the render block from the manifest.json). Verify after deploy with ateam_get_solution(solution_id, 'connectors_health') or ateam_get_widget_catalog. Then declare it at solution ui_plugins[] so a skill can open it via sys.focusUiPlugin (see ateam_get_spec topic:'widgets').

The scaffold MERGES into the existing connector (server.js + other files preserved) — works on GitHub-backed AND repo-less tenants; merge base is the GitHub repo when connected, else the deployed connector source.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoRender mode. 'adaptive' (default) produces both iframe + RN scaffolds.
plugin_nameYesPlugin name (lowercase-with-dashes). E.g. 'memories-panel'. Becomes the dir name.
solution_idYesThe solution ID
connector_idYesExisting connector to add the plugin into (e.g. 'personal-assistant-ui-mcp')
ateam_delete_connectorInspect

⚠️ CASCADING — any skill whose engine.bootstrap_tools or tools[] name a tool from this connector will FAIL its next execution. Stops and deletes the connector from A-Team Core; drops references from the solution definition (grants, platform_connectors, ui_plugins ids starting mcp:<connector-id>:*) and skill definitions (connectors array); cleans up mcp-store files. GitHub source is preserved — a follow-up ateam_build_and_run(github:true) can resurrect. REQUIRES confirm:true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesREQUIRED. Must be exactly true. A missing/false value refuses the call with a recovery hint.
solution_idYesThe solution ID (e.g. 'smart-home-assistant')
connector_idYesThe connector ID to remove (e.g. 'device-mock-mcp')
ateam_delete_skillInspect

⚠️ IRREVERSIBLE in Core + Builder FS — kills the running MCP process, unregisters from skill registry, deletes the Mongo record, drops from solution.skills[] and solution.linked_skills, and removes the skill's files from Builder FS. REQUIRES confirm:true. RECOVERY: the skill still lives in GitHub — ateam_github_pull rebuilds the whole solution (no per-skill restore path).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesREQUIRED. Must be exactly true. A missing/false value refuses the call with a recovery hint.
skill_idYesThe skill ID to remove (e.g. 'linkedin-agent')
solution_idYesThe solution ID (e.g. 'personal-adas')
ateam_delete_solutionInspect

⚠️ IRREVERSIBLE — kills Mongo state, running MCP processes, and Builder FS for the whole solution and every skill. REQUIRES confirm:true AND confirm_solution_id echoing the solution id you're destroying (defeats typos and hallucinated ids). RECOVERY: the GitHub repo is untouched; ateam_github_pull rebuilds the solution from main. Prefer that over re-deploying from memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesREQUIRED. Must be exactly true. A missing/false value refuses the call with a recovery hint.
solution_idYesThe solution ID to delete
confirm_solution_idYesREQUIRED. Must exactly equal `solution_id`. This defeats typos and hallucinated ids — you can't wipe a solution you couldn't spell.
ateam_design_advisorInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesWhat 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').
design_stateNoOptional. The design so far (skills, connectors, capabilities already wired) so the advisor can point at what's still missing. Pass {} at the start.
ateam_get_chainInspect

Inspect the full chain tree for any job — rooted at the given job_id, walking down through every handoff and askAnySkill subcall.

Use when a chain has already run and you want to analyze the structure: which skill called which, how deep the call tree went, which tool inside which job invoked which sub-tool. The two main shapes: • response.chain.chainJobs[] — one entry per job in the chain. Fields: jobId, skill, status, iteration, depth (0 = root, +1 per askAnySkill subcall hop), relation ('root' | 'subcall' | 'handoff'), parentJobId, parentSkill, goal. • response.chain.executionSteps[] — every tool call across all chain jobs, tagged with _skill, _jobId, _depth (= job depth), _relation, _parentSkill, _parentJobId, _toolDepth (tool-in-tool nesting via opId/parentOpId).

Differs from ateam_test_status by purpose: status is for live polling of a job you just kicked off; get_chain is for post-hoc tree analysis (debugging multi-skill flows, regression testing, comparing two runs).

Auth: forwards your authed api_key. Tenant scoped by the key itself. Actor scoping: you can only inspect chains rooted at jobs your actor has access to.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe root job ID of the chain to inspect (or any job inside the chain — Core walks up to the root).
skill_slugNoOptional. 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_sourceInspect

Read the source code files of a deployed MCP connector. Returns all files (server.js, package.json, etc.) stored in the mcp_store for this connector. Use this BEFORE patching or rewriting a connector — always read the current code first so you can make surgical fixes instead of blind full rewrites.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoOptional. 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_idYesThe solution ID (e.g. 'smart-home-assistant')
connector_idYesThe connector ID to read (e.g. 'home-assistant-mcp')
ateam_get_examplesInspect

Get complete working examples that pass validation. Study these before building your own.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesExample 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), 'index' = list all available examples
ateam_get_solutionInspect

Read solution state — definition, skills, health, status, or export. Use this to inspect deployed solutions.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewYesWhat 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
skill_idNoOptional: read a specific skill by ID (original or internal)
solution_idYesThe solution ID
ateam_get_specInspect

Get the A-Team specification — schemas, validation rules, system tools, agent guides, and templates. Start here after bootstrap to understand how to build skills and solutions. Use 'section' to get just one part of the skill spec (much smaller than the full spec). Use 'search' to find specific fields or concepts across the spec.

When designing a persona that orchestrates logic via run_python_script (the Python-as-orchestrator pattern), also fetch topic='python_helpers' — that returns the adas.* helper namespace reference. Skills designed without knowing about adas.* produce 5-10x larger / brittler scripts.

When wiring widgets (UI plugins) into a solution, fetch topic='widgets' — that returns the widget spec (catalog model, how_to_use blocks, opener_call shape, persona phrasing rules, binding semantics) so you can declare ui_plugins correctly. For the live catalog of widgets actually available in a deployed tenant, use ateam_get_widget_catalog instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesWhat to fetch: '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.
searchNoOptional: filter the spec to only sections containing this search term. Works with any topic. Example: search='bootstrap' returns only fields/sections mentioning 'bootstrap'.
sectionNoOptional: 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
ateam_get_widget_catalogInspect

Get the live catalog of widgets (UI plugins) available in this tenant's solution. Returns platform-bundled + solution-bundled + skill-declared widgets, each with a paste-ready how_to_use block (solution.json snippet + opener_call + persona_phrasing + binding_notes).

Use this when wiring widgets into a skill or solution — the how_to_use block is designed to be copied verbatim into the solution.json ui_plugins[] entry and into the persona's opener phrasing, so you don't have to hand-roll either. The catalog reflects what is actually deployed in the tenant right now, not the abstract spec (for the spec itself, use ateam_get_spec topic='widgets').

Origins: • 'platform' = widgets bundled with the platform (always available). • 'solution' = widgets bundled with this tenant's solution. • 'skill' = widgets declared by a specific skill in the solution.

Auth: forwards your authed api_key to Core (no master-secret involvement). Tenant scope is pinned by the key itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOptional. '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.
originNoOptional. Filter by widget origin. 'all' (default) returns everything. 'platform' = platform-bundled only. 'solution' = solution-bundled only. 'skill' = skill-declared only.
solution_idNoOptional. The solution to query. Defaults to the tenant's current solution.
include_unusedNoOptional. 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).
ateam_get_workflowsInspect

Get the builder workflows — step-by-step state machines for building skills and solutions. Use this to guide users through the entire build process conversationally. Returns phases, what to ask, what to build, exit criteria, and tips for each stage.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

ateam_github_diffInspect

PRE-FLIGHT BEFORE PROMOTE. Compares dev (head) vs main (base) by default — shows exactly which commits and files are about to ship if you call ateam_github_promote() next.

Use this when you want to: • Review changes before promoting to prod • See if dev is ahead of main at all (returns ahead_by: 0 if nothing to promote) • Inspect arbitrary branch/tag/commit comparisons (override base/head)

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNoBase branch/tag/sha (the target — what you're comparing TO). Default: 'main'.main
headNoHead branch/tag/sha (the source — what you're comparing FROM). Default: 'dev'.dev
solution_idYesThe solution ID
ateam_github_list_versionsInspect

List all available checkpoints (safe-* tags) for a solution. Shows tag name, date, counter, and commit SHA. Use before rollback to see available safe points.

ParametersJSON Schema
NameRequiredDescriptionDefault
solution_idYesThe solution ID
ateam_github_logInspect

View commit history for a solution's GitHub repo. Shows recent commits with messages, SHAs, timestamps, and links. Default reads from main (prod). Pass ref: 'dev' to see in-progress work.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoBranch to read commits from. Default: 'main'.main
limitNoMax commits to return (default: 10)
solution_idYesThe solution ID
ateam_github_patchInspect

Edit a file in the solution's GitHub repo and commit. Two modes:

  1. FULL FILE: provide content — replaces entire file (good for new files or small files)

  2. SEARCH/REPLACE: provide search + replace — surgical edit without sending full file (preferred for large files like server.js) Always use search/replace for large files (>5KB). Always read the file first with ateam_github_read to get the exact text to search for.

DEFAULTS TO dev BRANCH — writes don't touch prod. Use ateam_github_promote to ship dev→main when ready. Pass ref:'main' only for emergency hotfixes.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoTarget branch. Default: 'dev' (safe — won't touch prod). Use 'main' only for emergency hotfixes.dev
pathYesFile path to create/update (e.g. 'connectors/home-assistant-mcp/server.js')
searchNoExact text to find in the file (mode 2 — search/replace). Must match exactly including whitespace.
contentNoThe full file content to write (mode 1 — full file replacement)
messageNoOptional commit message (default: 'Update <path>')
replaceNoText to replace the search string with (mode 2 — required with search)
solution_idYesThe solution ID
ateam_github_promoteInspect

SHIP DEV TO PROD. Merges the dev branch into main and auto-tags the new main HEAD as safe-YYYY-MM-DD-NNN. Use after testing your dev work, when you're ready to deploy changes to production.

Workflow: 1) ateam_github_patch (writes to dev) → 2) ateam_github_promote (merges dev→main) → 3) ateam_build_and_run (deploys main).

Pass dry_run:true to see what's about to ship without merging. On merge conflict the call returns 409 — resolve manually on GitHub (open a PR or use the web UI), then retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoOptional: human-readable label for the auto-tag (e.g., 'v2 stable', 'before refactor')
dry_runNoIf true: show the diff (commits + files about to ship) without merging. Default: false.
skip_tagNoIf true: merge without creating an auto-tag. Default: false (auto-tag enabled).
solution_idYesThe solution ID
ateam_github_pullInspect

Deploy a solution FROM its GitHub repo. Reads .ateam/export.json + connector source from the repo and feeds it into the deploy pipeline. Use this to restore a previous version or deploy from GitHub as the source of truth.

ParametersJSON Schema
NameRequiredDescriptionDefault
solution_idYesThe solution ID to pull and deploy from GitHub
ateam_github_pushInspect

Push the current deployed solution to GitHub. Auto-creates the repo on first use. Commits the full bundle (solution + skills + connector source) atomically. Use after ateam_build_and_run to version your solution, or anytime you want to snapshot the current state.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoOptional commit message (default: 'Deploy <solution_id>')
solution_idYesThe solution ID (e.g. 'smart-home-assistant')
ateam_github_readInspect

Read any file from a solution's GitHub repo. Returns the file content. Use this to read connector source code, skill definitions, or any versioned file. Default reads from main (deployed/prod state). Pass ref: 'dev' to read in-progress work.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoBranch, tag, or commit SHA to read from. Default: 'main' (prod). Use 'dev' to read in-progress work.main
pathYesFile path in the repo (e.g. 'connectors/home-assistant-mcp/server.js', 'solution.json', 'skills/order-support/skill.json')
solution_idYesThe solution ID
ateam_github_rollbackInspect

Roll prod (main branch) back to a previous state.

ADDITIVE — does NOT destroy history. Creates a new commit on top of main whose tree matches the target's tree. The history of everything between target and current main is preserved (you can roll back the rollback).

Workflow: 1) ateam_github_list_versions (find a safe-* tag) → 2) ateam_github_rollback(target: 'safe-...') → 3) ateam_build_and_run (deploys the reverted state).

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesTag (e.g., 'safe-2026-05-19-001') or commit SHA to revert main to. Use ateam_github_list_versions to find safe-* tags.
solution_idYesThe solution ID
ateam_github_statusInspect

Check if a solution has a GitHub repo, its URL, and the latest commit. Use this to verify GitHub integration is working for a solution.

ParametersJSON Schema
NameRequiredDescriptionDefault
solution_idYesThe solution ID
ateam_github_writeInspect

Write a file to the solution's GitHub repo. Use this to create new connector files or replace existing ones — one file per call. This is the PRIMARY way to write connector code after first deploy. Write each file individually (server.js, package.json, UI assets), then call ateam_github_promote() to ship to prod (dev→main), then ateam_build_and_run() to deploy.

DEFAULTS TO dev BRANCH.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoTarget branch. Default: 'dev'.dev
pathYesFile path to write (e.g. 'connectors/my-mcp/server.js', 'connectors/my-mcp/package.json')
contentYesThe full file content
messageNoOptional commit message (default: 'Write <path>')
solution_idYesThe solution ID
ateam_list_solutionsInspect

List all solutions deployed in the Skill Builder.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

ateam_patchInspect

Surgically update ANY field in a skill or solution definition, redeploy, and optionally re-test — all in one step.

⚠️ MERGE-BY-DEFAULT (v0.4.0) — Arrays are protected from silent replace. Bare array writes on solution.linked_skills / ui_plugins / platform_connectors / handoffs / grants / triggers (etc.) and skill.tools / connectors / handoffs / scenarios are REFUSED to prevent sibling loss. Add or remove items with the _push / _delete / _update suffixes; opt into a full-array replace only when you really mean it.

OPERATIONS (safe by construction):

  1. Scalar (dot notation): { "problem.statement": "new value", "role.persona": "You are..." }

  2. Deep nested: { "intents.thresholds.accept": 0.9, "policy.escalation.enabled": true }

  3. Array APPEND: { "tools_push": [{ name: "new_tool", description: "..." }] }

  4. Array REMOVE: { "tools_delete": ["tool_name"] }

  5. Array MODIFY-ONE: { "tools_update": [{ name: "existing_tool", description: "updated" }] }

  6. Full-array REPLACE (opt-in): { "linked_skills": [...], "linked_skills_replace": true } — or { _replace: true, ... } to opt every array in this call.

SOLUTION-LEVEL EXAMPLES (target='solution'):

  • ADD a skill to the solution: updates: { "linked_skills_push": ["my-new-skill"] } ← NOT { linked_skills: ["my-new-skill"] } (that would REFUSE — it drops your other skills)

  • REMOVE a skill: updates: { "linked_skills_delete": ["old-skill"] }

  • ADD a UI plugin: updates: { "ui_plugins_push": [{ id: "mcp:conn:panel", ... }] }

  • ADD a handoff: updates: { "handoffs_push": [{ id: "h1", ... }] }

SKILL-LEVEL EXAMPLES (target='skill' + skill_id):

  • Change persona: updates: { "role.persona": "You are a friendly assistant" }

  • Append to persona: updates: { "persona_append": "\n\nALWAYS respond in 2 sentences." }

  • Add a guardrail: updates: { "policy.guardrails.never_push": ["Never share passwords"] }

  • Add a tool: updates: { "tools_push": [{ name: "conn.tool", description: "...", inputs: [...], output: {...} }] }

  • Change intent: updates: { "intents.supported_update": [{ id: "i1", description: "new desc" }] }

  • CREATE a new skill: target='skill', skill_id='my-new-skill', updates: { "problem.statement": "...", "role.persona": "..." } — auto-scaffolded and added to solution topology.

PREVIEW BEFORE WRITING: pass dry_run:true to see the diff (arrays_merged, arrays_replaced, dropped_ids, added_ids) without applying. Use this before any destructive-looking edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoWhere the solution/skill definition lives. 'github' (DEFAULT) — read from and write to the tenant's GitHub repo (GitHub is master; the normal path). 'local' — read from and write to the Builder FS store (no GitHub repo required). Use 'local' ONLY for a repo-less bootstrap tenant (e.g. freshly onboarded from a template, before GitHub is connected). This is a DEDICATED, EXPLICIT switch — never a fallback. Redeploy is local in both modes.
targetYesWhat to update: 'solution' for solution definition, 'skill' for skill definition fields (problem, role, intents, tools, policy, engine, scenarios, etc.)
dry_runNoIf 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.
updatesYesThe 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.
skill_idNoRequired when target is 'skill'. The skill ID to patch.
solution_idYesThe solution ID
test_messageNoOptional: re-test the skill after patching. Requires skill_id.
include_definitionNoIf 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).
ateam_redeployInspect

Re-deploy skills WITHOUT changing any definitions. ⚠️ HEAVY OPERATION: regenerates MCP servers (Python code) for every skill, pushes each to A-Team Core, restarts connectors, and verifies tool discovery. Takes 30-120s depending on skill count. Use after connector restarts, Core hiccups, or stale state. For incremental changes, prefer ateam_patch (which updates + redeploys in one step).

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_idNoOptional: redeploy a single skill only. Omit to redeploy ALL skills in the solution.
solution_idYesThe solution ID to redeploy
ateam_show_skill_minimalInspect

Show the minimal authoring view of a skill — persona + connectors + handoff_when + style + policy guardrails only. ~10× smaller than ateam_get_solution(view:'skills') for the same skill. Use this when you only need the irreducible author content (Phase 9 of the strip).

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_idYesThe skill ID
solution_idYesThe solution ID
ateam_show_solution_minimalInspect

Show the minimal authoring view of a solution — name + description + style + routing_mode + identity_mode + skill ids + connector ids only. Skips deployed metadata, handoffs (auto-generated), grants, ui_plugins, validation results. Use this for fast inspection without the verbose fields (Phase 9 of the strip).

ParametersJSON Schema
NameRequiredDescriptionDefault
solution_idYesThe solution ID
ateam_status_allInspect

Show GitHub sync status for ALL tenants and solutions in one call. Requires master key authentication. Returns a summary table of every tenant's solutions with their GitHub sync state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

ateam_sync_allInspect

Sync ALL tenants: push Builder FS → GitHub, then pull GitHub → Core MongoDB. Requires master key authentication. Returns a summary table with results for each tenant/solution.

ParametersJSON Schema
NameRequiredDescriptionDefault
pull_onlyNoOnly pull from GitHub to Core (skip push). Default: false (full sync).
push_onlyNoOnly push to GitHub (skip pull to Core). Default: false (full sync).
ateam_test_abortInspect

Abort a running skill test. Stops the job execution at the next iteration boundary. (Advanced.)

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job ID to abort
skill_idYesThe skill ID
solution_idYesThe solution ID
ateam_test_connectorInspect

Call a tool on a running connector and get the result. Use this to test individual connector tools (e.g., triggers.list, entities.list, google.command) without deploying to a client. The connector must be connected and running.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoOptional: arguments to pass to the tool
toolYesThe tool name to call (e.g., 'triggers.list', 'entities.list', 'google.devices')
solution_idYesThe solution ID
connector_idYesThe connector ID (e.g., 'home-assistant-mcp', 'google-home-mcp')
ateam_test_notificationInspect

Fire a REAL notification at an existing actor in a deployed solution — for end-to-end testing of the system-initiated notification path (telegram/push/app channels).

Unlike ateam_test_skill (synthetic test actor with no channels) and ateam_conversation (user-initiated thread), this calls the /api/internal/notify-user path that PCM and other sibling services use — so the actor's real enabled channels actually receive the message.

Use for: • Channel fan-out smoke (does telegram/push/app actually receive it?) • Delivery-result verification (per-channel ok/failed in the response).

Auth: forwards your authed api_key to Core (no master-secret involvement). Tenant is pinned by the key itself — cross-tenant targeting is structurally impossible.

⚠️ SAFETY: • The text is prefixed with [TEST] in the actual notification — visible to the user, anti-phishing. • Rate-limited: 10 calls/min per session. • Every call is audited (caller, tenant, actor, content hash) regardless of outcome. • actor_id is scoped to your tenant — cross-tenant targeting is rejected by Core's per-tenant Mongo isolation. • reply_handler is NOT supported via api-key auth (Core ignores it). Routing the user's next reply to an arbitrary skill is a privilege-escalation surface. For routing/engagement tests, use ateam_test_skill.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoAudit label for message.source. Default 'ateam-test'.
contentYesNotification text. Will be sent to all of the actor's enabled channels, prefixed with [TEST] for the recipient.
urgencyNoNotification urgency. Default 'normal'.
actor_idYesTarget actor ID in your tenant (e.g. 'usr_arie_admin_0001'). Must exist; Core rejects if not found in your tenant.
metadataNoOptional metadata merged into message.metadata. Useful for correlation IDs.
solution_idYesThe solution ID (required for tenant scoping + audit context).
ateam_test_pipelineInspect

Test the decision pipeline (intent detection → planning) for a skill WITHOUT executing tools. Returns intent classification, first planned action, and timing. Use this to debug why a skill classifies intent incorrectly or plans the wrong action.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe test message to classify and plan for
skill_idYesThe skill ID to test
solution_idYesThe solution ID
ateam_test_skillInspect

Send a test message to a deployed skill and get the execution result.

Wait modes (wait_for): • 'root' (default, back-compat) — wait until the message's root job completes, return single-job result. Fast, ignores any sub-skills the root delegated to via askAnySkill. • 'chain' — wait until EVERY job in the chain (root + handoffs + askAnySkill subcalls, recursively) reaches a terminal state, then return the full chain tree. Use when testing multi-skill flows (orchestrator → workers, builders → sub-builders, etc.). The response.chain field carries chainJobs[] with parentJobId/relation/depth and executionSteps[] with tool-nesting (opId/parentOpId/_toolDepth).

Legacy: wait:false is equivalent to wait_for:'never' — returns job_id immediately for polling via ateam_test_status. wait:true is the same as the default wait_for:'root'.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoLegacy: if false, return job_id immediately for polling. If true or omitted, behaves like wait_for:'root'. Prefer wait_for going forward.
messageYesThe test message to send to the skill
actor_idNoOptional 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).
skill_idYesThe skill ID to test (original or internal ID)
wait_forNoWhat 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.
solution_idYesThe solution ID
chain_timeout_msNoOptional. 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].
ateam_test_statusInspect

Poll the progress of an async skill test. Returns iteration count, tool call steps, status (running/completed/failed), and result when done.

Set include_chain:true to ALSO include the full chain tree (every job in the chain, rooted at this job_id, with parent/child linkage). Use when this job dispatched askAnySkill subcalls and you want a single snapshot of the whole multi-skill state instead of polling each child job_id separately.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job ID returned by ateam_test_skill
skill_idYesThe skill ID
solution_idYesThe solution ID
include_chainNoIf 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).
ateam_test_voiceInspect

Simulate a voice conversation with a deployed solution. Runs the full voice pipeline (session → caller verification → prompt → skill dispatch → response) using text instead of audio. Returns each turn with bot response, verification status, tool calls, and entities. Use this to test voice-enabled solutions end-to-end without making a phone call.

ParametersJSON Schema
NameRequiredDescriptionDefault
messagesYesArray of user messages to send sequentially (simulates a multi-turn phone conversation)
skill_slugNoOptional: target a specific skill by slug instead of using voice routing.
timeout_msNoOptional: max wait time per skill execution in milliseconds (default: 60000).
solution_idYesThe solution ID
phone_numberNoOptional: simulated caller phone number (e.g., '+14155551234'). If the number is in the solution's known phones list, the caller is auto-verified.
ateam_upload_connectorInspect

Upload connector code to Core and restart — WITHOUT redeploying skills.

MERGES with the GitHub state at ref by default (default ref: 'dev'). Sending a partial file set ONLY overlays those files — the rest of the connector is preserved from GitHub. To fully replace the connector dir (historical behavior), pass replace:true.

Modes: • github:true (no files) — deploy the GitHub state at ref as-is. • github:true + files:[] — GitHub state at ref as BASE, your files overlay on top (incoming wins). • files:[] (no github) — default MERGE with GitHub state at ref. Refuses if no GitHub base exists (no silent nuke). • files:[] + replace:true — full replace. Wipes connector dir + writes only the provided files. Use deliberately.

Common traps this design prevents: • Pre-fix bug (2026-06-06): sending just ui-dist HTML wiped server.js + node_modules — connector broke until a full re-upload. Now: those files merge with the GitHub base. • Pre-fix bug: github:true silently read from main even when patches were on dev. Now: defaults to dev; pass ref:'main' to opt into the legacy path.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoGitHub 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.
filesNoFiles to upload. By default merges with the GitHub state at `ref`. Set replace:true to wipe the connector dir and write only these files.
githubNoIf true, pull connector files from GitHub repo at `ref`. Default: false. Combine with files:[] to use GitHub as the base and overlay your files.
replaceNoOpt 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_idYesThe solution ID
connector_idYesThe connector ID to upload (e.g. 'personal-assistant-ui-mcp')
ateam_verifyInspect

ONE call that returns the REAL runtime end-state of a solution — connectors connected + tools discovered, every declared widget actually rendering, skills deployed — with the EXACT failing gaps. Use this instead of guess-and-check after a deploy/patch: it tells you the truth (what's actually live) and names precisely what's broken, not a generic warning. Reliable from any connection (routes through the Builder, not a direct Core call).

ParametersJSON Schema
NameRequiredDescriptionDefault
solution_idYesThe solution ID to verify.
ateam_verify_consistencyInspect

Check that the Builder filesystem state and GitHub state are in sync for a solution. Read-only probe — does NOT trigger a deploy.

Returns: • ok: true + drifts: [] if everything matches • ok: false + drifts: [{path, kind}] listing files that differ (kinds: fs_missing, gh_missing, content_differs)

Drift can creep in when GitHub writes happen but Builder FS doesn't get the mirror update (network blip, container restart mid-write). Boot sync heals most of it on next backend restart; this tool surfaces drift earlier.

Run after a series of ateam_github_patch calls to confirm the Builder backend is consistent with GitHub before you ateam_build_and_run.

ParametersJSON Schema
NameRequiredDescriptionDefault
solution_idYesThe solution ID to verify

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.