AgentStack (agentstack.tech)

Backend for AI agents: one batched tool over ~668 actions (hosting, storage, auth, payments).

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
100%
Calidad de los nombres
50%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'agentstack.execute' doesn't follow camelCase/snake_caseen agentstack.execute

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,127Tokens (definiciones de herramientas)
~10.9 KBTamaño de respuesta típico
Impacto moderado en la atención (0.88% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "agentstack": {
      "url": "https://agentstack.tech/mcp"
    }
  }
}

Puntos de conexión remotos

https://agentstack.tech/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (1)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🔴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.*).

Esquema de entrada

{
  "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."
}

Esquema de salida

{
  "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."
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada1 herramientas