Spala Public MCP
Server Details
Discovery, OAuth, project operations, and exact project MCP handoff for Spala backend projects.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- spala-ai/spala-public-mcp
- GitHub Stars
- 0
- Server Listing
- spala-public-mcp
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 | Optional project MCP tool profile. full preserves the complete compatibility surface; guided exposes the compact build-and-test surface. Defaults to full. | |
| 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?
Beyond the annotations, the description adds 'AUTH REQUIRED', the idempotent-write nature, the omitted-client fallback, and the client-specific bootstrap plan types. It does not elaborate on what the destructive hint implies in practice, but the write and mutation profile is clear enough not to mislead.
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 dense sentences front-load the most actionable facts: auth, idempotency, write behavior, and the goal. The client-omission case and client-specific result types are packed into the remaining sentence without 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?
The schema plus description cover the selector variants, required parameters, enums, defaults, and the return-format distinction. The description could add a bit more about the relationship to project prepare or the 'a2a' client's output, but the definition is still sufficient 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%, and the schema itself documents all parameters, enums, mutual exclusivity, and defaults with detailed descriptions. The tool description adds high-level context about client selection and bootstrap behavior but does not need to restate parameter details.
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, resource, and effect: 'IDEMPOTENT PROJECT CONNECTION WRITE' and 'Prepares one accessible Spala project for agent access.' It clearly distinguishes itself from siblings like project_create, project_select, and project_get_mcp_manifest by emphasizing the connection/binding-plan outcome rather than creating, selecting, or fetching a manifest.
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: use this tool to prepare a project for agent access by providing a client, and it explicitly describes the behavior when client is omitted. It does not name alternative tools or exclusion criteria, so it stops short of a full when-to-use versus when-not-to-use guide.
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 ManifestADestructiveIdempotentInspect
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 | Optional project MCP tool profile. full preserves the complete compatibility surface; guided exposes the compact build-and-test surface. Defaults to full. | |
| 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?
AUTH REQUIRED and IDEMPOTENT PROJECT CONNECTION WRITE disclose auth needs and side-effect class beyond the annotations, and the omitted-client conditional behavior is explained. The destructiveHint annotation is not contradicted, though the description could say more about the destructive aspect.
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 most important constraints front-loaded (auth, idempotency, write nature); no filler or redundant elaboration.
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 rich oneOf schema and output schema, the description covers the essential operation, auth, idempotency, and the conditional no-client case. A brief sequencing note about the prepare prerequisite would be nice, but the schema already supplies that detail.
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%, so the schema descriptions already document every parameter. The narrative description mainly echoes the client enum and the omit-client behavior instead of adding new parameter-level meaning.
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 concrete action and object: 'Prepares one accessible project' and lists the precise outputs (manifest URL, MCP URL, client-specific workspace binding plan). This is specific enough to distinguish the tool from siblings like project_connect and project_get_public_context.
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 gives clear operational context: one installer client should be supplied, and omitting it returns a client-selection response without executable arguments. It does not explicitly name when-not-to-use or alternatives, so it stops short of a 5.
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 | Optional project MCP tool profile. full preserves the complete compatibility surface; guided exposes the compact build-and-test surface. Defaults to full. | |
| 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?
Adds context beyond annotations: 'AUTH REQUIRED' is not encoded anywhere in the annotation block, and framing the operation as an idempotent write reinforces idempotentHint=true alongside readOnlyHint=false/destructiveHint=true. It also discloses the alias behavior and the contract compatibility with project_connect. No contradiction with annotations; it simply stops short of explaining the bootstrap flow, which the schema's parameter descriptions already cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the most critical constraints ('AUTH REQUIRED; IDEMPOTENT PROJECT CONNECTION WRITE'). No wasted words, but 'client-specific workspace binding contract' is jargon — the schema's own phrase 'executable installer argv' is more concrete and could have been used.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a union input schema (oneOf projectId/subdomain), bootstrap parameters, and a full output schema, the description supplies the non-obvious context: auth requirement, idempotent write semantics, and the alias relationship. Residual vagueness around 'binding contract' is compensated by the schema's 100% parameter coverage and the presence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for all 7 parameters including mutual exclusivity (projectId vs subdomain), the client enum, profile semantics, and bootstrap challenge/request ID patterns. The tool description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Prepares one accessible project and returns the same client-specific workspace binding contract as project_connect.' Explicitly names project_connect as the canonical sibling and frames this tool as a 'Compatibility alias,' which distinguishes it from the other 15 sibling tools. The title 'Select Spala Project' also aligns with the described action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is 'Compatibility alias for project_connect,' which implies interchangeability but never states when to choose project_select over project_connect or when not to use it. No contrast with related project siblings (project_create, project_get_public_context, project_get_mcp_manifest) and no mention of prerequisites. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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. Dates show when Glama detected each change.
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" +}
1 tool update
- Added
organization_create
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
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 gradedqualityBmaintenanceEnables clients to access multiple backend MCP servers through a single endpoint, with OAuth 2.1 authorization, namespaced tools, and secure credential management.MIT
- FlicenseNot gradedqualityNot gradedmaintenanceAggregates multiple MCP servers behind a single, secure endpoint with unified tool/resource discovery, OAuth authentication, and resilient request routing. Enables users to manage and interact with multiple MCP backends through one centralized interface with load balancing and circuit breakers.2-
- AlicenseNot gradedqualityCmaintenanceAuthenticating reverse proxy for MCP servers providing credential isolation, OAuth2 token management, and composite tool aggregation.BSD Zero Clause
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Most tools have clear, distinct purposes, but project_connect and project_select are essentially aliases, which introduces ambiguity. Additionally, spala_help and docs_search could overlap, but they are differentiated by scope.
The naming mostly follows a <domain>_<verb> pattern, with some exceptions like spala_help (no verb) and the duplicate project_select. Overall, the pattern is predictable and readable.
16 tools is well-scoped for a public platform that handles accounts, organizations, projects, addons, templates, and documentation. Each tool earns its place without being excessive.
Core workflows like creating and connecting projects are covered, but there are notable gaps: no tools for updating or deleting accounts, organizations, or projects. Also, addons and templates are only listable, missing management operations.