Skip to main content
Glama

Spala Public MCP

Get Project MCP Manifest

project_get_mcp_manifest
DestructiveIdempotent

AUTH REQUIRED; IDEMPOTENT PROJECT CONNECTION WRITE. Prepares one accessible project and returns its exact platform-provided project MCP manifest URL, MCP URL, and client-specific workspace binding plan. Accepts one installer client (codex, roo, claude-code, cursor, a2a); when omitted, returns a client-selection response without executable arguments.

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
authNo
nameYes
ruleNo
mcpUrlYes
handoffYes
projectYes
bootstrapYes
nextStepsNo
transportYes
serverNameYes
installPlanYes
manifestUrlYes
toolProfileNo
schemaVersionYes
intentBoundaryNo

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. Changed4 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"
      +]
  10. Changed4 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"
      +]
  11. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Prepared project MCP manifest, exact URLs, and workspace-only installer handoff.",
      +  "properties": {
      +    "auth": {
      +      "type": "string"
      +    },
      +    "bootstrap": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "handoff": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "installPlan": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "intentBoundary": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "manifestUrl": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "mcpUrl": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "nextSteps": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "project": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "rule": {
      +      "type": "string"
      +    },
      +    "schemaVersion": {
      +      "type": "integer"
      +    },
      +    "serverName": {
      +      "type": "string"
      +    },
      +    "transport": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "schemaVersion",
      +    "name",
      +    "project",
      +    "handoff",
      +    "mcpUrl",
      +    "manifestUrl",
      +    "serverName",
      +    "transport",
      +    "installPlan",
      +    "bootstrap"
      +  ],
      +  "type": "object"
      +}
  12. Changed7 schema fields changed
    • changedInput schema / description
      Previous value: -"Provide exactly one project selector: projectId or slug."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": {
      -      "projectId": {
      -        "description": "Exact Spala project ID. Mutually exclusive with slug.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "projectId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "slug": {
      -        "description": "Exact Spala project slug. Mutually exclusive with projectId.",
      -        "maxLength": 256,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "slug"
      -    ],
      -    "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"
      +  }
      +]
    • addedInput schema / properties / client
      Added value: +{
      +  "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"
      +}
    • addedInput schema / properties / organizationId
      Added value: +{
      +  "description": "Optional organization ID returned for the signed-in account.",
      +  "maxLength": 256,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / projectId / description
      Previous value: -"Exact Spala project ID. Mutually exclusive with slug."New value: +"Exact Spala project ID. Mutually exclusive with subdomain."
    • removedInput schema / properties / slug
      Removed value: -{
      -  "description": "Exact Spala project slug. Mutually exclusive with projectId.",
      -  "maxLength": 256,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • addedInput schema / properties / subdomain
      Added value: +{
      +  "description": "Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId.",
      +  "maxLength": 256,
      +  "minLength": 1,
      +  "type": "string"
      +}
  13. Changed9 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • addedInput schema / description
      Added value: +"Provide exactly one project selector: projectId or slug."
    • addedInput schema / oneOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "projectId": {
      +        "description": "Exact Spala project ID. Mutually exclusive with slug.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "projectId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "slug": {
      +        "description": "Exact Spala project slug. Mutually exclusive with projectId.",
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "slug"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / projectId / description
      Added value: +"Exact Spala project ID. Mutually exclusive with slug."
    • addedInput schema / properties / projectId / maxLength
      Added value: +256
    • addedInput schema / properties / projectId / minLength
      Added value: +1
    • addedInput schema / properties / slug / description
      Added value: +"Exact Spala project slug. Mutually exclusive with projectId."
    • addedInput schema / properties / slug / maxLength
      Added value: +256
    • addedInput schema / properties / slug / minLength
      Added value: +1
  14. First observed

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=true. The description echoes 'IDEMPOTENT PROJECT CONNECTION WRITE' and adds the AUTH REQUIRED requirement, which is beyond the annotations. However, it does not disclose what the destructive write actually mutates or destroys, which is a meaningful gap given destructiveHint=true.

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?

The description is compact — a caps-prefixed constraint line followed by two sentences covering purpose and client behavior. The critical AUTH and IDEMPOTENT traits are front-loaded, and every sentence earns its place with no filler.

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

Completeness3/5

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

Given the tool's complexity (7 parameters, a oneOf selector, multiple optional params), the description covers the essentials: auth, idempotency, purpose, and client behavior. With a thorough schema and an output schema present, it is adequate, but it omits the destructive-write implications and the guided profile workflow, both of which an agent would benefit from knowing upfront.

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 fully documents all 7 parameters, warranting the baseline 3. The description adds modest value by explaining the client-omission branch, but it does not enrich semantics for the bootstrapChallenge/bootstrapRequestId flow or the profile parameter beyond what the schema already provides.

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?

The description states a specific verb and resource: 'Prepares one accessible project and returns its exact platform-provided project MCP manifest URL, MCP URL, and client-specific workspace binding plan.' This clearly distinguishes the tool's output. However, it does not explicitly differentiate itself from the sibling project_connect, which likely overlaps in the project-connection space, so it misses a beat on sibling differentiation.

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?

The description communicates the auth prerequisite ('AUTH REQUIRED') and the client-omission behavior ('when omitted, returns a client-selection response without executable arguments'). It does not, however, name alternatives or state when to prefer this tool over siblings like project_connect, so usage context is present but exclusions/alternatives are absent.

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.