Skip to main content
Glama

Server Details

Verified component catalog over remote MCP: agents pick ids and get a project that builds.

Ownership verified
Status
Healthy
Uptime
25.2% over 47 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Server Listing
BotKelp

TDQS

A4.4/5.0

Scored across 15 tools

Disambiguation5/5

Each tool has a distinct purpose: getters retrieve data, setters modify configurations, purchase creates scaffolds, verify runs builds, and report files issues. The only near-overlaps are get/set pairs (e.g., get_adminpageset vs set_adminpageset), but these are clearly differentiated by verb. No tool appears to duplicate another's function.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: get_* for reads, set_* for writes, plus purchase_scaffold, report_issue, and verify_scaffold. The naming is uniform and predictable, making it easy for an agent to infer behavior from the name alone.

Tool Count5/5

With 15 tools, the server covers a complex domain (account status, component catalog, scaffolds, site profiles, admin page sets, GitHub integration, and build verification). Each tool serves a distinct function in the workflow, and the count is within the well-scoped range for a specialized MCP server.

Completeness4/5

The surface covers the full lifecycle: purchase a scaffold, fetch it, verify it, manage profiles and admin pages, connect GitHub, and report issues. Minor gaps include no delete operations for projects, profiles, or admin page sets, and no direct update for components, but these are edge cases that agents can work around (e.g., recreate via set_*).

Available Tools

16 tools
get_account_statusGet account status
Read-onlyIdempotent
Inspect

No params. Says whether you are signed in (authenticated) and account tools work (accountToolsReady). Never returns a key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_adminpagesetGet admin page setA
Read-onlyIdempotent
Inspect

Lists this account's admin page set names (omit name), or returns one set's exact files (pass name). These are the file trees purchase_scaffold's admin_page_set param bakes into a dedicated forked repo. Requires a linked account (transport auth).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe set to fetch. Omit to list this account's set names instead.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful context beyond that: the auth prerequisite ('requires a linked account (transport auth)') and what the returned data actually represents (file trees baked into a dedicated forked repo).

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?

Two sentences, no filler, and the dual-mode behavior is front-loaded before the supporting detail about the forked repo and auth. Every clause carries information an agent needs.

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

Completeness5/5

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

For a one-parameter read tool with full schema coverage, no output schema, and annotations covering safety, the description supplies everything needed: both return shapes, the mode selector, the auth requirement, and the downstream relationship to purchase_scaffold.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter's description already says 'omit to list set names instead', so the description largely restates the schema. It adds no format, casing, or matching semantics for the name value beyond what the schema provides, making the baseline 3 correct.

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?

