Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.ariekogan/ateam-mcp

REMOTE · MCP.ATEAM-AI.COM · 2 COMPONENTS · SCANNED SEP 22

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

0 this week 31 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security78
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
  • Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
  • Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified

Unverified: 6 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.

Install

How do I install the io.github.ariekogan/ateam-mcp server?

io.github.ariekogan/ateam-mcp is a hosted endpoint at https://mcp.ateam-ai.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.ateam-ai.com

# add to Claude Code
claude mcp add --transport http ariekogan-ateam-mcp 'https://mcp.ateam-ai.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "ariekogan-ateam-mcp": {
      "url": "https://mcp.ateam-ai.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "ariekogan-ateam-mcp": {
      "type": "http",
      "url": "https://mcp.ateam-ai.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.ariekogan-ateam-mcp]
url = "https://mcp.ateam-ai.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ariekogan-ateam-mcp": {
      "type": "remote",
      "url": "https://mcp.ateam-ai.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ariekogan-ateam-mcp --url 'https://mcp.ateam-ai.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  ariekogan-ateam-mcp:
    url: "https://mcp.ateam-ai.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "ariekogan-ateam-mcp": {
      "Transport": "http",
      "Url": "https://mcp.ateam-ai.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add ariekogan-ateam-mcp -t streamable-http -u 'https://mcp.ateam-ai.com/mcp'
// mcp.json
{
  "mcpServers": {
    "ariekogan-ateam-mcp": {
      "type": "http",
      "url": "https://mcp.ateam-ai.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 11 Sept 26 −40
    • Endpoint reachability: reachable → behind authorisation security
    • Transport: pass → unverified security
    • Tool safety: pass → unverified security
    • Stability: pass → unverified security
    • HTTPS: fail → unverified security
    • Authorization: unverified → pass security
    • First check of Authorization: partial security
    • Tool coverage: 100 → unverified functional
    • Capabilities: pass → unverified functional
    • First check of Schema quality: unverified functional
  • 6 Sept 26 0
    • Tool “ateam_design_advisor” rewrote its description, which is the text the model reads security
    • Server version: 0.4.77 → 0.4.85 functional
    • “ateam_get_spec” reworded the description of “topic” cosmetic
  • 2 Sept 26 0
    • Tool “ateam_upload_connector” rewrote its description, which is the text the model reads security
    • Tool “ateam_test_status” rewrote its description, which is the text the model reads security
    • Tool “ateam_test_abort” rewrote its description, which is the text the model reads security
    • Tool “ateam_patch” rewrote its description, which is the text the model reads security
    • Tool “ateam_github_read” rewrote its description, which is the text the model reads security
    • Tool “ateam_github_promote” rewrote its description, which is the text the model reads security
    • Tool “ateam_github_diff” rewrote its description, which is the text the model reads security
    • Tool “ateam_get_chain” rewrote its description, which is the text the model reads security
    • Tool “ateam_delete_connector” rewrote its description, which is the text the model reads security
    • Schema quality: 226 → 262 functional
    • Server version: 0.3.0 → 0.4.77 functional
    • New tool “ateam_connector_logs” functional
    • New tool “ateam_github_reconcile” functional
    • New tool “ateam_github_sync_from_main” functional
    • New tool “ateam_log_lesson” functional
    • New tool “ateam_log_progress” functional
    • New tool “ateam_verify_surface” functional
    • New tool “ateam_get_metrics” functional
    • New tool “ateam_get_execution_logs” functional
    • New tool “ateam_get_progress” functional
    • New tool “ateam_get_lessons” functional
    • “ateam_upload_connector” added an optional parameter “force” cosmetic
    • “ateam_test_status” added an optional parameter “chain_id” cosmetic
    • “ateam_test_status” added an optional parameter “actor_id” cosmetic
    • “ateam_test_abort” added an optional parameter “chain_id” cosmetic
    • “ateam_test_abort” added an optional parameter “actor_id” cosmetic
    • “ateam_github_read” added an optional parameter “branch” cosmetic
    • “ateam_github_patch” added an optional parameter “branch” cosmetic
    • “ateam_get_chain” added an optional parameter “chain_id” cosmetic
    • “ateam_get_chain” added an optional parameter “actor_id” cosmetic
    • “ateam_chain_status” added an optional parameter “job_id” cosmetic
    • “ateam_chain_status” added an optional parameter “actor_id” cosmetic
    • “ateam_upload_connector” reworded the description of “files” cosmetic
    • “ateam_test_status” reworded the description of “job_id” cosmetic
    • “ateam_test_abort” reworded the description of “job_id” cosmetic
    • “ateam_patch” reworded the description of “source” cosmetic
    • “ateam_get_spec” reworded the description of “topic” cosmetic
    • “ateam_get_chain” reworded the description of “job_id” cosmetic
    • “ateam_test_status” made “skill_id” optional cosmetic
    • “ateam_test_status” made “job_id” optional cosmetic
    • “ateam_test_abort” made “skill_id” optional cosmetic
    • “ateam_test_abort” made “job_id” optional cosmetic
    • “ateam_get_chain” made “job_id” optional cosmetic
  • 26 Aug 26 −1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Aug 26 +1
    • Stability: 0.97 → pass security
  • 11 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 31 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 22 Sept 2026 · Probed https://mcp.ateam-ai.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=ateam-ai.com CN=WE1,O=Google Trust Services,C=US 13 Aug 2026 11 Nov 2026 ECDSA 256 ECDSA-SHA256 1964533d7eb11bbc13b2fff6686c6113
SANs: ateam-ai.com, *.ateam-ai.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.ateam-ai.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
ateam-ai.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On connection
HTTP status 401

WWW-Authenticate challenge Bearer error="invalid_token", error_description="Missing Authorization header", resource_metadata="https://mcp.ateam-ai.com/.well-known/oauth-protected-resource"

Bearer error="invalid_token", error_description="Missing Authorization header", resource_metadata="https://mcp.ateam-ai.com/.well-known/oauth-protected-resource"
Header Value
www-authenticate Bearer error="invalid_token", error_description="Missing Authorization header", resource_metadata="https://mcp.ateam-ai.com/.well-known/oauth-protected-resource"

Protected resource metadata

Document https://mcp.ateam-ai.com/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://mcp.ateam-ai.com/
Authorisation server https://mcp.ateam-ai.com/

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.ateam-ai.com/mcp Auth required 401
http (plaintext) http://mcp.ateam-ai.com/mcp Inconclusive 401
MCP tools · 57 exposed · ~15,211 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
ateam_auth ~235

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.

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

No output schema declared.

No examples provided.

ateam_bootstrap ~73

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ateam_build_and_run ~528

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.

NameTypeReqDescription
connectorsarrayOptional: connector metadata (id, name, transport). Entry points auto-detected from mcp_store.
githubbooleanOptional: 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_storeobjectOptional: connector source code files. Key = connector id, value = array of {path, content}.
skillsarrayOptional after first deploy: skill definitions. If omitted, auto-pulled from main (skills/{id}/skill.json).
solutionobjectFull solution definition. Required on first deploy. After first deploy, just pass solution_id instead — everything is auto-pulled from GitHub main.
solution_idstringThe 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_messagestringOptional: send a test message after deployment to verify the skill works. Returns the full execution result.
test_skill_idstringOptional: which skill to test (defaults to the first skill).

No output schema declared.

No examples provided.

ateam_chain_status ~345

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.

NameTypeReqDescription
actor_idstringOptional. 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_conversa…
chain_idstringyesThe chain id returned by ateam_conversation (the conversation's identity). Any job id in the chain also works — Core resolves the chain aggregate.
job_idstringAlias 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.

No output schema declared.

No examples provided.

ateam_connector_logs ~330

Read what a connector process actually PRINTED to stderr. This is the only place a connector's internal failure is visible: a tool that catches its own error still returns ok:true, and the widget then renders an empty state that looks like real data. Real case (2026-08-11): a dashboard connector's ledger.getData got 401 Authentication required from Core, swallowed it, returned an empty ledger, and displayed 0.00 everywhere — while the upload said ok, the tool said ok:true, and the surface probe said surface_ok. The word 'Authentication' appeared ONLY here. USE IT whenever a tool succeeds but the data is empty, wrong, or zero — that combination is the signature of a swallowed error, and 'the call returned ok' is not evidence it worked. Pass the returned `cursor` back as `since` to read only what is new since your last look, so you can bracket an action and see exactly what it printed. Only stdio (solution) connectors stream stderr through Core; a platform/HTTP connector answers ok:false with a reason.

NameTypeReqDescription
connector_idstringyesThe connector ID (e.g. 'accounting-dashboard-mcp')
errors_onlybooleanKeep only lines that read as errors (401/failed/exception/refused/…)
limitnumberMax lines (default 100, max 300)
sincenumberCursor from a previous call — returns only lines printed after it. Omit for the whole retained tail.
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_conversation ~307

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.

NameTypeReqDescription
actor_idstringOptional: actor ID from a previous response to continue the conversation. Omit for a new conversation.
messagestringyesThe message to send (e.g., 'send email to X' or 'I confirm')
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_create_connector ~189

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.

NameTypeReqDescription
connector_idstringyesConnector ID (lowercase-with-dashes, no spaces). Becomes the directory name.
namestringHuman-readable name for the connector (e.g. 'Hue Lights'). Defaults to connector_id.
solution_idstringyesThe solution ID
ui_capablebooleanIf true, include ui.listPlugins/ui.getPlugin handler stubs. Default: false.

No output schema declared.

No examples provided.

ateam_create_plugin ~439

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/<plugin>/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/<plugin>/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.

NameTypeReqDescription
connector_idstringyesExisting connector to add the plugin into (e.g. 'personal-assistant-ui-mcp')
kindstringRender mode. 'adaptive' (default) produces both iframe + RN scaffolds.
plugin_namestringyesPlugin name (lowercase-with-dashes). E.g. 'memories-panel'. Becomes the dir name.
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_delete_connector ~315

⚠️ 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. ALSO REMOVES THE SOURCE: `connectors/<id>/` is deleted from the repo (main AND dev) in the same call, so the delete is DURABLE. This CHANGED on 2026-08-23 — it used to preserve the source and name `ateam_build_and_run(github:true)` as a way to resurrect. That made a delete undo itself on a later publish, and only in some states, since connectors[] is synthesized from mcp_store keys ONLY when it is empty. If you want the code kept, copy it out (ateam_get_connector_source) BEFORE deleting. If the repo removal fails the response says so under `github` — Core is clean but the source is still there. REQUIRES `confirm:true`.

NameTypeReqDescription
confirmbooleanyesREQUIRED. Must be exactly true. A missing/false value refuses the call with a recovery hint.
connector_idstringyesThe connector ID to remove (e.g. 'device-mock-mcp')
solution_idstringyesThe solution ID (e.g. 'smart-home-assistant')

No output schema declared.

No examples provided.

ateam_delete_skill ~165

⚠️ 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).

NameTypeReqDescription
confirmbooleanyesREQUIRED. Must be exactly true. A missing/false value refuses the call with a recovery hint.
skill_idstringyesThe skill ID to remove (e.g. 'linkedin-agent')
solution_idstringyesThe solution ID (e.g. 'personal-adas')

No output schema declared.

No examples provided.

ateam_delete_solution ~177

⚠️ 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.

NameTypeReqDescription
confirmbooleanyesREQUIRED. Must be exactly true. A missing/false value refuses the call with a recovery hint.
confirm_solution_idstringyesREQUIRED. Must exactly equal `solution_id`. This defeats typos and hallucinated ids — you can't wipe a solution you couldn't spell.
solution_idstringyesThe solution ID to delete

No output schema declared.

No examples provided.

ateam_design_advisor ~294

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.

NameTypeReqDescription
design_stateobjectOptional. The design so far (skills, connectors, capabilities already wired) so the advisor can point at what's still missing. Pass {} at the start.
goalstringyesWhat 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').

No output schema declared.

No examples provided.

ateam_get_chain ~498

Inspect the full chain tree — the whole run rooted at chain_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.data.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.data.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.

NameTypeReqDescription
actor_idstringOptional. 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_conversa…
chain_idstringTHE 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_idstringAlias for chain_id. Any job inside the chain works — Core walks up to the root — but you rarely hold one; prefer chain_id.
skill_slugstringOptional. 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.

No output schema declared.

No examples provided.

ateam_get_connector_source ~183

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.

NameTypeReqDescription
connector_idstringyesThe connector ID to read (e.g. 'home-assistant-mcp')
pathstringOptional. 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 truncat…
solution_idstringyesThe solution ID (e.g. 'smart-home-assistant')

No output schema declared.

No examples provided.

ateam_get_examples ~159

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

NameTypeReqDescription
typestringyesExample 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 s…

No output schema declared.

No examples provided.

ateam_get_execution_logs ~211

Get execution logs for a solution — recent jobs with step traces, tool calls, errors, and timing. Essential for debugging what actually happened during skill execution. (Advanced.)

NameTypeReqDescription
actor_idstringThe 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 t…
chain_idstringThe 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_idstringOptional: get detailed trace for a specific job ID
limitnumberMax jobs to return (default: 10, max: 50)
skill_idstringOptional: filter logs to a specific skill
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_get_lessons ~116

Read what EARLIER runs on this solution learned — newest first, bounded. Call this during orientation, BEFORE planning: it is the only thing that carries context across runs, and it is cheap. Each entry says which tool misled a previous run, the verbatim error, what was tried instead, and whether that worked. An empty list is a real answer (nothing learned yet).

NameTypeReqDescription
limitnumberMax entries, newest first (default 20)
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_get_metrics ~190

Get execution metrics — timing, tool stats, bottlenecks, signals, and recommendations. (Advanced.)

NameTypeReqDescription
actor_idstringOptional. 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_conversa…
chain_idstringOptional: 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_idstringOptional: deep analysis for a specific job
skill_idstringOptional: recent metrics for a specific skill
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_get_progress ~162

What this build has already ACHIEVED — read it FIRST when continuing a run, before any orientation call. Returns the CURRENT status per step (latest entry wins) plus recent history. Then build only the steps that are ABSENT or not yet `verified`. ABSENT IS NOT "NOTHING WAS DONE" — the journal may predate a step, or a run may have died before writing. It is a fast path, not a new source of truth: check before rebuilding something expensive. Complements ateam_get_lessons, which records what BROKE. This records what WORKS.

NameTypeReqDescription
limitnumberHistory entries to return (default 60). `steps` is always complete.
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_get_solution ~327

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

NameTypeReqDescription
limitnumberOptional 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).
offsetnumberOptional 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 nex…
sectionstringOptional (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.s…
skill_idstringOptional: read a specific skill by ID (original or internal)
solution_idstringyesThe solution ID
viewstringyesWhat to read: 'definition' = full solution def, 'skills' = list skills, 'health' = live health check, 'status' = deploy status, 'export' = exportable bundle, 'validate' = re-validate from stored stat…

No output schema declared.

No examples provided.

ateam_get_spec ~933

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.

NameTypeReqDescription
searchstringOptional: filter the spec to only sections containing this search term. Works with any topic. Example: search='bootstrap' returns only fields/sections mentioning 'bootstrap'.
sectionstringOptional: 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, 'in…
topicstringyesWhat to fetch: '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 ou…

No output schema declared.

No examples provided.

ateam_get_widget_catalog ~393

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.

NameTypeReqDescription
formatstringOptional. '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/descr…
include_unusedbooleanOptional. 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).
originstringOptional. Filter by widget origin. 'all' (default) returns everything. 'platform' = platform-bundled only. 'solution' = solution-bundled only. 'skill' = skill-declared only.
solution_idstringOptional. The solution to query. Defaults to the tenant's current solution.

No output schema declared.

No examples provided.

ateam_get_workflows ~60

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ateam_github_diff ~303

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) • **Diagnose a failed promote** — check `behind_by` and `status`. `status: 'diverged'` (behind_by > 0) means main holds commits dev never received, which is what makes ateam_github_promote return 409 Merge conflict. ALWAYS call this after a promote failure, before reporting anything to the user. • Inspect arbitrary branch/tag/commit comparisons (override base/head) Note: `files[]` lists what DIFFERS, not what conflicts. For solution.json and skills/*/skill.json the difference is often deploy-generated data (regenerated connector tools, timestamps) rather than authored change — see ateam_github_read's `_ateam_representation`.

NameTypeReqDescription
basestringBase branch/tag/sha (the target — what you're comparing TO). Default: 'main'.
headstringHead branch/tag/sha (the source — what you're comparing FROM). Default: 'dev'.
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_github_list_versions ~57

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.

NameTypeReqDescription
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_github_log ~103

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.

NameTypeReqDescription
limitnumberMax commits to return (default: 10)
refstringBranch to read commits from. Default: 'main'.
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_github_patch ~359

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.

NameTypeReqDescription
branchstringBranch 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.
contentstringThe full file content to write (mode 1 — full file replacement)
messagestringOptional commit message (default: 'Update <path>')
pathstringyesFile path to create/update (e.g. 'connectors/home-assistant-mcp/server.js')
refstringTarget branch. Default: 'dev' (safe — won't touch prod). Use 'main' only for emergency hotfixes.
replacestringText to replace the search string with (mode 2 — required with search)
searchstringExact text to find in the file (mode 2 — search/replace). Must match exactly including whitespace.
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_github_promote ~278

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 409 MERGE CONFLICT: main holds commits dev never received. Call ateam_github_sync_from_main(solution_id) to merge main into dev, then promote again. Only if THAT also returns 409 did both sides edit the same lines — that one needs a human (open a PR on GitHub).

NameTypeReqDescription
dry_runbooleanIf true: show the diff (commits + files about to ship) without merging. Default: false.
labelstringOptional: human-readable label for the auto-tag (e.g., 'v2 stable', 'before refactor')
skip_tagbooleanIf true: merge without creating an auto-tag. Default: false (auto-tag enabled).
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_github_pull ~76

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.

NameTypeReqDescription
solution_idstringyesThe solution ID to pull and deploy from GitHub

No output schema declared.

No examples provided.

ateam_github_push ~105

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.

NameTypeReqDescription
messagestringOptional commit message (default: 'Deploy <solution_id>')
solution_idstringyesThe solution ID (e.g. 'smart-home-assistant')

No output schema declared.

No examples provided.

ateam_github_read ~327

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. ⚠️ NOT RUNTIME STATE. For `solution.json` and `skills/<id>/skill.json` this returns a git MIRROR, not what is deployed. Connector-imported tools are regenerated at deploy time, so a repo copy's `tools[]` can differ from production (on one solution `dev` showed 29 tools while production ran 66). Reads of those paths carry an `_ateam_representation` field saying what you are holding. To answer "what can this skill actually do?", call ateam_get_solution(solution_id, skill_id, section:'tools') — never this tool.

NameTypeReqDescription
branchstringBranch 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.
pathstringyesFile path in the repo (e.g. 'connectors/home-assistant-mcp/server.js', 'solution.json', 'skills/order-support/skill.json')
refstringBranch, tag, or commit SHA to read from. Default: 'main' (prod). Use 'dev' to read in-progress work.
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_github_reconcile ~281

JOIN a diverged dev and main. Use when ateam_github_promote returns PROMOTE_NEEDS_HUMAN or PROMOTE_PRECONDITION_FAILED — i.e. the automatic main→dev back-merge could not resolve itself. TRY sync_from_main FIRST; this tool calls it internally (a plain merge keeps both sides with no judgement call) and only escalates when git genuinely conflicts. On conflict it writes a TWO-PARENT merge commit so the histories actually join. That matters: copying one branch's tree onto the other makes the contents match while leaving NO merge base, so the very next promote conflicts again — equal content is not a reconciled history. Conflicting files are resolved per file, NEWEST WINS, and every decision is reported. Recency is a heuristic, not intent: read the decisions. On a real tenant main held the newer solution.json while dev held the newer widget, so a blanket choice would have reverted one of them. WHO NEEDS THIS: any tenant whose deploys predate the dev-routing fix carries main-only commits the platform itself wrote, and hits this on its first promote afterwards. Pass dry_run:true to see the decisions before writing anything.

NameTypeReqDescription
dry_runbooleanReport the per-file decisions without writing the merge commit.
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_github_rollback ~175

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).

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

No output schema declared.

No examples provided.

ateam_github_status ~53

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.

NameTypeReqDescription
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_github_sync_from_main ~272

BRING `dev` UP TO DATE WITH `main` — merges main into dev. The mirror of ateam_github_promote. USE THIS WHEN PROMOTE RETURNS 409. promote only ships dev→main, so the moment anything lands on main directly — a hotfix, a manual edit, an ateam_github_rollback, or a write that mis-targeted the branch — dev falls behind and can never be promoted again. Without this tool that divergence is unfixable from A-Team: the only exits are the GitHub web UI or a raw API call. Workflow on a 409: 1) ateam_github_diff (confirm status:'diverged') → 2) ateam_github_sync_from_main → 3) ateam_github_promote. Pass dry_run:true FIRST to see exactly which commits and files would come into dev without changing anything. This is a real merge, not a force: if main and dev edited the SAME lines it returns 409 too, and that one genuinely needs a human (open a PR).

NameTypeReqDescription
dry_runbooleanIf true: show the commits + files that would merge into dev, change nothing. Default: false. Call this first.
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_github_write ~188

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.

NameTypeReqDescription
contentstringyesThe full file content
messagestringOptional commit message (default: 'Write <path>')
pathstringyesFile path to write (e.g. 'connectors/my-mcp/server.js', 'connectors/my-mcp/package.json')
refstringTarget branch. Default: 'dev'.
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_list_solutions ~20

List all solutions deployed in the Skill Builder.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ateam_log_lesson ~442

Record ONE lesson this run learned, so the NEXT run does not relearn it. A building agent starts every run empty — it does not know which tool misled the last run or the workaround that got past it. Log a lesson the moment a tool misleads you AND you find a way through. APPEND-ONLY. You cannot edit or delete earlier lessons, and you do not supply the timestamp — the server stamps it, so it cannot be forged. PROVENANCE CAVEAT, stated because the earlier wording over-promised: `job_id` and `actor` are recorded ONLY when the caller supplies x-adas-job-id / x-adas-actor-id. An agent calling this tool does not, so those fields are usually null — a lesson cannot currently be traced back to the run that produced it, and the file cannot tell 'three runs hit this' from 'one run hit it three times'. Do not put a job id in `error` to compensate; keep that field verbatim. LOG ONLY WHAT YOU OBSERVED. Quote the error VERBATIM; never paraphrase it and never write a theory about platform internals. A wrong lesson is worse than no lesson, because the next run cannot check it and will act on it. Use kind='misleading_success' when a call REPORTED success while the thing you wanted did not happen — that class is the most expensive to rediscover and it is invisible to a failures-only log.

NameTypeReqDescription
errorstringyesThe VERBATIM error or failed_steps fragment. Not a paraphrase.
kindstringfailure = it errored; surprise = it worked but not as documented; misleading_success = it REPORTED success while the intended effect did not happen
solution_idstringyesThe solution this lesson belongs to
toolstringyesThe tool that misled you, e.g. "ateam_build_and_run"
workaroundstringWhat you did instead (optional)
workedbooleanDid the workaround work? Omit if you never found out — 'unknown' is a real answer

No output schema declared.

No examples provided.

ateam_log_progress ~499

Record that a build STEP is done, so a later run does not redo it. Write it AS IT HAPPENS, never at the end — the runs that most need a journal are the ones the clock kills. WHY: a continuation cannot otherwise tell what the previous run achieved, so it re-runs the whole orientation (bootstrap, get_workflows, list_solutions, get_solution, get_spec, get_examples, github_read) to re-derive from documents what was already established — and re-inflates its prompt into the region where provider latency collapses. Measured across 13 runs: stalls track PROMPT SIZE (~60k), not turn count. ateam_get_progress is ONE call instead of nine. status — three values, and the third is the point: built — the artefact exists (files written, committed) deployed — the platform accepted it verified — YOU CALLED IT AND GOT REAL DATA BACK `verified` REQUIRES verified_by, and a deploy response is not verification. `connected` and `tools > 0` are tools/list facts: a clinic connector showed 9 tools while every storage call returned 401. A journal that stops at `deployed` records that build as finished. Re-log the same step as it advances (built → deployed → verified) — latest wins, no update path. If a step REGRESSES, re-log it at the lower status: silence must not read as "still fine".

NameTypeReqDescription
detailstringOne line of what exists — e.g. '10 tools, 8 seeded appointments'.
solution_idstringyesThe solution ID
statusstringyesbuilt = artefact exists · deployed = platform accepted it · verified = you called it and got real data back
stepstringyesSTABLE 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_bystringREQUIRED 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…

No output schema declared.

No examples provided.

ateam_patch ~1,158

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:…

NameTypeReqDescription
dry_runbooleanIf 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 co…
include_definitionbooleanIf 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…
skill_idstringRequired when target is 'skill'. The skill ID to patch.
solution_idstringyesThe solution ID
sourcestringWhere 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 si…
targetstringyesWhat to update: 'solution' for solution definition, 'skill' for skill definition fields (problem, role, intents, tools, policy, engine, scenarios, etc.)
test_messagestringOptional: re-test the skill after patching. Requires skill_id.
updatesobjectyesThe 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…

No output schema declared.

No examples provided.

ateam_redeploy ~141

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).

NameTypeReqDescription
skill_idstringOptional: redeploy a single skill only. Omit to redeploy ALL skills in the solution.
solution_idstringyesThe solution ID to redeploy

No output schema declared.

No examples provided.

ateam_show_skill_minimal ~97

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).

NameTypeReqDescription
skill_idstringyesThe skill ID
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_show_solution_minimal ~88

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).

NameTypeReqDescription
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_spec_search ~147

Semantic search over the FULL ateam platform /spec documentation — the deep fallback behind ateam_design_advisor. Ask a natural-language 'how do I…' question and get the most relevant doc chunks (with their topic + heading), then read the full topic via ateam_get_spec(topic). Use this when the advisor's pointer isn't enough, or for details/examples on anything — including topics outside the curated capability list. Read-only.

NameTypeReqDescription
querystringyesNatural-language question, e.g. 'how do I send a proactive daily reminder?' or 'per-user persistence'.
top_knumberHow many chunks to return (default 8, max 25).

No output schema declared.

No examples provided.

ateam_status_all ~45

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ateam_sync_all ~97

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.

NameTypeReqDescription
pull_onlybooleanOnly pull from GitHub to Core (skip push). Default: false (full sync).
push_onlybooleanOnly push to GitHub (skip pull to Core). Default: false (full sync).

No output schema declared.

No examples provided.

ateam_test_abort ~241

Abort a running test. Pass chain_id to abort the WHOLE run — every job in the chain — and get back which ones stopped. Aborting by job_id stops that job only, leaving handoffs running. Stops at the next iteration boundary. (Advanced.)

NameTypeReqDescription
actor_idstringOptional. 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_conversa…
chain_idstringTHE 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_idstringAbort ONE job only. Prefer chain_id: aborting the root leaves handoffs running while reporting the test aborted.
skill_idstringThe skill ID
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

ateam_test_connector ~137

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.

NameTypeReqDescription
argsobjectOptional: arguments to pass to the tool
connector_idstringyesThe connector ID (e.g., 'home-assistant-mcp', 'google-home-mcp')
solution_idstringyesThe solution ID
toolstringyesThe tool name to call (e.g., 'triggers.list', 'entities.list', 'google.devices')

No output schema declared.

No examples provided.

ateam_test_notification ~439

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.

NameTypeReqDescription
actor_idstringyesTarget actor ID in your tenant (e.g. 'usr_arie_admin_0001'). Must exist; Core rejects if not found in your tenant.
contentstringyesNotification text. Will be sent to all of the actor's enabled channels, prefixed with [TEST] for the recipient.
metadataobjectOptional metadata merged into message.metadata. Useful for correlation IDs.
solution_idstringyesThe solution ID (required for tenant scoping + audit context).
sourcestringAudit label for message.source. Default 'ateam-test'.
urgencystringNotification urgency. Default 'normal'.

No output schema declared.

No examples provided.

ateam_test_pipeline ~94

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.

NameTypeReqDescription
messagestringyesThe test message to classify and plan for
skill_idstringyesThe skill ID to test
solution_idstringyesThe solution ID

No output schema declared.

No examples provided.

Common questions

What is the io.github.ariekogan/ateam-mcp server?

io.github.ariekogan/ateam-mcp is listed in the public MCP registry as io.github.ariekogan/ateam-mcp. Build, validate, and deploy multi-agent AI solutions from any AI environment. This page covers its hosted endpoint (https://mcp.ateam-ai.com/mcp).

Is the io.github.ariekogan/ateam-mcp server safe to use?

io.github.ariekogan/ateam-mcp scores 31 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.ariekogan/ateam-mcp server expose?

io.github.ariekogan/ateam-mcp exposes 57 tools: ateam_bootstrap, ateam_auth, ateam_get_spec, ateam_get_workflows, ateam_get_examples, and 52 more. Their descriptions and schemas cost roughly 15,211 tokens of context every time the server is loaded.

Does the io.github.ariekogan/ateam-mcp server require authentication?

Yes. io.github.ariekogan/ateam-mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the io.github.ariekogan/ateam-mcp server still maintained?

io.github.ariekogan/ateam-mcp is still listed as active in the MCP registry. We last reached this channel on 22 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.