Skip to main content
Glama

Generate scaffold

generate_scaffold

Generate a project scaffold from catalog component ids. Pass stack (nextjs/react/…) so the registry can refuse incompatible pins — it never silently substitutes another version. Pin with "id@version" or { id, version }. Omit version to auto-select the best compatible release. Incompatible exact pins return COMPONENT_VERSION_INCOMPATIBLE plus alternatives and no files unless allow_incompatible is true. Component requires are resolved automatically. Omit apiKey for Local Mode. A successful result includes a requestId — pass it to report_issue if the output is wrong.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
stackNoDetected project stack. When set, compatibility is a hard registry rule. Omit to receive latest (unconstrained).
apiKeyNoBotKelp API key (starts with "bk_live_"). Omit for Local Mode — free, unauthenticated, files-only generation.
componentsYesComponent ids to include, e.g. ["nextjs-base", "tailwind", "supabase-client@2.0.0"].
projectNameNoName used in package.json and templates.
allow_incompatibleNoExpert override. Returns the requested pin with a warning instead of blocking.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed5 schema fields changed
    • addedInput schema / properties / allow_incompatible
      Added value: +{
      +  "description": "Expert override. Returns the requested pin with a warning instead of blocking.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / components / description
      Previous value: -"Component ids to include, e.g. [\"nextjs-base\", \"tailwind\", \"supabase-client\"]."New value: +"Component ids to include, e.g. [\"nextjs-base\", \"tailwind\", \"supabase-client@2.0.0\"]."
    • addedInput schema / properties / components / items / anyOf
      Added value: +[
      +  {
      +    "description": "Component id, or id@version (e.g. \"supabase-client@2.0.0\").",
      +    "type": "string"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "allow_incompatible": {
      +        "description": "If true, return an incompatible pin with a warning instead of blocking.",
      +        "type": "boolean"
      +      },
      +      "id": {
      +        "description": "Catalog component id.",
      +        "type": "string"
      +      },
      +      "version": {
      +        "description": "Exact pin. Omit to auto-select the best compatible release.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / components / items / type
      Removed value: -"string"
    • addedInput schema / properties / stack
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Detected project stack. When set, compatibility is a hard registry rule. Omit to receive latest (unconstrained).",
      +  "properties": {
      +    "angular": {
      +      "type": "string"
      +    },
      +    "django": {
      +      "type": "string"
      +    },
      +    "dotnet": {
      +      "type": "string"
      +    },
      +    "laravel": {
      +      "type": "string"
      +    },
      +    "nextjs": {
      +      "type": "string"
      +    },
      +    "node": {
      +      "type": "string"
      +    },
      +    "php": {
      +      "type": "string"
      +    },
      +    "python": {
      +      "type": "string"
      +    },
      +    "react": {
      +      "type": "string"
      +    },
      +    "supabase_ssr": {
      +      "type": "string"
      +    },
      +    "svelte": {
      +      "type": "string"
      +    },
      +    "typescript": {
      +      "type": "string"
      +    },
      +    "vue": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

No annotations exist, so the description carries the full behavioral burden and does so thoroughly. It discloses that incompatible pins return COMPONENT_VERSION_INCOMPATIBLE plus alternatives without creating files, that version substitution is never silent, that `requires` are auto-resolved, and that successful results include a requestId for issue reporting. This is rich, non-obvious behavioral detail well beyond a simple 'Generate scaffold' statement.

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

Conciseness5/5

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

The description is dense but every sentence earns its place. It starts with the core purpose, then flows logically through stack behavior, pin syntax, incompatibility error handling, requires resolution, Local Mode, and result handling. No filler or repetition relative to the schema.

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

Completeness4/5

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

Given the complexity (5 params, nested stack object, no output schema), the description covers most critical aspects: purpose, parameter semantics, error behavior, auth mode, and return hint via requestId. The main gap is that it does not clarify whether the scaffold is returned as a payload or written to the filesystem, and how that relates to sibling apply_changes_to_repo.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds genuine value by explaining the pin syntax ('id@version' or `{ id, version }`), the version auto-selection behavior, the purpose of passing `stack` (registry compatibility enforcement), and the Local Mode meaning of omitting apiKey. It does not enrich projectName, but the schema already describes it sufficiently.

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

Purpose5/5

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

States a specific verb ('Generate'), resource ('project scaffold'), and source ('catalog component ids'), making its core function unambiguous. The use of 'stack' for compatibility and the reference to report_issue further differentiate it from sibling tools like resolve_components or apply_changes_to_repo.

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

Usage Guidelines4/5

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

Provides clear context on when to use this tool: it takes component ids, enforces stack compatibility as a hard registry rule, auto-resolves `requires`, and supports Local Mode by omitting apiKey. It also hints at the alternative action of reporting issues via report_issue, but does not explicitly list exclusions or when to prefer sibling tools like resolve_components or verify_scaffold.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.3/5.0
Disambiguation5/5

Each tool targets a distinct workflow step: registry search, update checking, three scaffold delivery modes, build verification, project registration, project listing, repo changes, and issue reporting. The apparent overlap between generate_scaffold, get_scaffold_template, and buy_scaffold_template is resolved by their clearly different delivery and payment models.

Naming Consistency5/5

All tool names follow a consistent imperative verb + noun snake_case pattern, such as search_components, create_project, verify_scaffold, and report_issue. The verbs are specific and predictable, making the set easy to navigate.

Tool Count5/5

Ten tools is well-scoped for a server handling component discovery, scaffold generation, build verification, project management, and feedback. Each tool covers a meaningful, non-redundant function without bloating the surface.

Completeness4/5

The core lifecycle is well covered: discover components, check for updates, generate or purchase scaffolds, verify builds, apply changes to a repository, and report issues. Minor gaps exist, such as no tool to delete or update a registered project, but these do not block the primary workflows.

Resources