Skip to main content
Glama

Spala Public MCP

Connect Spala Project

project_connect
DestructiveIdempotent

AUTH REQUIRED; IDEMPOTENT PROJECT CONNECTION WRITE. Prepares one accessible Spala project for agent access. Accepts one installer client (codex, roo, claude-code, cursor, a2a); when omitted, returns a client-selection response without executable arguments. Pending projects return project_provisioning with status 202 and retryAfterSeconds; retry the same call within the stated budget. Active projects do not need a manifest before connect. Returns a client-specific workspace binding plan: protected one-time bootstrap for Codex, Roo, and Cursor; verifier-bound delegated bootstrap for Claude Code.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
clientNoTarget MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.
profileNoSet to guided to preserve the compact build-and-test surface through project handoff. Omit for the default full compatibility surface.
projectIdNoExact Spala project ID. Mutually exclusive with subdomain.
subdomainNoExact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.
organizationIdNoOptional organization ID returned for the signed-in account.
bootstrapChallengeNoS256 challenge returned by project prepare. The verifier remains only in the local credential store.
bootstrapRequestIdNoNon-secret local request ID returned by project prepare. Claude Code only.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
ruleNo
mcpUrlYes
handoffYes
projectYes
bootstrapYes
nextStepsNo
transportYes
serverNameYes
installPlanYes
toolProfileNo
workspaceOnlyNo
intentBoundaryNo
preparedByProjectBackendNo
bootstrapPreparedByProjectBackendNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bootstrapChallenge": {
      -        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      -        "pattern": "^[A-Za-z0-9_-]{43}$",
      -        "type": "string"
      -      },
      -      "bootstrapRequestId": {
      -        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      -        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      -        "type": "string"
      -      },
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bootstrapChallenge": {
      -        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      -        "pattern": "^[A-Za-z0-9_-]{43}$",
      -        "type": "string"
      -      },
      -      "bootstrapRequestId": {
      -        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      -        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      -        "type": "string"
      -      },
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "organizationId": {
      -        "description": "Optional organization ID returned for the signed-in account.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "subdomain": {
      -        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "subdomain"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bootstrapChallenge": {
      +        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      +        "pattern": "^[A-Za-z0-9_-]{43}$",
      +        "type": "string"
      +      },
      +      "bootstrapRequestId": {
      +        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      +        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      +        "type": "string"
      +      },
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "profile": {
      +        "description": "Set to guided to preserve the compact build-and-test surface through project handoff. Omit for the default full compatibility surface.",
      +        "enum": [
      +          "guided"
      +        ],
      +        "type": "string"
      +      },
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bootstrapChallenge": {
      +        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      +        "pattern": "^[A-Za-z0-9_-]{43}$",
      +        "type": "string"
      +      },
      +      "bootstrapRequestId": {
      +        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      +        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      +        "type": "string"
      +      },
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "organizationId": {
      +        "description": "Optional organization ID returned for the signed-in account.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "profile": {
      +        "description": "Set to guided to preserve the compact build-and-test surface through project handoff. Omit for the default full compatibility surface.",
      +        "enum": [
      +          "guided"
      +        ],
      +        "type": "string"
      +      },
      +      "subdomain": {
      +        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "subdomain"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / profile
      Added value: +{
      +  "description": "Set to guided to preserve the compact build-and-test surface through project handoff. Omit for the default full compatibility surface.",
      +  "enum": [
      +    "guided"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / toolProfile
      Added value: +{
      +  "enum": [
      +    "full",
      +    "guided"
      +  ],
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bootstrapChallenge": {
      -        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      -        "pattern": "^[A-Za-z0-9_-]{43}$",
      -        "type": "string"
      -      },
      -      "bootstrapRequestId": {
      -        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      -        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      -        "type": "string"
      -      },
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "profile": {
      -        "description": "Optional project MCP tool profile. full preserves the complete compatibility surface; guided exposes the compact build-and-test surface. Defaults to full.",
      -        "enum": [
      -          "full",
      -          "guided"
      -        ],
      -        "type": "string"
      -      },
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bootstrapChallenge": {
      -        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      -        "pattern": "^[A-Za-z0-9_-]{43}$",
      -        "type": "string"
      -      },
      -      "bootstrapRequestId": {
      -        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      -        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      -        "type": "string"
      -      },
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "organizationId": {
      -        "description": "Optional organization ID returned for the signed-in account.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "profile": {
      -        "description": "Optional project MCP tool profile. full preserves the complete compatibility surface; guided exposes the compact build-and-test surface. Defaults to full.",
      -        "enum": [
      -          "full",
      -          "guided"
      -        ],
      -        "type": "string"
      -      },
      -      "subdomain": {
      -        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "subdomain"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bootstrapChallenge": {
      +        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      +        "pattern": "^[A-Za-z0-9_-]{43}$",
      +        "type": "string"
      +      },
      +      "bootstrapRequestId": {
      +        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      +        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      +        "type": "string"
      +      },
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bootstrapChallenge": {
      +        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      +        "pattern": "^[A-Za-z0-9_-]{43}$",
      +        "type": "string"
      +      },
      +      "bootstrapRequestId": {
      +        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      +        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      +        "type": "string"
      +      },
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "organizationId": {
      +        "description": "Optional organization ID returned for the signed-in account.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "subdomain": {
      +        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "subdomain"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / profile
      Removed value: -{
      -  "description": "Optional project MCP tool profile. full preserves the complete compatibility surface; guided exposes the compact build-and-test surface. Defaults to full.",
      -  "enum": [
      -    "full",
      -    "guided"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / toolProfile
      Removed value: -{
      -  "enum": [
      -    "full",
      -    "guided"
      -  ],
      -  "type": "string"
      -}
  3. Changed3 schema fields changed
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bootstrapChallenge": {
      -        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      -        "pattern": "^[A-Za-z0-9_-]{43}$",
      -        "type": "string"
      -      },
      -      "bootstrapRequestId": {
      -        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      -        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      -        "type": "string"
      -      },
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bootstrapChallenge": {
      -        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      -        "pattern": "^[A-Za-z0-9_-]{43}$",
      -        "type": "string"
      -      },
      -      "bootstrapRequestId": {
      -        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      -        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      -        "type": "string"
      -      },
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "organizationId": {
      -        "description": "Optional organization ID returned for the signed-in account.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "subdomain": {
      -        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "subdomain"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bootstrapChallenge": {
      +        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      +        "pattern": "^[A-Za-z0-9_-]{43}$",
      +        "type": "string"
      +      },
      +      "bootstrapRequestId": {
      +        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      +        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      +        "type": "string"
      +      },
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "profile": {
      +        "description": "Optional project MCP tool profile. full preserves the complete compatibility surface; guided exposes the compact build-and-test surface. Defaults to full.",
      +        "enum": [
      +          "full",
      +          "guided"
      +        ],
      +        "type": "string"
      +      },
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bootstrapChallenge": {
      +        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      +        "pattern": "^[A-Za-z0-9_-]{43}$",
      +        "type": "string"
      +      },
      +      "bootstrapRequestId": {
      +        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      +        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      +        "type": "string"
      +      },
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "organizationId": {
      +        "description": "Optional organization ID returned for the signed-in account.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "profile": {
      +        "description": "Optional project MCP tool profile. full preserves the complete compatibility surface; guided exposes the compact build-and-test surface. Defaults to full.",
      +        "enum": [
      +          "full",
      +          "guided"
      +        ],
      +        "type": "string"
      +      },
      +      "subdomain": {
      +        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "subdomain"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / profile
      Added value: +{
      +  "description": "Optional project MCP tool profile. full preserves the complete compatibility surface; guided exposes the compact build-and-test surface. Defaults to full.",
      +  "enum": [
      +    "full",
      +    "guided"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / toolProfile
      Added value: +{
      +  "enum": [
      +    "full",
      +    "guided"
      +  ],
      +  "type": "string"
      +}
  4. Changed3 schema fields changed
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "organizationId": {
      -        "description": "Optional organization ID returned for the signed-in account.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "subdomain": {
      -        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "subdomain"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bootstrapChallenge": {
      +        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      +        "pattern": "^[A-Za-z0-9_-]{43}$",
      +        "type": "string"
      +      },
      +      "bootstrapRequestId": {
      +        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      +        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      +        "type": "string"
      +      },
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bootstrapChallenge": {
      +        "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      +        "pattern": "^[A-Za-z0-9_-]{43}$",
      +        "type": "string"
      +      },
      +      "bootstrapRequestId": {
      +        "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      +        "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      +        "type": "string"
      +      },
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "organizationId": {
      +        "description": "Optional organization ID returned for the signed-in account.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "subdomain": {
      +        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "subdomain"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / bootstrapChallenge
      Added value: +{
      +  "description": "S256 challenge returned by project prepare. The verifier remains only in the local credential store.",
      +  "pattern": "^[A-Za-z0-9_-]{43}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / bootstrapRequestId
      Added value: +{
      +  "description": "Non-secret local request ID returned by project prepare. Claude Code only.",
      +  "pattern": "^claim_[A-Za-z0-9_-]{20,80}$",
      +  "type": "string"
      +}
  5. Changed2 schema fields changed
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor"
      -        ],
      -        "type": "string"
      -      },
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor"
      -        ],
      -        "type": "string"
      -      },
      -      "organizationId": {
      -        "description": "Optional organization ID returned for the signed-in account.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "subdomain": {
      -        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "subdomain"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "organizationId": {
      +        "description": "Optional organization ID returned for the signed-in account.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "subdomain": {
      +        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "subdomain"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / client / enum
      Previous value: -[
      -  "codex",
      -  "roo",
      -  "claude-code",
      -  "cursor"
      -]New value: +[
      +  "codex",
      +  "roo",
      +  "claude-code",
      +  "cursor",
      +  "a2a"
      +]
  6. Changed4 schema fields changed
    • changedInput schema / description
      Previous value: -"Provide exactly one project selector and a supported coding or A2A client."New value: +"Provide exactly one project selector and a supported agentic workspace client (codex, roo, claude-code, or cursor) to receive executable installer argv."
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target agent client. Coding clients receive a workspace installer plan; a2a receives a server-side one-time handoff plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target agent client. Coding clients receive a workspace installer plan; a2a receives a server-side one-time handoff plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "organizationId": {
      -        "description": "Optional organization ID returned for the signed-in account.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "subdomain": {
      -        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "subdomain"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor"
      +        ],
      +        "type": "string"
      +      },
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor"
      +        ],
      +        "type": "string"
      +      },
      +      "organizationId": {
      +        "description": "Optional organization ID returned for the signed-in account.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "subdomain": {
      +        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "subdomain"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / client / description
      Previous value: -"Target agent client. Coding clients receive a workspace installer plan; a2a receives a server-side one-time handoff plan."New value: +"Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan."
    • changedInput schema / properties / client / enum
      Previous value: -[
      -  "codex",
      -  "roo",
      -  "claude-code",
      -  "cursor",
      -  "a2a"
      -]New value: +[
      +  "codex",
      +  "roo",
      +  "claude-code",
      +  "cursor"
      +]
  7. Changed4 schema fields changed
    • changedInput schema / description
      Previous value: -"Provide exactly one project selector and a supported agentic workspace client (codex, roo, claude-code, or cursor) to receive executable installer argv."New value: +"Provide exactly one project selector and a supported coding or A2A client."
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor"
      -        ],
      -        "type": "string"
      -      },
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "claude-code",
      -          "cursor"
      -        ],
      -        "type": "string"
      -      },
      -      "organizationId": {
      -        "description": "Optional organization ID returned for the signed-in account.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "subdomain": {
      -        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "subdomain"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target agent client. Coding clients receive a workspace installer plan; a2a receives a server-side one-time handoff plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target agent client. Coding clients receive a workspace installer plan; a2a receives a server-side one-time handoff plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "organizationId": {
      +        "description": "Optional organization ID returned for the signed-in account.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "subdomain": {
      +        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "subdomain"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / client / description
      Previous value: -"Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan."New value: +"Target agent client. Coding clients receive a workspace installer plan; a2a receives a server-side one-time handoff plan."
    • changedInput schema / properties / client / enum
      Previous value: -[
      -  "codex",
      -  "roo",
      -  "claude-code",
      -  "cursor"
      -]New value: +[
      +  "codex",
      +  "roo",
      +  "claude-code",
      +  "cursor",
      +  "a2a"
      +]
  8. Changed3 schema fields changed
    • changedInput schema / description
      Previous value: -"Provide exactly one project selector and a supported agentic workspace client (codex or roo) to receive executable installer argv."New value: +"Provide exactly one project selector and a supported agentic workspace client (codex, roo, claude-code, or cursor) to receive executable installer argv."
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo"
      -        ],
      -        "type": "string"
      -      },
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo"
      -        ],
      -        "type": "string"
      -      },
      -      "organizationId": {
      -        "description": "Optional organization ID returned for the signed-in account.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "subdomain": {
      -        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "subdomain"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor"
      +        ],
      +        "type": "string"
      +      },
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "claude-code",
      +          "cursor"
      +        ],
      +        "type": "string"
      +      },
      +      "organizationId": {
      +        "description": "Optional organization ID returned for the signed-in account.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "subdomain": {
      +        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "subdomain"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / client / enum
      Previous value: -[
      -  "codex",
      -  "roo"
      -]New value: +[
      +  "codex",
      +  "roo",
      +  "claude-code",
      +  "cursor"
      +]
  9. Changed7 schema fields changed
    • changedInput schema / description
      Previous value: -"Provide exactly one project selector and a supported handoff target. Codex/Roo receive installer argv; a2a receives a direct one-time project session."New value: +"Provide exactly one project selector and a supported agentic workspace client (codex or roo) to receive executable installer argv."
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target agent handoff. Codex and Roo receive a workspace installer plan; a2a receives a server-side one-time project MCP session.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target agent handoff. Codex and Roo receive a workspace installer plan; a2a receives a server-side one-time project MCP session.",
      -        "enum": [
      -          "codex",
      -          "roo",
      -          "a2a"
      -        ],
      -        "type": "string"
      -      },
      -      "organizationId": {
      -        "description": "Optional organization ID returned for the signed-in account.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "subdomain": {
      -        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "subdomain"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo"
      +        ],
      +        "type": "string"
      +      },
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      +        "enum": [
      +          "codex",
      +          "roo"
      +        ],
      +        "type": "string"
      +      },
      +      "organizationId": {
      +        "description": "Optional organization ID returned for the signed-in account.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "subdomain": {
      +        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "subdomain"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / client / description
      Previous value: -"Target agent handoff. Codex and Roo receive a workspace installer plan; a2a receives a server-side one-time project MCP session."New value: +"Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan."
    • changedInput schema / properties / client / enum
      Previous value: -[
      -  "codex",
      -  "roo",
      -  "a2a"
      -]New value: +[
      +  "codex",
      +  "roo"
      +]
    • changedOutput schema / description
      Previous value: -"Prepared project MCP connection. CLI targets receive a workspace-only installer handoff; a2a receives a direct one-time server-side session."New value: +"Prepared project MCP connection and workspace-only installer handoff."
    • removedOutput schema / properties / handoffTarget
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "project",
      -  "handoff",
      -  "mcpUrl",
      -  "serverName",
      -  "transport",
      -  "handoffTarget",
      -  "bootstrap"
      -]New value: +[
      +  "project",
      +  "handoff",
      +  "mcpUrl",
      +  "serverName",
      +  "transport",
      +  "installPlan",
      +  "bootstrap"
      +]
  10. Changed7 schema fields changed
    • changedInput schema / description
      Previous value: -"Provide exactly one project selector and a supported agentic workspace client (codex or roo) to receive executable installer argv."New value: +"Provide exactly one project selector and a supported handoff target. Codex/Roo receive installer argv; a2a receives a direct one-time project session."
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo"
      -        ],
      -        "type": "string"
      -      },
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "client": {
      -        "description": "Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.",
      -        "enum": [
      -          "codex",
      -          "roo"
      -        ],
      -        "type": "string"
      -      },
      -      "organizationId": {
      -        "description": "Optional organization ID returned for the signed-in account.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "subdomain": {
      -        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "subdomain"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target agent handoff. Codex and Roo receive a workspace installer plan; a2a receives a server-side one-time project MCP session.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with subdomain.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "client": {
      +        "description": "Target agent handoff. Codex and Roo receive a workspace installer plan; a2a receives a server-side one-time project MCP session.",
      +        "enum": [
      +          "codex",
      +          "roo",
      +          "a2a"
      +        ],
      +        "type": "string"
      +      },
      +      "organizationId": {
      +        "description": "Optional organization ID returned for the signed-in account.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "subdomain": {
      +        "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "subdomain"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / client / description
      Previous value: -"Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan."New value: +"Target agent handoff. Codex and Roo receive a workspace installer plan; a2a receives a server-side one-time project MCP session."
    • changedInput schema / properties / client / enum
      Previous value: -[
      -  "codex",
      -  "roo"
      -]New value: +[
      +  "codex",
      +  "roo",
      +  "a2a"
      +]
    • changedOutput schema / description
      Previous value: -"Prepared project MCP connection and workspace-only installer handoff."New value: +"Prepared project MCP connection. CLI targets receive a workspace-only installer handoff; a2a receives a direct one-time server-side session."
    • addedOutput schema / properties / handoffTarget
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "project",
      -  "handoff",
      -  "mcpUrl",
      -  "serverName",
      -  "transport",
      -  "installPlan",
      -  "bootstrap"
      -]New value: +[
      +  "project",
      +  "handoff",
      +  "mcpUrl",
      +  "serverName",
      +  "transport",
      +  "handoffTarget",
      +  "bootstrap"
      +]
  11. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Prepared project MCP connection and workspace-only installer handoff.",
      +  "properties": {
      +    "bootstrap": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "bootstrapPreparedByProjectBackend": {
      +      "type": "boolean"
      +    },
      +    "handoff": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "installPlan": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "intentBoundary": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "mcpUrl": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "nextSteps": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "preparedByProjectBackend": {
      +      "type": "boolean"
      +    },
      +    "project": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "rule": {
      +      "type": "string"
      +    },
      +    "serverName": {
      +      "type": "string"
      +    },
      +    "transport": {
      +      "type": "string"
      +    },
      +    "workspaceOnly": {
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "project",
      +    "handoff",
      +    "mcpUrl",
      +    "serverName",
      +    "transport",
      +    "installPlan",
      +    "bootstrap"
      +  ],
      +  "type": "object"
      +}
  12. Added

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses AUTH REQUIRED, the 202 project_provisioning response with retryAfterSeconds and retry budget, that active projects need no manifest, and the client-specific binding plans (one-time bootstrap vs verifier-bound delegated bootstrap). This is rich operational context for a mutating, idempotent, open-world tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the two most important facts (AUTH REQUIRED; IDEMPOTENT WRITE) and then flows logically through client selection, pending/active states, and return shape. Dense but mostly earns its sentences, though phrasing like 'without executable arguments' is slightly opaque.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, authenticated mutation with a full output schema, the description still covers auth, idempotency, retry timing, and per-client binding behavior. The only gap is that it does not restate the mutually-exclusive project selector requirement, which the schema handles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter, including the oneOf projectId/subdomain split and the bootstrap fields. The description adds only the client-omission response behavior, which the schema also states, so it does not materially extend schema meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Prepares one accessible Spala project for agent access', distinguishing it from creation ('accessible' implies the project already exists). It is clear what the tool does, but it never names siblings like project_create or project_select to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful context about pending vs active projects and the client-omission path, which shapes when the call succeeds, but it never says when to choose this over siblings such as project_select, project_create, or spala_start. Usage is implied rather than compared against alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.