The description names a specific verb and resource ('Lists this account's admin page set names') and gives the exact dual behavior — list names when name is omitted, return a set's files when name is passed. It also frames the resource concretely as the file trees that purchase_scaffold bakes into a forked repo, which separates it from sibling setters like set_adminpageset.

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?

It clearly states the condition that selects each mode (omit name to list, pass name to fetch) and ties the resource to purchase_scaffold's admin_page_set param, so the agent knows where this data flows. It does not explicitly name set_adminpageset as the mutating alternative or state when not to use this tool, so it stops short of full routing guidance.

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

get_componentGet component source
Read-onlyIdempotent
Inspect

One component's source files, UNRENDERED (EJS markers, not build-ready): inspect only; use purchase_scaffold for real files. Free, 32/day, signed-in account.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentYesComponent id, or id@version, e.g. "supabase-client@2.0.0".
get_githubGet GitHub connectionA
Read-onlyIdempotent
Inspect

Shows whether this account has a GitHub repo connected, or lists files under a path in that repo. If not connected, the result includes installUrl — open it (GitHub App) to grant read access to one repo. Sign in on botkelp.com with GitHub first so the install is tied to your account.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoFolder or file in the connected repo to list. Omit for connection status.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/openWorld, so the description adds the important non-obvious behavior: an unconnected account returns an installUrl, and granting access requires the GitHub App install tied to a signed-in account. It stops short of describing pagination or listing limits.

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?

Three tight sentences, front-loaded with the core capability before the conditional remediation flow. No filler or repetition.

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?

With no output schema, the description does the necessary work by sketching the return shape (connection status vs. file list, plus installUrl when unconnected). Complete enough for correct invocation, though error or empty-repo behavior is unspecified.

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

Parameters3/5

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

Schema coverage is 100% and the single path parameter is already documented as 'Omit for connection status.' The description reinforces this dual-mode behavior but adds no syntax or format detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific dual-mode purpose: report whether a GitHub repo is connected, or list files under a path in that repo. The verb+resource is unmistakable and clearly distinct from set_github among siblings.

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?

Gives explicit mode selection (omit path for connection status; supply path to list files) and a prerequisite workflow (sign in with GitHub before installing). It does not explicitly name sibling alternatives like set_github, but the read-vs-write distinction is evident from the name pair.

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

get_helpGet help
Read-onlyIdempotent
Inspect

Free. Short usage index. Then search_components to pick ids.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_projectsGet projectsA
Read-onlyIdempotent
Inspect

Lists this account's saved scaffold projects (id, name, description, repo, components, maintain state). Use the projectid with get_scaffold to re-fetch a scaffold — no project_api_key is needed as a tool argument.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the bar is low. The description adds non-obvious context the annotations cannot: that no project_api_key argument is required, which removes a likely agent mistake.

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?

Two sentences, zero waste. The primary purpose (what is listed and what fields come back) is front-loaded, with the downstream routing note second.

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

Completeness5/5

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

With no output schema, the description compensates by enumerating the returned fields (id, name, description, repo, components, maintain state), and it covers the auth question. Nothing an agent needs to call this zero-parameter tool is missing.

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?

There are no input parameters, so the baseline is 4. The mention of 'projectid' is an output field used by a sibling tool, not a this-tool parameter, and it is described clearly enough.

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 and resource ('Lists this account's saved scaffold projects') and enumerates the returned fields, so the agent knows exactly what it retrieves. It also distinguishes itself from get_scaffold by explaining the re-fetch path, so no sibling confusion remains.

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?

The description routes the agent onward ('use the projectid with get_scaffold to re-fetch a scaffold'), giving clear follow-up context. It does not state explicit when-not-to-use conditions for this tool, but none are really needed for a zero-argument list operation.

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

get_scaffoldGet scaffold
Idempotent
Inspect

Refetches a scaffold you purchased (fresh clone command), no extra credits. Credit-flow projects need Maintain on. Same site_profile/delivery options as purchase_scaffold.

ParametersJSON Schema
NameRequiredDescriptionDefault
deliveryNo"clone" (default) or "inline".
projectidYesThe project id from a previous purchase_scaffold result. Required — your project is resolved from your authenticated account.
site_profileNofalse/omit: skip. true: attach this account's one site profile (errors if 0 or >1). A string: attach that named profile.
get_siteprofileGet site profile
Read-onlyIdempotent
Inspect

Your site profiles (privacy, terms, cookies, licence, custom_field) as JSON. list: true for names, or siteprofilename for one; field filters. Use next.arguments when a purchase reply says incomplete: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
listNoIf true, return this account's profile names instead of a profile's content.
fieldNo"all" (default), or an array from: privacy, terms, cookies, license, custom_field.
cursorNoResume token from a previous incomplete result, e.g. "doc:terms".
siteprofilenameNoThe profile to fetch. Required unless list: true.
purchase_scaffoldPurchase scaffoldInspect

Buys a CI-green starter repo for component ids (credits via your signed-in account, or x402). Returns a git clone command and projectid. Red builds are refused and not charged. delivery "inline" returns files instead (more tokens).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoSaved project metadata.
deliveryNo"clone" (default) or "inline".
maintainNoRenewable repeat access (default true).
componentsYesComponent ids, e.g. ["nextjs-base","tailwind"].
site_profileNotrue or a profile name: bake legal pages in.
admin_page_setNoExtra file-set name.
template_filesNoExtra files: true, or [{name}|{source,dest}].
report_issueReport an issueInspect

Report a catalog/code bug or request a component (files an issue on botkelp/components). Signed-in account, 10/day. No secrets.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectidNoOptional project id this report relates to.
descriptionYesWhat is wrong or what you want. Include enough detail to reproduce. No secrets.
search_componentsSearch components
Read-onlyIdempotent
Inspect

Free. Compact catalog TSV: id, provides, requires, conflictsWith. Omit args for all.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoWords to match, e.g. "auth stripe".
detailNoAdd short descriptions.
providesNoRequired capability tags.
set_adminpagesetSet admin page setA
DestructiveIdempotent
Inspect

Creates or fully replaces one named admin page set for this account — real file source (React/Next.js), not text config. purchase_scaffold's admin_page_set param bakes a chosen set into a brand-new, dedicated repo. An account may keep more than one named set.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for this set, e.g. "default" or "acme-admin".
filesYesThe full set of files, e.g. [{ path: "app/admin/page.tsx", content: "..." }].

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true; the description reinforces this by saying it 'fully replaces' a named set, which tells the agent existing content is overwritten. It adds the file-source detail but doesn't state permission requirements or what happens to files omitted from the new set.

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

Conciseness4/5

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

Front-loads the verb and resource, then adds two supporting sentences that earn their place by disambiguating from purchase_scaffold and clarifying the file-based nature. Slightly more context than strictly necessary, but nothing is wasted.

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?

With only two parameters, full schema coverage, and annotations carrying the safety profile, the description is nearly complete. It could say more about the replace semantics for omitted files and whether a prior set must exist, but nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both 'name' and 'files' (with example paths) are already documented in the schema. The description adds only the notion of 'one named set' and the multiple-sets-per-account note, which is contextual rather than syntactic. Baseline 3 applies when the schema does the heavy lifting.

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 and resource ('Creates or fully replaces one named admin page set for this account') and distinguishes itself from the sibling get_adminpageset by scope. The added 'real file source (React/Next.js), not text config' clarifies what the resource actually is, which an agent could not infer from the name alone.

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?

Gives clear context for when this tool is relevant by contrasting it with purchase_scaffold (which bakes a set into a new repo), and notes an account may hold multiple named sets. It stops short of an explicit when-to-use/when-not statement or naming a preferred alternative for the replace case.

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

set_githubConnect or disconnect GitHubB
DestructiveIdempotent
Inspect

Returns a GitHub App install URL so the user can grant BotKelp read access to one of their repos. Open the URL, pick a single repo, approve. Then purchase_scaffold template_files: [{ source: "app/legal/" }] copies those pages into the clone. disconnect: true drops the connection. Prefer signing in with GitHub on botkelp.com first.

ParametersJSON Schema
NameRequiredDescriptionDefault
disconnectNotrue: drop the connected repo. Omit to mint a fresh install URL.

TDQS

B3.1/5.0
Behavior2/5

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

Annotations declare destructiveHint=true and idempotentHint=true, but the description doesn't explain the destructive nature (dropping the repo connection), confirm idempotency, or clarify openWorld implications. It mentions 'disconnect: true drops the connection' which aligns with destructiveness, but lacks deeper context like permissions, reversibility, or rate limits.

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

Conciseness3/5

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

Reasonably concise but includes extraneous workflow details (purchase_scaffold template_files) that confuse the tool's own scope. Front-loads the core action, but the second sentence about purchase_scaffold is tangential.

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

Completeness3/5

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

The tool is simple (1 param, no output schema), so the description covers the basic usage. However, it misses important behavioral aspects like authentication requirements, error conditions, or what happens on repeat calls, and the integration with siblings is only partially explained.

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

Parameters3/5

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

The single parameter 'disconnect' is fully described in the schema (coverage 100%). The description adds minimal extra meaning ('drops the connection'), which is consistent with the schema. Baseline 3 for high schema coverage.

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

Purpose4/5

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

Clearly states it returns a GitHub App install URL for granting repo access and can disconnect. The purpose is understandable, though it's somewhat muddled by mixing in a workflow with purchase_scaffold. Not fully explicit about what the tool itself does versus surrounding steps.

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

Usage Guidelines3/5

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

Provides a sequence: open URL, pick repo, approve, then run purchase_scaffold. Suggests signing in with GitHub first. However, it doesn't clearly distinguish when to use this tool versus get_github, and the guidance is tangled with another tool's invocation.

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

set_projectsSet projects
Destructive
Inspect

Turn Maintain on/off for a project and/or rotate its project key. Off keeps existing clones; it stops future get_scaffold access.

ParametersJSON Schema
NameRequiredDescriptionDefault
rotateNoIf true, mints a new project key and invalidates the old one.
maintainNo
projectidYesThe project id to change (from get_projects). Required — scoped to your authenticated account.
set_siteprofileSet site profileA
DestructiveIdempotent
Inspect

Creates or updates one named site profile for this account. Fields omitted from field keep their current saved value (or blank, if the profile is new); pass only what changed. custom_field entries are merged key-by-key. An account may keep more than one named profile (e.g. one per brand/site).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYesFields to change. Omitted fields keep their current value.
siteprofilenameYesName for this profile, e.g. "default" or "acme-co".

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description adds merge semantics beyond those hints: omitted fields are preserved (or blank for a new profile) and custom_field is merged key-by-key, which tells the agent how partial updates behave.

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?

Three sentences, front-loaded with the upsert action, then the update semantics, then the multi-profile context. No filler.

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?

With no output schema, a nested `field` object, and a destructive annotation, the description supplies the needed merge/partial-update behavior and notes that multiple named profiles can coexist. It leaves the destructive aspect implicit, but the practical calling guidance is complete.

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, but the description adds real meaning: the partial-update contract for `field` and the key-by-key merge for custom_field go beyond the schema's generic 'omitted fields keep their current value' note.

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 pair (creates or updates) plus the resource (one named site profile) and scopes it to this account. An agent can distinguish it from the sibling get_siteprofile at a glance.

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?

Gives clear call guidance: pass only what changed, omitted fields retain saved values, and custom_field entries merge key-by-key. It does not explicitly say when to prefer this over get_siteprofile, but the read/write split is obvious from the verb.

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

verify_scaffoldVerify scaffoldInspect

Remote npm install && npm run build of your edited files (send every file). Call with files -> WAIT + jobId; call again with jobId -> OK or FAIL with the error tail. Needs a purchased projectid.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoThe full project to verify — a scaffold's files with your edits applied. Omit when polling with jobId.
jobIdNoPoll a previously started verification. Omit on the first call (pass files), pass the returned jobId on subsequent calls.
projectidYesThe project id from a previous purchase_scaffold result — must be owned by this account. Required.
envVariablesNoEnv var names to write placeholder values for before building (typically get_component's `envVariables` output) — needed for components that read process.env at build time (e.g. a Supabase client).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedget_scaffold1 field changed
      • changedInput schema / properties / delivery / description
        Previous value: -"\"clone\" (default): git clone command. \"inline\": files in the reply. No git needed. More tokens."New value: +"\"clone\" (default) or \"inline\"."
    • Changedpurchase_scaffold10 fields changed
      • changedInput schema / properties / admin_page_set / description
        Previous value: -"Optional extra file-tree name (same overlay as template_files). Prefer site_profile / template_files."New value: +"Extra file-set name."
      • changedInput schema / properties / components / description
        Previous value: -"Component ids to include, e.g. [\"nextjs-base\", \"tailwind\", \"supabase-client\"]."New value: +"Component ids, e.g. [\"nextjs-base\",\"tailwind\"]."
      • changedInput schema / properties / delivery / description
        Previous value: -"\"clone\" (default): git clone command. \"inline\": files in the reply. No git needed. More tokens."New value: +"\"clone\" (default) or \"inline\"."
      • changedInput schema / properties / maintain / description
        Previous value: -"Keep repeat access to this repo renewable. Defaults to true. Ignored for x402 (accountless) purchases."New value: +"Renewable repeat access (default true)."
      • changedInput schema / properties / project / description
        Previous value: -"Project metadata to save alongside the purchased scaffold."New value: +"Saved project metadata."
      • changedInput schema / properties / project / properties / description / description
        Previous value: -"Free-text description saved with the project."New value: +"Notes."
      • changedInput schema / properties / project / properties / name / description
        Previous value: -"Your label for this project, shown in get_projects and in the purchase reply. Shared template repos keep a generic package name, so this is not written into package.json."New value: +"Your label."
      • changedInput schema / properties / site_profile / description
        Previous value: -"false/omit: skip. true: bake this account's one site profile into the clone (errors if 0 or >1). A string: bake that named profile (privacy, terms, cookies, …)."New value: +"true or a profile name: bake legal pages in."
      • changedInput schema / properties / template_files / anyOf
        Previous value: -[
        -  {
        -    "const": true,
        -    "type": "boolean"
        -  },
        -  {
        -    "items": {
        -      "properties": {
        -        "dest": {
        -          "description": "Destination in the generated project. Defaults to the file's stored path / source path.",
        -          "type": "string"
        -        },
        -        "name": {
        -          "description": "Saved dashboard template file name.",
        -          "type": "string"
        -        },
        -        "source": {
        -          "description": "Path in the connected GitHub repo, e.g. \"legal/gdpr.md\" or \"app/rules/page.tsx\".",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "const": true,
        +    "type": "boolean"
        +  },
        +  {
        +    "items": {
        +      "properties": {
        +        "dest": {
        +          "description": "Destination path.",
        +          "type": "string"
        +        },
        +        "name": {
        +          "description": "Saved file name.",
        +          "type": "string"
        +        },
        +        "source": {
        +          "description": "Path in connected repo.",
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / template_files / description
        Previous value: -"true: every saved dashboard template file. Or a list of {name} and/or {source, dest} from the connected GitHub repo."New value: +"Extra files: true, or [{name}|{source,dest}]."
    • Addedsearch_components
  2. 1 tool update
    • Changedpurchase_scaffold1 field changed
      • changedInput schema / properties / project / properties / name / description
        Previous value: -"Name used for the project and in package.json."New value: +"Your label for this project, shown in get_projects and in the purchase reply. Shared template repos keep a generic package name, so this is not written into package.json."
  3. 14 tool updates
    • Addedget_account_status
    • Changedget_adminpageset2 fields changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\"). Required.",
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "account_api_key"
        -]
    • Changedget_component2 fields changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\"). Required.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "account_api_key",
        -  "component"
        -]New value: +[
        +  "component"
        +]
    • Changedget_github2 fields changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\").",
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "account_api_key"
        -]
    • Changedget_projects2 fields changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\"). Required.",
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "account_api_key"
        -]
    • Changedget_scaffold3 fields changed
      • removedInput schema / properties / project_api_key
        Removed value: -{
        -  "description": "The project API key returned by purchase_scaffold (starts with \"sk_\"). Required.",
        -  "type": "string"
        -}
      • changedInput schema / properties / projectid / description
        Previous value: -"The project id from a previous purchase_scaffold result."New value: +"The project id from a previous purchase_scaffold result. Required — your project is resolved from your authenticated account."
      • changedInput schema / required
        Previous value: -[
        -  "project_api_key"
        -]New value: +[
        +  "projectid"
        +]
    • Changedget_siteprofile2 fields changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\"). Required.",
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "account_api_key"
        -]
    • Changedpurchase_scaffold1 field changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\"). Omit to pay via x402 instead.",
        -  "type": "string"
        -}
    • Changedreport_issue2 fields changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\"). Required.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "account_api_key",
        -  "description"
        -]New value: +[
        +  "description"
        +]
    • Changedset_adminpageset2 fields changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\"). Required.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "account_api_key",
        -  "name",
        -  "files"
        -]New value: +[
        +  "name",
        +  "files"
        +]
    • Changedset_github2 fields changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\").",
        -  "type": "string"
        -}
      • removedInput schema / required
        Removed value: -[
        -  "account_api_key"
        -]
    • Changedset_projects5 fields changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\"). Required.",
        -  "type": "string"
        -}
      • removedInput schema / properties / project_api_key
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / projectid / description
        Added value: +"The project id to change (from get_projects). Required — scoped to your authenticated account."
      • changedInput schema / properties / rotate / description
        Previous value: -"If true, mints a new project_api_key and invalidates the old one."New value: +"If true, mints a new project key and invalidates the old one."
      • changedInput schema / required
        Previous value: -[
        -  "account_api_key"
        -]New value: +[
        +  "projectid"
        +]
    • Changedset_siteprofile2 fields changed
      • removedInput schema / properties / account_api_key
        Removed value: -{
        -  "description": "BotKelp account key (starts with \"bk_live_\"). Required.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "account_api_key",
        -  "siteprofilename",
        -  "field"
        -]New value: +[
        +  "siteprofilename",
        +  "field"
        +]
    • Addedverify_scaffold
  4. 3 tool updates
    • Addedget_github
    • Changedpurchase_scaffold3 fields changed
      • changedInput schema / properties / admin_page_set / description
        Previous value: -"Name of this account's admin page set (see set_adminpageset) to bake into a dedicated forked repo. Omit for the ordinary shared repo."New value: +"Optional extra file-tree name (same overlay as template_files). Prefer site_profile / template_files."
      • changedInput schema / properties / site_profile / description
        Previous value: -"false/omit: skip. true: attach this account's one site profile (errors if 0 or >1). A string: attach that named profile."New value: +"false/omit: skip. true: bake this account's one site profile into the clone (errors if 0 or >1). A string: bake that named profile (privacy, terms, cookies, …)."
      • addedInput schema / properties / template_files
        Added value: +{
        +  "anyOf": [
        +    {
        +      "const": true,
        +      "type": "boolean"
        +    },
        +    {
        +      "items": {
        +        "properties": {
        +          "dest": {
        +            "description": "Destination in the generated project. Defaults to the file's stored path / source path.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "description": "Saved dashboard template file name.",
        +            "type": "string"
        +          },
        +          "source": {
        +            "description": "Path in the connected GitHub repo, e.g. \"legal/gdpr.md\" or \"app/rules/page.tsx\".",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  ],
        +  "description": "true: every saved dashboard template file. Or a list of {name} and/or {source, dest} from the connected GitHub repo."
        +}
    • Addedset_github
  5. 11 tool updates
    • Changedget_adminpageset1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_component1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_help1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_projects1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_scaffold1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_siteprofile1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpurchase_scaffold1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreport_issue1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedset_adminpageset1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedset_projects1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedset_siteprofile1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  6. 2 tool updates
    • Changedget_scaffold2 fields changed
      • addedInput schema / properties / site_profile
        Added value: +{
        +  "description": "false/omit: skip. true: attach this account's one site profile (errors if 0 or >1). A string: attach that named profile.",
        +  "type": [
        +    "boolean",
        +    "string"
        +  ]
        +}
      • removedInput schema / properties / siteprofile
        Removed value: -{
        -  "type": [
        -    "boolean",
        -    "string"
        -  ]
        -}
    • Removedverify_scaffold
  7. 4 tool updates
    • Addedget_adminpageset
    • Changedget_scaffold1 field changed
      • addedInput schema / properties / delivery
        Added value: +{
        +  "description": "\"clone\" (default): git clone command. \"inline\": files in the reply. No git needed. More tokens.",
        +  "enum": [
        +    "clone",
        +    "inline"
        +  ],
        +  "type": "string"
        +}
    • Changedpurchase_scaffold2 fields changed
      • addedInput schema / properties / admin_page_set
        Added value: +{
        +  "description": "Name of this account's admin page set (see set_adminpageset) to bake into a dedicated forked repo. Omit for the ordinary shared repo.",
        +  "type": "string"
        +}
      • addedInput schema / properties / delivery
        Added value: +{
        +  "description": "\"clone\" (default): git clone command. \"inline\": files in the reply. No git needed. More tokens.",
        +  "enum": [
        +    "clone",
        +    "inline"
        +  ],
        +  "type": "string"
        +}
    • Addedset_adminpageset
  8. 22 tool updates
    • Removedapply_changes_to_repo
    • Removedbuy_scaffold_template
    • Removedcheck_component_updates
    • Removedcreate_project
    • Removedgenerate_scaffold
    • Removedget_admin_config
    • Addedget_component
    • Addedget_help
    • Addedget_projects
    • Addedget_scaffold
    • Removedget_scaffold_template
    • Removedget_site_profile
    • Addedget_siteprofile
    • Removedlist_projects
    • Addedpurchase_scaffold
    • Changedreport_issue13 fields changed
      • addedInput schema / properties / account_api_key
        Added value: +{
        +  "description": "BotKelp account key (starts with \"bk_live_\"). Required.",
        +  "type": "string"
        +}
      • removedInput schema / properties / actual
        Removed value: -{
        -  "description": "What actually happened (compiler error, missing file, etc.).",
        -  "type": "string"
        -}
      • removedInput schema / properties / body
        Removed value: -{
        -  "description": "What is wrong or what you want. Include enough detail to reproduce. No secrets.",
        -  "type": "string"
        -}
      • removedInput schema / properties / componentId
        Removed value: -{
        -  "description": "Component id this is about, e.g. \"nextjs-base\".",
        -  "type": "string"
        -}
      • removedInput schema / properties / componentVersion
        Removed value: -{
        -  "description": "Component version you generated with, if known.",
        -  "type": "string"
        -}
      • addedInput schema / properties / description
        Added value: +{
        +  "description": "What is wrong or what you want. Include enough detail to reproduce. No secrets.",
        +  "type": "string"
        +}
      • removedInput schema / properties / expected
        Removed value: -{
        -  "description": "What you expected to happen.",
        -  "type": "string"
        -}
      • removedInput schema / properties / kind
        Removed value: -{
        -  "description": "bug (default), request (new component/capability), or docs.",
        -  "enum": [
        -    "bug",
        -    "request",
        -    "docs"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / projectid
        Added value: +{
        +  "description": "Optional project id this report relates to.",
        +  "type": "string"
        +}
      • removedInput schema / properties / reporter
        Removed value: -{
        -  "description": "Optional agent or user label. No secrets.",
        -  "type": "string"
        -}
      • removedInput schema / properties / requestId
        Removed value: -{
        -  "description": "The requestId returned by generate_scaffold / get_scaffold_template / buy_scaffold_template / verify_scaffold.",
        -  "type": "string"
        -}
      • removedInput schema / properties / title
        Removed value: -{
        -  "description": "Short issue title, e.g. \"nextjs-base layout missing html lang\".",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "requestId",
        -  "title",
        -  "body"
        -]New value: +[
        +  "account_api_key",
        +  "description"
        +]
    • Removedresolve_components
    • Removedsave_admin_config
    • Removedsearch_components
    • Addedset_projects
    • Addedset_siteprofile
    • Changedverify_scaffold5 fields changed
      • addedInput schema / properties / account_api_key
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / envVariables / description
        Previous value: -"Env var names to write placeholder values for before building (typically generate_scaffold's `envVariables` output) — needed for components that read process.env at build time (e.g. a Supabase client)."New value: +"Env var names to write placeholder values for before building (typically get_component's `envVariables` output) — needed for components that read process.env at build time (e.g. a Supabase client)."
      • removedInput schema / properties / files / description
        Removed value: -"The full project to verify — generate_scaffold's `files` output with your edits applied. Provide this to start a verification."
      • removedInput schema / properties / jobId
        Removed value: -{
        -  "description": "A job id from a previous WAIT response. Provide this to check a verification already started.",
        -  "type": "string"
        -}
      • addedInput schema / properties / projectid
        Added value: +{
        +  "type": "string"
        +}
  9. 2 tool updates
    • Addedget_admin_config
    • Addedsave_admin_config
  10. 3 tool updates
    • Changedgenerate_scaffold1 field changed
      • addedInput schema / properties / get_site_profile
        Added value: +{
        +  "description": "If true, attach dashboard legal documents (privacy/terms/…) for this API key in the same result. They are not added to the generated file tree. Requires apiKey. If incomplete, call get_site_profile with next.arguments.cursor.",
        +  "type": "boolean"
        +}
    • Changedget_scaffold_template1 field changed
      • addedInput schema / properties / get_site_profile
        Added value: +{
        +  "description": "If true, attach dashboard legal documents for this key in the same result. They are not written into the template repo. If incomplete, call get_site_profile with next.arguments.cursor.",
        +  "type": "boolean"
        +}
    • Addedget_site_profile
  11. 11 tool updates
    • Changedapply_changes_to_repo2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / files / items / additionalProperties
        Removed value: -false
    • Changedbuy_scaffold_template1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcheck_component_updates2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / componentPins / items / additionalProperties
        Removed value: -false
    • Changedcreate_project1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedgenerate_scaffold3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / components / items / anyOf
        Previous 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"
        -  }
        -]New value: +[
        +  {
        +    "description": "Component id, or id@version (e.g. \"supabase-client@2.0.0\").",
        +    "type": "string"
        +  },
        +  {
        +    "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 / stack / additionalProperties
        Removed value: -false
    • Changedget_scaffold_template1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedlist_projects1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedreport_issue1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedresolve_components3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / components / items / anyOf
        Previous 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"
        -  }
        -]New value: +[
        +  {
        +    "description": "Component id, or id@version (e.g. \"supabase-client@2.0.0\").",
        +    "type": "string"
        +  },
        +  {
        +    "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 / stack / additionalProperties
        Removed value: -false
    • Changedsearch_components1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedverify_scaffold2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / files / items / additionalProperties
        Removed value: -false
  12. 2 tool updates
    • Changedgenerate_scaffold5 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"
        +}
    • Addedresolve_components
  13. 1 tool update
    • Addedreport_issue
  14. 9 tool updates
    • First observedapply_changes_to_repo
    • First observedbuy_scaffold_template
    • First observedcheck_component_updates
    • First observedcreate_project
    • First observedgenerate_scaffold
    • First observedget_scaffold_template
    • First observedlist_projects
    • First observedsearch_components
    • First observedverify_scaffold

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for verified reuse infrastructure that lets agents query before work to obtain safe, permissioned results (exact component, source-free method, or abstention) with receiver-owned verification and non-disclosure guarantees.
    2
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Coordination protocol for parallel coding agents, built above Git. The MCP server exposes the full 17-tool lifecycle over stdio: register agents, publish intents with semantic scopes and declared operations, claim work, check for conflicts before code is written, publish ChangeSets, run trusted named verification checks, and record accepted work. Deterministic rules raise findings when two agents'
    18
    541
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Server-enforced workflow discipline for AI agents. An MCP server providing persistent work items, dependency graphs, quality gates, and actor attribution. Schemas define what agents must produce — the server blocks the call if they don't. Works with any MCP-compatible client.
    209
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources