Skip to main content
Glama

Spala Public MCP

Select Spala Project

project_select
DestructiveIdempotent

AUTH REQUIRED; IDEMPOTENT PROJECT CONNECTION WRITE. Compatibility alias for project_connect. Prepares one accessible project and returns the same client-specific workspace binding contract as project_connect.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
clientNoTarget MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan.
profileNoOptional project MCP tool profile. full preserves the complete compatibility surface; guided exposes the compact build-and-test surface. Defaults to full.
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. Dates show when Glama detected each change.

  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": "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"
      +}
  2. 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"
      +}
  3. 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"
      +]
  4. 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"
      +]
  5. 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"
      +]
  6. 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"
      +]
  7. 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"
      +]
  8. 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"
      +]
  9. 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"
      +}
  10. 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"
      +}
  11. 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
  12. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Adds context beyond annotations: 'AUTH REQUIRED' is not encoded anywhere in the annotation block, and framing the operation as an idempotent write reinforces idempotentHint=true alongside readOnlyHint=false/destructiveHint=true. It also discloses the alias behavior and the contract compatibility with project_connect. No contradiction with annotations; it simply stops short of explaining the bootstrap flow, which the schema's parameter descriptions already cover.

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?

Two dense sentences, front-loaded with the most critical constraints ('AUTH REQUIRED; IDEMPOTENT PROJECT CONNECTION WRITE'). No wasted words, but 'client-specific workspace binding contract' is jargon — the schema's own phrase 'executable installer argv' is more concrete and could have been used.

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 tool with a union input schema (oneOf projectId/subdomain), bootstrap parameters, and a full output schema, the description supplies the non-obvious context: auth requirement, idempotent write semantics, and the alias relationship. Residual vagueness around 'binding contract' is compensated by the schema's 100% parameter coverage and the presence of an output schema.

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%, with detailed descriptions for all 7 parameters including mutual exclusivity (projectId vs subdomain), the client enum, profile semantics, and bootstrap challenge/request ID patterns. The tool description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource: 'Prepares one accessible project and returns the same client-specific workspace binding contract as project_connect.' Explicitly names project_connect as the canonical sibling and frames this tool as a 'Compatibility alias,' which distinguishes it from the other 15 sibling tools. The title 'Select Spala Project' also aligns with the described action.

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 only usage signal is 'Compatibility alias for project_connect,' which implies interchangeability but never states when to choose project_select over project_connect or when not to use it. No contrast with related project siblings (project_create, project_get_public_context, project_get_mcp_manifest) and no mention of prerequisites. Usage is implied rather than explicitly guided.

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.

TDQS

A4/5.0
Disambiguation4/5

Most tools have clear, distinct purposes, but project_connect and project_select are essentially aliases, which introduces ambiguity. Additionally, spala_help and docs_search could overlap, but they are differentiated by scope.

Naming Consistency4/5

The naming mostly follows a <domain>_<verb> pattern, with some exceptions like spala_help (no verb) and the duplicate project_select. Overall, the pattern is predictable and readable.

Tool Count5/5

16 tools is well-scoped for a public platform that handles accounts, organizations, projects, addons, templates, and documentation. Each tool earns its place without being excessive.

Completeness3/5

Core workflows like creating and connecting projects are covered, but there are notable gaps: no tools for updating or deleting accounts, organizations, or projects. Also, addons and templates are only listable, missing management operations.