AgentStack (agentstack.tech)
Backend for AI agents: one batched tool over ~668 actions (hosting, storage, auth, payments).
使うべきか
品質と安全性
検出事項(1)
- LOWagentstack.execute 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"agentstack": {
"url": "https://agentstack.tech/mcp"
}
}
}リモートエンドポイント
https://agentstack.tech/mcpstreamable-httpできること
ツール一覧
ツール(1)
🔴agentstack.execute(steps, context, options)
AgentStack MCP = Work Graph control plane. After session + context.project_id: agents.work_next (mcp_work_loop_v1) -> plan_claim -> plan_execute (CAS/leases). Follow packet.next_action; catalog/discovery.search only if no packet. One-shot CRM/upload may call domain actions directly. Spine: agents.plan_get -> agents.work_next -> agents.plan_claim -> agents.plan_execute. Anti-pattern: Do not pick tools from catalog when packet.next_action is present. Mandatory session order: authenticate -> session probe auth.get_profile (alias auth.me) -> select/create project -> set context.project_id on every batch -> Work Graph loop. Playbook GET /mcp/prompts/get?name=agentstack_session_setup (recipe mcp_session_setup). Sync POST /mcp is lane mcp_batch (60000 ms) for the whole batch - not an RBAC cap. One expensive step per sync execute (bots.simulate, knowledge.playground, agents.run with wait=true, agents.plan_*, context.get); LLM-heavy steps widen to ai_stream (180000 ms). Large suites: options.async=true then poll discovery.job_status (REST GET /mcp/jobs/{{{{job_id}}}}). Cite catalog_actions_public from GET /mcp/actions/summary. There is one execute tool (agentstack.execute); do not quote tools_count as 'N tools'. Do not invent rules.* or webhooks.* (prefer logic.* and integrations.*).
入力スキーマ
{
"type": "object",
"properties": {
"steps": {
"type": "array",
"minItems": 1,
"description": "Ordered steps. Cheap list/get may batch. At most one heavy LLM action (bots.simulate, knowledge.playground, …) per sync execute.",
"items": {
"type": "object",
"description": "One action invocation inside the batch.",
"properties": {
"id": {
"type": "string",
"description": "Step id unique within this batch. Referenced by options.observed."
},
"action": {
"type": "string",
"description": "Canonical dotted action id from GET /mcp/actions (example: auth.get_profile)."
},
"params": {
"type": "object",
"description": "Action arguments. Shape comes from discovery.describe for that action.",
"additionalProperties": true
},
"if": {
"type": "object",
"description": "Optional predicate. The step runs only when this condition matches.",
"additionalProperties": true
}
},
"required": [
"id",
"action"
]
}
},
"context": {
"type": "object",
"description": "Execute scope. Set project_id on every batch after the session probe.",
"properties": {
"project_id": {
"type": "integer",
"description": "Tenant project id. Required for project-scoped actions."
},
"user_id": {
"type": "integer",
"description": "Caller user id. Usually taken from the session; do not invent it."
},
"generation_env_uuid": {
"type": "string",
"description": "Sandbox generation anchor (env_uuid). Not a recipe input."
}
},
"additionalProperties": true
},
"options": {
"type": "object",
"description": "Batch controls: async jobs, recipes, playbook progress, and error policy.",
"properties": {
"async": {
"type": "boolean",
"description": "Queue the batch (durable job). Required for more than one heavy LLM step. Poll discovery.job_status or GET /mcp/jobs/{job_id}."
},
"idempotency_key": {
"type": "string",
"description": "Client retry key. The same key returns the same receipt."
},
"workflow_run_id": {
"type": "string",
"description": "Goal run id. Separate from trace_id. Returned on the completion receipt."
},
"goal": {
"type": "string",
"description": "The same user goal. When set, the envelope names the next playbook step."
},
"observed": {
"type": "object",
"description": "Playbook progress. completed_steps holds step ids, not action names.",
"additionalProperties": true
},
"density": {
"type": "string",
"description": "Wording of the current step. The allowed action set stays the same.",
"enum": [
"strict",
"guided",
"autonomous"
]
},
"publish_asked": {
"type": "boolean",
"description": "The user already asked to publish. Skips a second confirm."
},
"enforce_approval": {
"type": "boolean",
"description": "When true, financial, destructive, and access-control steps pause for approval."
},
"stopOnError": {
"type": "boolean",
"description": "Stop the batch at the first failed step. Default true."
},
"continueOnError": {
"type": "boolean",
"description": "Keep later steps running after a failure. Opposite of stopOnError."
},
"envelope": {
"type": "string",
"description": "Batch step payload shape. compact omits duplicate data/capability_result.",
"enum": [
"compact",
"full"
]
},
"recipe_id": {
"type": "string",
"description": "Expand a registered MCP recipe into steps before execute (see GET /mcp/recipes)."
},
"recipe_params": {
"type": "object",
"description": "Values for {{placeholders}} in the recipe.",
"additionalProperties": true
}
},
"additionalProperties": true
}
},
"required": [
"steps"
],
"description": "Batch execute. One tool; each step names a dotted action."
}出力スキーマ
{
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "True when every step succeeded."
},
"data": {
"type": "object",
"description": "Step payload or batch receipt.",
"additionalProperties": true
},
"error_code": {
"type": "string",
"description": "Stable machine code when success is false."
},
"trace_id": {
"type": "string",
"description": "Request trace id for logs and support."
}
},
"description": "CapabilityResult envelope; see structuredContent on tools/call when present."
}コミュニティ
エビデンス