Spala Public MCP
Server Details
Discovery, OAuth, project operations, and exact project MCP handoff for Spala backend projects.
- Status
- Healthy
- Uptime
- 99.9% over 42 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- spala-ai/spala-public-mcp
- GitHub Stars
- 0
- Server Listing
- spala-public-mcp
TDQS
Scored across 16 tools
Most tools target distinct resources, but project_connect and project_select are explicit aliases, and project_get_mcp_manifest overlaps with project_connect in preparing a project connection. spala_start and account_status also share account-readiness responsibilities, creating some ambiguity for an agent.
All tool names follow a consistent snake_case verb_noun or domain_verb pattern (e.g., account_setup, project_list, spala_start, template_list). The prefixing is predictable across account, organization, project, and spala/domain tools.
At 16 tools, the set is slightly above the ideal 3-15 range but still reasonable for a server covering account setup, project handoff, and public discovery. The count could be trimmed by removing the project_select alias and consolidating some spala_* orientation tools.
For an onboarding/handoff-focused public MCP, the surface covers account readiness, organization creation, project creation/listing/connection, and discovery of docs, addons, and templates. Minor gaps exist—no organization listing/updating or project update/delete—but these are outside the apparent core purpose.
Available Tools
16 toolsaccount_setupComplete Spala Account SetupADestructiveInspect
AUTH REQUIRED; WRITES MISSING ACCOUNT DATA TO THE SPALA CONTROL PLANE. Fills missing first and last name fields and creates the first company or workspace organization when none exists. Invoke only with real account and organization values supplied by the user.
| Name | Required | Description | Default |
|---|---|---|---|
| lastName | No | Account holder last name. Required when account_status reports lastName missing. | |
| firstName | No | Account holder first name. Required when account_status reports firstName missing. | |
| companyName | No | Company or workspace name. Required when account_status reports companyName missing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| user | Yes | |
| nextAction | Yes | |
| accountSetup | Yes | |
| organization | Yes | |
| profileUpdated | Yes | |
| organizationCreated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a destructive write operation (readOnlyHint: false, destructiveHint: true). The description adds that it writes 'missing account data' and only creates an organization 'when none exists,' suggesting it fills gaps without overwriting existing values or duplicating orgs. This provides behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with the critical warnings ('AUTH REQUIRED; WRITES...') front-loaded in caps. Every clause contributes to understanding the tool's purpose and usage without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, return-value explanation is not needed. The description covers purpose, conditions, and authentication requirements, while the schema covers parameter-specific semantics. It could be more complete by explicitly referencing account_status as the source of missing-field information, but the schema mentions this, making the tool adequately documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, with each parameter explicitly describing its conditional requirement (e.g., 'Required when account_status reports lastName missing'). The main description only adds a general note about using real values, which is already echoed in the schema's bottom description. Thus, the description adds no significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Fills missing first and last name fields and creates the first company or workspace organization when none exists.' This specific verb+resource statement distinguishes it from read-only siblings like account_status and from organization_create by noting it creates the 'first' organization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to invoke: 'Invoke only with real account and organization values supplied by the user' and 'AUTH REQUIRED.' It implies conditional use when account data is missing, but it does not explicitly exclude alternative tools like account_status for checking or organization_create for additional orgs, so it lacks explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
account_statusCheck Spala AccountARead-onlyIdempotentInspect
AUTH REQUIRED; READ-ONLY. Verifies the current public MCP OAuth identity and account readiness. Returns the authenticated identity, available organizations, and exact missing account fields without exposing OAuth or dashboard credentials.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | |
| user | Yes | |
| subject | Yes | |
| tokenStatus | Yes | |
| accountSetup | Yes | |
| authenticated | Yes | |
| oauthResource | Yes | |
| organizations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds valuable behavioral context: it returns authenticated identity, organizations, and missing fields, and explicitly states it does not expose credentials. This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the first sentence front-loaded with critical qualifiers (AUTH REQUIRED; READ-ONLY). Every phrase adds value, and it is appropriately compact for a no-argument tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is an output schema and no parameters, the description sufficiently explains the return values (identity, organizations, missing fields) and safety behavior (no credential exposure). It is complete for the tool's scope and complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters; the schema already specifies 'No arguments' and the description repeats that. Per the rubric, zero params gets a baseline of 4, as there is no parameter complexity to elaborate on.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Verifies the current public MCP OAuth identity and account readiness.' It clearly states what the tool does and differentiates it from siblings like account_setup by focusing on status verification rather than setup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking account readiness before other operations but does not explicitly state when to use vs alternatives or provide any exclusions. It mentions AUTH REQUIRED and READ-ONLY, which gives some context, but lacks direct guidance on choosing this over account_setup or other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
addon_listList Spala AddonsARead-onlyIdempotentInspect
Lists public Spala addons and integrations matching an optional query. Invoke to discover capabilities such as webhooks, outbound HTTP API calls, transactional email, media uploads, and realtime messaging. Returns addon ids, names, descriptions, and tags.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of catalog entries to return. | |
| query | No | Optional filter phrase for matching public Spala templates or addons by name, tag, or use case. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| addons | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context: it specifies the resource is 'public', lists example capabilities (webhooks, outbound HTTP, etc.), and notes that results match an 'optional query'. This goes beyond annotations and schema by clarifying the tool's domain scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and resource, followed by a use-case invitation and return fields. Every clause adds value with zero redundancy, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are structurally defined, but the description also mentions the key return fields, reinforcing them. With only two optional parameters, a clear use case, and safe read-only annotations, the description covers all necessary context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both 'limit' and 'query' described in detail. The description mentions 'matching an optional query' and 'list' but adds no new meaning beyond the schema's existing parameter descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Lists public Spala addons and integrations' with an optional query, and distinguishes this from sibling tools like template_list by specifying addons/integrations. It also enumerates return fields (ids, names, descriptions, tags), making the verb+resource+scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it ('Invoke to discover capabilities such as...'), giving a clear use case. It doesn't mention alternatives or when-not-to-use, but the resource scope (addons vs templates) and sibling names provide context. No exclusions are needed for a list/read operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docs_searchSearch Spala DocumentationARead-onlyIdempotentInspect
Searches the public Spala agent-facing documentation index by query. Invoke for setup, OAuth, installer, public-versus-project MCP, pricing, limits, security, templates, addons, or project handoff questions. Returns ranked docs entries with URLs and summaries.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of ranked documentation results to return. | |
| query | No | Optional search phrase. Use words such as auth, OAuth, MCP, templates, addons, pricing, limits, frontend handoff, or project handoff. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about the scope (public index) and return format (ranked entries with URLs and summaries), which goes beyond the annotations. No hidden side effects are revealed, but the annotations cover safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the function, second provides usage guidance. No filler, front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and strong annotations, the description covers purpose, usage scenarios, and return value shape (ranked docs with URLs and summaries). It is complete for a straightforward search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; both query and limit are described in the schema. The description does not add significant parameter-level detail beyond the schema, as the schema already lists example query terms. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches the public Spala agent-facing documentation index by query, which is a specific verb+resource. It also lists concrete topics (setup, OAuth, installer, MCP, pricing, etc.) that distinguishes it from sibling tools like spala_help or project management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage context by listing question types that should trigger this tool ('Invoke for setup, OAuth, installer...'). It does not explicitly name alternative tools or state when not to use it, but the topic list gives clear guidance for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
organization_createCreate Spala OrganizationADestructiveInspect
AUTH REQUIRED; WRITES A NEW SPALA ORGANIZATION FOR THE SIGNED-IN ACCOUNT. Creates an additional company or workspace organization using the supplied name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable company or workspace name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| nextAction | Yes | |
| organization | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate write and destructive behavior. The description adds context that this is for the signed-in account and creates an 'additional' organization, which is useful beyond the annotations. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the critical auth and write intent, and contains no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema present, the description fully covers purpose, auth requirement, and effect. No additional information is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the name parameter is well-documented in the schema. The description only says 'using the supplied name' without adding extra semantics, matching the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('WRITES'/'Creates') with a clear resource ('Spala organization') and scope ('for the signed-in account', 'additional company or workspace'). This clearly distinguishes it from sibling tools like project_create or spala_start.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for creating an additional organization for the signed-in account, and notes that auth is required. However, it does not explicitly name alternatives or state when not to use this tool, though the sibling list implies it is the org-creation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_connectConnect Spala ProjectADestructiveIdempotentInspect
AUTH REQUIRED; IDEMPOTENT PROJECT CONNECTION WRITE. Prepares one accessible Spala project for agent access. Accepts one installer client (codex, roo, claude-code, cursor, a2a); when omitted, returns a client-selection response without executable arguments. Returns a client-specific workspace binding plan: protected one-time bootstrap for Codex, Roo, and Cursor; verifier-bound delegated bootstrap for Claude Code.
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan. | |
| profile | No | Set to guided to preserve the compact build-and-test surface through project handoff. Omit for the default full compatibility surface. | |
| projectId | No | Exact Spala project ID. Mutually exclusive with subdomain. | |
| subdomain | No | Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId. | |
| organizationId | No | Optional organization ID returned for the signed-in account. | |
| bootstrapChallenge | No | S256 challenge returned by project prepare. The verifier remains only in the local credential store. | |
| bootstrapRequestId | No | Non-secret local request ID returned by project prepare. Claude Code only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rule | No | |
| mcpUrl | Yes | |
| handoff | Yes | |
| project | Yes | |
| bootstrap | Yes | |
| nextSteps | No | |
| transport | Yes | |
| serverName | Yes | |
| installPlan | Yes | |
| toolProfile | No | |
| workspaceOnly | No | |
| intentBoundary | No | |
| preparedByProjectBackend | No | |
| bootstrapPreparedByProjectBackend | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that authentication is required, that the operation is an idempotent write, that omitting a client returns no executable arguments, and that bootstrap behavior differs by client (one-time protected vs verifier-bound delegated). This gives the agent a meaningful side-effect model before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads a compact operation classifier, then packs the object, input constraint, omission behavior, and expected output into a few dense clauses. There is no filler, repetition of the schema, or unnecessary explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex oneOf selector, optional client, and existing output schema, the description covers the essential call decision and result shape. It relies on schema field descriptions for the project-prepare provenance of bootstrapChallenge and bootstrapRequestId, which is a minor but acceptable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents every parameter at 100% coverage, including enums, patterns, mutual exclusivity, and omission behavior. The description only echoes the omitted-client behavior that appears in the schema, so it adds no material parameter-level meaning beyond the structured definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource—'Prepares one accessible Spala project for agent access'—and the concrete outcome: a client-specific workspace binding plan. The connection/write framing separates it from sibling tools like project_create or project_select even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear call context: use it when an accessible Spala project needs to be prepared for an agentic client, and it explicitly defines the omitted-client fallback behavior. It does not explicitly name alternative sibling tools for creation or selection, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_createCreate Spala ProjectADestructiveInspect
AUTH REQUIRED; WRITES TO THE SPALA CONTROL PLANE. Creates a real Spala project with the supplied project name in an accessible organization. Accepts an organization id when multiple organizations are available and automatically scopes a sole organization. This operation is not idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name for the new Spala project. | |
| organizationId | No | Organization ID returned for the signed-in account. Optional only when exactly one organization is available. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | Yes | |
| created | Yes | |
| project | Yes | |
| organization | Yes | |
| provisioning | Yes | |
| mcpUrlResolved | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'AUTH REQUIRED' and 'WRITES TO THE SPALA CONTROL PLANE', which are not captured by the annotations. It also explains auto-scoping behavior for a sole organization. These traits go beyond the structured annotations and significantly enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the critical auth/write warning, followed by purpose and behavior. Every sentence contributes value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with output schema and annotations, the description covers the essential aspects: auth, write side effect, organization scoping, and non-idempotency. It lacks explicit alternative tool mentions, but the overall context is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented. The description restates the organizationId condition but adds no new format or syntax details beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Creates' and resource 'a real Spala project', with specific scoping to 'an accessible organization'. It distinguishes itself from siblings like project_list and project_connect by emphasizing real creation in the control plane.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to pass organizationId ('when multiple organizations are available') and that a sole organization is auto-scoped. However, it does not explicitly mention alternative tools for listing or connecting to projects, so it lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_get_mcp_manifestGet Project MCP ManifestBDestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan. | |
| profile | No | Set to guided to preserve the compact build-and-test surface through project handoff. Omit for the default full compatibility surface. | |
| projectId | No | Exact Spala project ID. Mutually exclusive with subdomain. | |
| subdomain | No | Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId. | |
| organizationId | No | Optional organization ID returned for the signed-in account. | |
| bootstrapChallenge | No | S256 challenge returned by project prepare. The verifier remains only in the local credential store. | |
| bootstrapRequestId | No | Non-secret local request ID returned by project prepare. Claude Code only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| auth | No | |
| name | Yes | |
| rule | No | |
| mcpUrl | Yes | |
| handoff | Yes | |
| project | Yes | |
| bootstrap | Yes | |
| nextSteps | No | |
| transport | Yes | |
| serverName | Yes | |
| installPlan | Yes | |
| manifestUrl | Yes | |
| toolProfile | No | |
| schemaVersion | Yes | |
| intentBoundary | No |
TDQS
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.
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.
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.
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.
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.
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.
project_get_public_contextGet Project Public ContextARead-onlyIdempotentInspect
AUTH REQUIRED; READ-ONLY. Returns documented MCP handoff fields for one accessible project without exposing tokens, private source code, unrelated customer data, or executable installer arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Exact Spala project ID. Mutually exclusive with subdomain. | |
| subdomain | No | Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId. | |
| organizationId | No | Optional organization ID returned for the signed-in account. |
Output Schema
| Name | Required | Description |
|---|---|---|
| handoff | Yes | |
| project | Yes | |
| intentBoundary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds useful context beyond this by specifying that the tool does not expose tokens, private source code, unrelated customer data, or executable installer arguments, and that auth is required. This supplements the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with 'AUTH REQUIRED; READ-ONLY,' and every phrase earns its place. It is concise without sacrificing key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a comprehensive schema (including oneOf selector) and an output schema present, the description covers the core purpose and safety exclusions. It does not repeat return-value details or selector rules, which are already in the schema. Minor room for improvement: it could explicitly mention that exactly one of projectId or subdomain is required, but that is covered structurally.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 projectId, subdomain, and organizationId, including mutual exclusivity. The description does not add parameter-specific meaning, so it meets the baseline but does not go beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') and identifies the resource ('documented MCP handoff fields for one accessible project'). It clearly distinguishes this from sibling tools by focusing on public context retrieval and explicitly listing exclusions, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (retrieving public context for a project) and notes auth requirements, but it does not explicitly mention alternatives or when not to use this tool. Sibling tools like project_select or project_get_mcp_manifest exist, but no exclusions or comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_listList Spala ProjectsARead-onlyIdempotentInspect
AUTH REQUIRED; READ-ONLY. Lists projects accessible to the authenticated Spala user in one organization. Accepts an organization id when multiple organizations are available and automatically scopes a sole organization.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | No | Organization ID returned for the signed-in account. Optional only when exactly one organization is available. |
Output Schema
| Name | Required | Description |
|---|---|---|
| projects | Yes | |
| organization | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'AUTH REQUIRED' (not covered by annotations) and explains automatic organization scoping behavior. It also states 'READ-ONLY' which aligns with the readOnlyHint annotation but adds no contradiction. The added context about auth and scoping goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with 'AUTH REQUIRED; READ-ONLY' followed by a clear statement of function and scoping behavior. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single optional parameter, and the description covers auth, read-only nature, and organization scoping. An output schema exists, so return values need not be described. The description is fully adequate for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter is well-documented. The tool description reinforces the conditional nature of organizationId ('Accepts an organization id when multiple organizations are available'), adding meaning about when to pass the parameter versus letting it be inferred.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Lists') and resource ('projects accessible to the authenticated Spala user'), and clarifies the organizational scope. It distinguishes itself from sibling tools like project_create, project_select, and project_connect by focusing on listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains when to supply an organizationId ('when multiple organizations are available') and that a sole organization is automatically scoped. It does not explicitly name alternatives or exclusion cases, but the scoping guidance provides useful context for when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_selectSelect Spala ProjectADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | Target MCP client for @spala-ai/mcp-install. Omit to receive client_selection_required without an executable mutation plan. | |
| profile | No | Set to guided to preserve the compact build-and-test surface through project handoff. Omit for the default full compatibility surface. | |
| projectId | No | Exact Spala project ID. Mutually exclusive with subdomain. | |
| subdomain | No | Exact project subdomain returned by the Spala projects API. Mutually exclusive with projectId. | |
| organizationId | No | Optional organization ID returned for the signed-in account. | |
| bootstrapChallenge | No | S256 challenge returned by project prepare. The verifier remains only in the local credential store. | |
| bootstrapRequestId | No | Non-secret local request ID returned by project prepare. Claude Code only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rule | No | |
| mcpUrl | Yes | |
| handoff | Yes | |
| project | Yes | |
| bootstrap | Yes | |
| nextSteps | No | |
| transport | Yes | |
| serverName | Yes | |
| installPlan | Yes | |
| toolProfile | No | |
| workspaceOnly | No | |
| intentBoundary | No | |
| preparedByProjectBackend | No | |
| bootstrapPreparedByProjectBackend | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose idempotent, destructive, and non-read-only traits. The description adds 'AUTH REQUIRED' (authentication requirement) and notes that it returns the same binding contract as project_connect, which is useful. It does not describe side effects beyond the annotation's destructive hint, but it does not contradict the annotations. The added value is modest yet non-trivial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences that front-load the critical traits ('AUTH REQUIRED; IDEMPOTENT PROJECT CONNECTION WRITE') before the alias statement. Every word earns its place; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, oneOf structure, output schema, rich annotations), the description is sparse but sufficient because the schema and output schema fill in the details. It adds the essential alias context and auth requirement, which are not derivable from the schema. The missing piece is the explicit relationship to project_connect's usage scenarios, but that is a minor gap given the structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each of the 7 parameters already has a clear description. The tool description itself adds no parameter-level meaning, but it doesn't need to. The baseline of 3 applies because the schema carries the full burden and the description does not undermine or enhance it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('prepares one accessible project and returns the same client-specific workspace binding contract as project_connect') and identifies itself as a compatibility alias for project_connect, clearly distinguishing it from siblings like project_create. The purpose is unambiguous even though the tool name is 'select' – the description makes the behavior concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by calling itself a 'Compatibility alias for project_connect,' which hints that it should be used where a compatible connection is needed. However, it does not explicitly state when to choose this over project_connect or mention any exclusions (e.g., 'use project_connect for new integrations'). The schema adds usage hints but the tool description itself lacks direct when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spala_get_onboardingGet Spala OnboardingARead-onlyIdempotentInspect
Returns machine-readable Spala onboarding information for MCP clients. Includes product scope, OAuth metadata, supported installer client identifiers, authenticated project-handoff status, workflow stages, and canonical links.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| urls | Yes | |
| product | Yes | |
| workflow | Yes | |
| publicMcpRole | Yes | |
| handoffExample | No | |
| intentBoundary | No | |
| projectMcpRole | Yes | |
| supportedInstallerClients | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description adds useful context by specifying the exact content returned (product scope, OAuth metadata, workflow stages, canonical links). This goes beyond the schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose ('Returns machine-readable...') and packs meaningful details without redundancy. Every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-argument, read-only tool with an output schema, the description fully covers what the tool provides. It lists the content categories and format (machine-readable), making it self-sufficient for an agent to understand the tool's purpose and results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and no arguments are needed. Per the baseline rule for 0-param tools, the description is not required to elaborate on parameters, and it correctly makes no misleading parameter claims.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') with a clear resource ('machine-readable Spala onboarding information') and explicitly lists contained items (product scope, OAuth metadata, etc.), which distinguishes it from siblings like spala_get_tool_map or spala_help.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and 'onboarding information' but the description does not explicitly state when to use this tool versus alternatives or provide any exclusion scenarios. It simply describes what the tool returns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spala_get_tool_mapGet Spala Tool MapARead-onlyIdempotentInspect
Returns a machine-readable routing map for Spala MCP clients. Identifies public and authenticated tools, supported installer clients, OAuth endpoints, project handoff rules, and project-MCP entry points.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| publicMcp | Yes | |
| projectMcp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by listing what the map identifies, but does not disclose additional behavioral details like whether authentication is required or if the response is cached. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose. The first sentence states what it returns; the second lists the categories of information. Every phrase earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, an output schema defining the return format, and annotations covering safety, the description is complete. It explains the tool's purpose and content sufficiently for an agent to select and invoke it correctly without needing further elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description clearly states it expects an empty object. With 100% schema coverage and no parameters to explain, the description does not need to add parameter details. The baseline score of 4 for zero-parameter tools applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a machine-readable routing map for Spala MCP clients and enumerates the specific content categories (public/authenticated tools, installer clients, OAuth endpoints, handoff rules, entry points). This specific verb+resource scope distinguishes it from sibling tools like spala_help or spala_get_onboarding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you need a routing map containing tool classifications and endpoints, this is the tool. It provides clear context about what the map includes, but does not explicitly state when not to use it or mention alternatives such as spala_help. Since no exclusions are given, it stays at a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spala_helpLearn About SpalaARead-onlyIdempotentInspect
Returns a human-readable overview of Spala, canonical start URLs, and the boundary between public discovery and project-scoped backend MCPs. Invoke for product, setup, or integration orientation. This read-only tool requires no authentication and does not access or modify project data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| markdown | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'requires no authentication' and 'does not access or modify project data,' providing stronger guarantees beyond the basic hints. This additional context is valuable and does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the first sentence front-loading the core purpose and the second providing usage and safety context. Each sentence earns its place, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple no-parameter help tool with a rich output schema and good annotations, the description covers the essential aspects: what is returned (overview, URLs, boundary), when to use it (orientation), and its safety profile (read-only, no auth, no project access). This is sufficient for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The schema already states 'No arguments' and the description adds no param-specific details, but no such details are needed. The description's focus on output and usage compensates for the lack of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Returns a human-readable overview of Spala, canonical start URLs, and the boundary between public discovery and project-scoped backend MCPs.' This is a specific verb+resource and distinguishes it from sibling tools like docs_search or spala_get_tool_map by focusing on orientation and boundary clarification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear invocation context: 'Invoke for product, setup, or integration orientation.' It does not explicitly mention alternatives or when not to use the tool, but the context is specific enough for an agent to know when this help tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spala_startStart SpalaARead-onlyIdempotentInspect
AUTH REQUIRED; READ-ONLY STARTUP. Invoke after OAuth to begin Spala account or project setup. Returns a versioned startup phase with account readiness, organizations, safely scoped project discovery, and one explicit next action. Reports missing account fields, automatically scopes a sole organization, and returns all accessible choices when multiple organizations exist.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| user | Yes | |
| phase | Yes | |
| projects | Yes | |
| nextAction | Yes | |
| accountSetup | Yes | |
| authenticated | Yes | |
| organizations | Yes | |
| schemaVersion | Yes | |
| backendProvider | Yes | |
| installerMaintenance | Yes | |
| selectedOrganizationId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds meaningful behavioral detail: auth requirement, read-only startup nature, versioned output, account readiness, scoping behavior for a sole organization, and choice reporting for multiple organizations. It enriches the readOnlyHint and opens up what an agent can expect without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with 'AUTH REQUIRED; READ-ONLY STARTUP' and then immediately states the invocation condition. Every sentence contributes distinct value: return shape, account fields, organization scoping logic. No filler or repeated schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there are no parameters and an output schema exists, the description provides complete operational context: when to call, what it returns, why it is safe, and how it behaves under different organizational configurations. Nothing an agent needs to decide invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and late-stage schema description coverage already saying nothing is needed, the description has no parameter details to add. The tool requires no arguments, and this is handled well by the schema. Baseline 4 is appropriate for a zero-argument tool operating at a call result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: a read-only startup routine invoked after OAuth to begin Spala account or project setup. It moves well beyond the name with explicit details about returning a versioned startup phase and one next action, making it easy for an agent to distinguish from generic list or status tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete precondition in 'Invoke after OAuth' and explains the logic for sole versus multiple organizations, but it does not explicitly mention when not to use this tool or name alternatives in the sibling set. This is clear context with no exclusions or alternative routing, which matches the 'clear context, but no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_listList Spala TemplatesARead-onlyIdempotentInspect
Lists public Spala backend templates matching an optional query. Invoke to discover available backend starting points such as marketplace, dashboard API, reservation, inventory, or document management. Returns template ids, names, descriptions, and tags.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of catalog entries to return. | |
| query | No | Optional filter phrase for matching public Spala templates or addons by name, tag, or use case. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| templates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, establishing a safe read operation. The description adds that it lists public templates and returns specific fields (ids, names, descriptions, tags), providing useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, with the core statement first. The middle sentence adds useful context with examples, and the last sentence discloses return contents without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and only two optional parameters, the description is sufficient. It covers what the tool does, when to use it, and what it returns, making it complete for this simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both limit and query with descriptions, achieving 100% coverage. The description mentions 'optional query' but does not add any parameter semantics beyond what the schema already states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Lists public Spala backend templates matching an optional query,' clearly identifying the action and resource. It distinguishes from siblings like addon_list by focusing on templates and providing examples of backend starting points.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides context for when to use: 'to discover available backend starting points.' It does not explicitly mention alternatives or when not to use, but the focus on public templates and examples makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
project_connect3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - added
Input schema / properties / profileAdded 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" +} - added
Output schema / properties / toolProfileAdded value: +{ + "enum": [ + "full", + "guided" + ], + "type": "string" +}
- Changed
project_get_mcp_manifest3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - added
Input schema / properties / profileAdded 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" +} - added
Output schema / properties / toolProfileAdded value: +{ + "enum": [ + "full", + "guided" + ], + "type": "string" +}
- Changed
project_select3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - added
Input schema / properties / profileAdded 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" +} - added
Output schema / properties / toolProfileAdded value: +{ + "enum": [ + "full", + "guided" + ], + "type": "string" +}
3 tool updates
- Changed
project_connect3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - removed
Input schema / properties / profileRemoved 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" -} - removed
Output schema / properties / toolProfileRemoved value: -{ - "enum": [ - "full", - "guided" - ], - "type": "string" -}
- Changed
project_get_mcp_manifest3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - removed
Input schema / properties / profileRemoved 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" -} - removed
Output schema / properties / toolProfileRemoved value: -{ - "enum": [ - "full", - "guided" - ], - "type": "string" -}
- Changed
project_select3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - removed
Input schema / properties / profileRemoved 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" -} - removed
Output schema / properties / toolProfileRemoved value: -{ - "enum": [ - "full", - "guided" - ], - "type": "string" -}
3 tool updates
- Changed
project_connect3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - added
Input schema / properties / profileAdded 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" +} - added
Output schema / properties / toolProfileAdded value: +{ + "enum": [ + "full", + "guided" + ], + "type": "string" +}
- Changed
project_get_mcp_manifest3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - added
Input schema / properties / profileAdded 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" +} - added
Output schema / properties / toolProfileAdded value: +{ + "enum": [ + "full", + "guided" + ], + "type": "string" +}
- Changed
project_select3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - added
Input schema / properties / profileAdded 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" +} - added
Output schema / properties / toolProfileAdded value: +{ + "enum": [ + "full", + "guided" + ], + "type": "string" +}
1 tool update
- Changed
spala_start2 fields changed- added
Output schema / properties / installerMaintenanceAdded value: +{ + "additionalProperties": true, + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "schemaVersion", - "phase", - "authenticated", - "backendProvider", - "user", - "accountSetup", - "organizations", - "projects", - "nextAction" -]New value: +[ + "schemaVersion", + "phase", + "authenticated", + "backendProvider", + "user", + "accountSetup", + "organizations", + "projects", + "installerMaintenance", + "nextAction" +]
1 tool update
- Changed
spala_start2 fields changed- removed
Output schema / properties / installerMaintenanceRemoved value: -{ - "additionalProperties": true, - "type": "object" -} - changed
Output schema / requiredPrevious value: -[ - "schemaVersion", - "phase", - "authenticated", - "backendProvider", - "user", - "accountSetup", - "organizations", - "projects", - "installerMaintenance", - "nextAction" -]New value: +[ + "schemaVersion", + "phase", + "authenticated", + "backendProvider", + "user", + "accountSetup", + "organizations", + "projects", + "nextAction" +]
1 tool update
- Changed
spala_start2 fields changed- added
Output schema / properties / installerMaintenanceAdded value: +{ + "additionalProperties": true, + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "schemaVersion", - "phase", - "authenticated", - "backendProvider", - "user", - "accountSetup", - "organizations", - "projects", - "nextAction" -]New value: +[ + "schemaVersion", + "phase", + "authenticated", + "backendProvider", + "user", + "accountSetup", + "organizations", + "projects", + "installerMaintenance", + "nextAction" +]
3 tool updates
- Changed
project_connect3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - added
Input schema / properties / bootstrapChallengeAdded 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" +} - added
Input schema / properties / bootstrapRequestIdAdded value: +{ + "description": "Non-secret local request ID returned by project prepare. Claude Code only.", + "pattern": "^claim_[A-Za-z0-9_-]{20,80}$", + "type": "string" +}
- Changed
project_get_mcp_manifest3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - added
Input schema / properties / bootstrapChallengeAdded 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" +} - added
Input schema / properties / bootstrapRequestIdAdded value: +{ + "description": "Non-secret local request ID returned by project prepare. Claude Code only.", + "pattern": "^claim_[A-Za-z0-9_-]{20,80}$", + "type": "string" +}
- Changed
project_select3 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - added
Input schema / properties / bootstrapChallengeAdded 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" +} - added
Input schema / properties / bootstrapRequestIdAdded value: +{ + "description": "Non-secret local request ID returned by project prepare. Claude Code only.", + "pattern": "^claim_[A-Za-z0-9_-]{20,80}$", + "type": "string" +}
1 tool update
- Changed
account_status2 fields changed- added
Output schema / properties / oauthResourceAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "authenticated", - "tokenStatus", - "subject", - "user", - "organizations", - "accountSetup" -]New value: +[ + "authenticated", + "tokenStatus", + "oauthResource", + "subject", + "user", + "organizations", + "accountSetup" +]
3 tool updates
- Changed
project_connect2 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "claude-code", - "cursor" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor", + "a2a" +]
- Changed
project_get_mcp_manifest2 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "claude-code", - "cursor" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor", + "a2a" +]
- Changed
project_select2 fields changed- changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "claude-code", - "cursor" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor", + "a2a" +]
4 tool updates
- Changed
account_status2 fields changed- removed
Output schema / properties / oauthResourceRemoved value: -{ - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "authenticated", - "tokenStatus", - "oauthResource", - "subject", - "user", - "organizations", - "accountSetup" -]New value: +[ + "authenticated", + "tokenStatus", + "subject", + "user", + "organizations", + "accountSetup" +]
- Changed
project_connect4 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "claude-code", - "cursor", - "a2a" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor" +]
- Changed
project_get_mcp_manifest4 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "claude-code", - "cursor", - "a2a" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor" +]
- Changed
project_select4 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "claude-code", - "cursor", - "a2a" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor" +]
4 tool updates
- Changed
account_status2 fields changed- added
Output schema / properties / oauthResourceAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "authenticated", - "tokenStatus", - "subject", - "user", - "organizations", - "accountSetup" -]New value: +[ + "authenticated", + "tokenStatus", + "oauthResource", + "subject", + "user", + "organizations", + "accountSetup" +]
- Changed
project_connect4 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "claude-code", - "cursor" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor", + "a2a" +]
- Changed
project_get_mcp_manifest4 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "claude-code", - "cursor" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor", + "a2a" +]
- Changed
project_select4 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "claude-code", - "cursor" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor", + "a2a" +]
3 tool updates
- Changed
project_connect3 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor" +]
- Changed
project_get_mcp_manifest3 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor" +]
- Changed
project_select3 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo" -]New value: +[ + "codex", + "roo", + "claude-code", + "cursor" +]
3 tool updates
- Changed
project_connect7 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "a2a" -]New value: +[ + "codex", + "roo" +] - changed
Output schema / descriptionPrevious 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." - removed
Output schema / properties / handoffTargetRemoved value: -{ - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "project", - "handoff", - "mcpUrl", - "serverName", - "transport", - "handoffTarget", - "bootstrap" -]New value: +[ + "project", + "handoff", + "mcpUrl", + "serverName", + "transport", + "installPlan", + "bootstrap" +]
- Changed
project_get_mcp_manifest4 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "a2a" -]New value: +[ + "codex", + "roo" +]
- Changed
project_select7 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo", - "a2a" -]New value: +[ + "codex", + "roo" +] - changed
Output schema / descriptionPrevious 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." - removed
Output schema / properties / handoffTargetRemoved value: -{ - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "project", - "handoff", - "mcpUrl", - "serverName", - "transport", - "handoffTarget", - "bootstrap" -]New value: +[ + "project", + "handoff", + "mcpUrl", + "serverName", + "transport", + "installPlan", + "bootstrap" +]
3 tool updates
- Changed
project_connect7 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo" -]New value: +[ + "codex", + "roo", + "a2a" +] - changed
Output schema / descriptionPrevious 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." - added
Output schema / properties / handoffTargetAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "project", - "handoff", - "mcpUrl", - "serverName", - "transport", - "installPlan", - "bootstrap" -]New value: +[ + "project", + "handoff", + "mcpUrl", + "serverName", + "transport", + "handoffTarget", + "bootstrap" +]
- Changed
project_get_mcp_manifest4 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo" -]New value: +[ + "codex", + "roo", + "a2a" +]
- Changed
project_select7 fields changed- changed
Input schema / descriptionPrevious 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." - changed
Input schema / oneOfPrevious 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" + } +] - changed
Input schema / properties / client / descriptionPrevious 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." - changed
Input schema / properties / client / enumPrevious value: -[ - "codex", - "roo" -]New value: +[ + "codex", + "roo", + "a2a" +] - changed
Output schema / descriptionPrevious 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." - added
Output schema / properties / handoffTargetAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "project", - "handoff", - "mcpUrl", - "serverName", - "transport", - "installPlan", - "bootstrap" -]New value: +[ + "project", + "handoff", + "mcpUrl", + "serverName", + "transport", + "handoffTarget", + "bootstrap" +]
16 tool updates
- Changed
account_setup1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Completed account setup and the next protected startup action.", + "properties": { + "accountSetup": { + "type": "string" + }, + "nextAction": { + "additionalProperties": true, + "type": "object" + }, + "organization": { + "additionalProperties": true, + "type": "object" + }, + "organizationCreated": { + "type": "boolean" + }, + "profileUpdated": { + "type": "boolean" + }, + "user": { + "additionalProperties": true, + "type": "object" + } + }, + "required": [ + "accountSetup", + "profileUpdated", + "organizationCreated", + "user", + "organization", + "nextAction" + ], + "type": "object" +}
- Changed
account_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Authenticated Spala account readiness and organization state.", + "properties": { + "accountSetup": { + "additionalProperties": true, + "type": "object" + }, + "authenticated": { + "type": "boolean" + }, + "next": { + "type": "string" + }, + "organizations": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "subject": { + "type": "string" + }, + "tokenStatus": { + "type": "string" + }, + "user": { + "additionalProperties": true, + "type": "object" + } + }, + "required": [ + "authenticated", + "tokenStatus", + "subject", + "user", + "organizations", + "accountSetup" + ], + "type": "object" +}
- Changed
addon_list1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Public Spala addons and integrations matching the optional query.", + "properties": { + "addons": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "query": { + "type": "string" + } + }, + "required": [ + "query", + "addons" + ], + "type": "object" +}
- Changed
docs_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Ranked public documentation search results.", + "properties": { + "query": { + "type": "string" + }, + "results": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "query", + "results" + ], + "type": "object" +}
- Changed
organization_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "New Spala organization and the next startup action.", + "properties": { + "created": { + "type": "boolean" + }, + "nextAction": { + "additionalProperties": true, + "type": "object" + }, + "organization": { + "additionalProperties": true, + "type": "object" + } + }, + "required": [ + "organization", + "created", + "nextAction" + ], + "type": "object" +}
- Changed
project_connect1 field changed- changed
Output 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" +}
- Changed
project_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "New Spala project and provisioning guidance for project MCP handoff.", + "properties": { + "created": { + "type": "boolean" + }, + "mcpUrlResolved": { + "type": "boolean" + }, + "next": { + "type": "string" + }, + "organization": { + "additionalProperties": true, + "type": "object" + }, + "project": { + "additionalProperties": true, + "type": "object" + }, + "provisioning": { + "additionalProperties": true, + "type": "object" + } + }, + "required": [ + "organization", + "project", + "created", + "mcpUrlResolved", + "provisioning", + "next" + ], + "type": "object" +}
- Changed
project_get_mcp_manifest1 field changed- changed
Output 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" +}
- Changed
project_get_public_context1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Safe documented project handoff context without credentials or executable installer arguments.", + "properties": { + "handoff": { + "additionalProperties": true, + "type": "object" + }, + "intentBoundary": { + "additionalProperties": true, + "type": "object" + }, + "project": { + "additionalProperties": true, + "type": "object" + } + }, + "required": [ + "project", + "intentBoundary", + "handoff" + ], + "type": "object" +}
- Changed
project_list1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Projects in one authoritative organization available to the authenticated user.", + "properties": { + "organization": { + "additionalProperties": true, + "type": "object" + }, + "projects": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "organization", + "projects" + ], + "type": "object" +}
- Changed
project_select1 field changed- changed
Output 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" +}
- Changed
spala_get_onboarding1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Anonymous compatibility onboarding and canonical Spala workflow links.", + "properties": { + "handoffExample": { + "additionalProperties": true, + "type": "object" + }, + "intentBoundary": { + "additionalProperties": true, + "type": "object" + }, + "product": { + "type": "string" + }, + "projectMcpRole": { + "type": "string" + }, + "publicMcpRole": { + "type": "string" + }, + "supportedInstallerClients": { + "items": { + "type": "string" + }, + "type": "array" + }, + "urls": { + "additionalProperties": true, + "type": "object" + }, + "workflow": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "product", + "publicMcpRole", + "projectMcpRole", + "workflow", + "urls" + ], + "type": "object" +}
- Changed
spala_get_tool_map1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Machine-readable routing map for the public MCP and project MCP.", + "properties": { + "projectMcp": { + "additionalProperties": true, + "type": "object" + }, + "publicMcp": { + "additionalProperties": true, + "type": "object" + } + }, + "required": [ + "publicMcp", + "projectMcp" + ], + "type": "object" +}
- Changed
spala_help1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Human-readable Spala overview and public/project MCP boundary.", + "properties": { + "markdown": { + "type": "string" + } + }, + "required": [ + "markdown" + ], + "type": "object" +}
- Changed
spala_start1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Authenticated startup state with account readiness, project discovery, and one next action.", + "properties": { + "accountSetup": { + "additionalProperties": true, + "type": "object" + }, + "authenticated": { + "type": "boolean" + }, + "backendProvider": { + "type": "string" + }, + "nextAction": { + "additionalProperties": true, + "type": "object" + }, + "organizations": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "phase": { + "type": "string" + }, + "projects": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "schemaVersion": { + "type": "integer" + }, + "selectedOrganizationId": { + "type": "string" + }, + "user": { + "additionalProperties": true, + "type": "object" + } + }, + "required": [ + "schemaVersion", + "phase", + "authenticated", + "backendProvider", + "user", + "accountSetup", + "organizations", + "projects", + "nextAction" + ], + "type": "object" +}
- Changed
template_list1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Public Spala backend templates matching the optional query.", + "properties": { + "query": { + "type": "string" + }, + "templates": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "query", + "templates" + ], + "type": "object" +}
Related MCP Connectors
Hosted Google Ads MCP with OAuth, bounded reads, and prepare/confirm writes.
Hyperscale Product reads and contract operations over MCP.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Hosted Meta ads MCP with OAuth, bounded reads, and prepare/confirm writes.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceExposes workspace-scoped Backend project queries via MCP, enabling explicit token pairing, status checks, and scoped sync of project docs, source artifacts, graph data, and evidence metadata without background synchronization.-
- AlicenseNot gradedqualityAmaintenanceEnables clients to access multiple backend MCP servers through a single endpoint, with OAuth 2.1 authorization, namespaced tools, and secure credential management.1MIT
- FlicenseNot gradedqualityCmaintenanceProvides a single remote MCP endpoint that gives AI clients policy-checked business tools, shared cross-client memory, durable jobs, and consolidated reporting across connected projects and operations.-
- AlicenseNot gradedqualityBmaintenanceProvides OAuth-based MCP integration and client-side tooling for connecting agents to a remote service, with CLI and plugin support.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.