Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,556Letters: 14Defects: 1,331counted just now
teppi

Server definition

Hash
sha256:d21705358f231e4c01e71c9f8eef74accd75260a52e422e806b84b3aa0d91bd7
What it is
What a remote MCP server returned when asked what it offers: 15 tools

The blob, as servednamed by its sha256

{ "instructions": "Call get_help first — it lists every tool, every catalog component, and available versions, with no API key required. You never pass any API key as a tool argument: the server authenticates you once via MCP OAuth 2.1 at the transport and injects your linked BotKelp account key on your behalf. Call get_account_status to check whether your key is linked. If generated or catalog code is wrong, outdated, fails to build, has a security issue, or you want a new component, call report_issue.", "tools": [ { "description": "Reports whether your authenticated account has a BotKelp account_api_key linked (yes/no) and when it was last linked/rotated. Never returns the key itself. Use this to check whether key-gated tools will work before calling them. Takes no parameters — your identity comes from the MCP transport, not the call.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "get_account_status", "outputSchema": null }, { "description": "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 account_api_key.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "name": { "description": "The set to fetch. Omit to list this account's set names instead.", "type": "string" } }, "type": "object" }, "name": "get_adminpageset", "outputSchema": null }, { "description": "Returns the exact, unrendered source files for one catalog component — the same files a purchased scaffold would include for it. Use this to inspect or compare a component before buying a scaffold. Free, but rate-limited to 32 calls/day per account. Requires a registered account key (no credits are spent). IMPORTANT: files contain raw EJS template markers (e.g. <%= projectName %>, <% ... %>) and are NOT build-ready. Do not copy get_component output directly into a project. Use purchase_scaffold or generate_scaffold for rendered, build-ready files.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "component": { "description": "Component id, or id@version, e.g. \"[email protected]\".", "type": "string" } }, "required": [ "component" ], "type": "object" }, "name": "get_component", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "path": { "description": "Folder or file in the connected repo to list. Omit for connection status.", "type": "string" } }, "type": "object" }, "name": "get_github", "outputSchema": null }, { "description": "Free, no API key. Usage + full component catalog as TSV (id, name, version, description, provides, requires, conflictsWith). Call this first. Prefer resource botkelp://catalog if your client supports it.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "get_help", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "get_projects", "outputSchema": null }, { "description": "Re-fetches a scaffold you already purchased via purchase_scaffold: a fresh clone credential and the current component versions, at no additional credit cost. Identify the project with projectid (resolved from your authenticated account). For a credit-flow project, this always requires an active Maintain subscription on it (see set_projects) — repos are shared by component combination, so this is always a repeat hand-off. An x402 (accountless) project has no Maintain gate. Pass site_profile the same way as purchase_scaffold to attach a named profile's documents in the same result. delivery: \"clone\" (default) returns a git clone command; \"inline\" returns the files in the reply instead, for callers that can't run git — costs more tokens.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "delivery": { "description": "\"clone\" (default): git clone command. \"inline\": files in the reply. No git needed. More tokens.", "enum": [ "clone", "inline" ], "type": "string" }, "projectid": { "description": "The project id from a previous purchase_scaffold result. Required — your project is resolved from your authenticated account.", "type": "string" }, "site_profile": { "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" ] } }, "required": [ "projectid" ], "type": "object" }, "name": "get_scaffold", "outputSchema": null }, { "description": "Returns one or all of this account's named site profiles (privacy, terms, cookies, licence, custom_field) as JSON bodies + destination paths — not as files in a template repo. Pass list: true to see profile names, or siteprofilename to fetch one. field filters to specific categories (default: all). If the previous purchase_scaffold/get_scaffold result set incomplete: true, call this with next.arguments. There is no second unsolicited reply. Requires account_api_key.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "cursor": { "description": "Resume token from a previous incomplete result, e.g. \"doc:terms\".", "type": "string" }, "field": { "anyOf": [ { "const": "all", "type": "string" }, { "items": { "enum": [ "privacy", "terms", "cookies", "license", "custom_field" ], "type": "string" }, "type": "array" } ], "description": "\"all\" (default), or an array from: privacy, terms, cookies, license, custom_field." }, "list": { "description": "If true, return this account's profile names instead of a profile's content.", "type": "boolean" }, "siteprofilename": { "description": "The profile to fetch. Required unless list: true.", "type": "string" } }, "type": "object" }, "name": "get_siteprofile", "outputSchema": null }, { "description": "Requests a build for the given component ids, backed by a private GitHub repo BotKelp owns and manages itself under its own org — never your account. Returns the repo's location, a short-lived single-repo-scoped clone credential, and a persistent projectid for later use with get_scaffold/get_projects/set_projects. Repeat requests for the same component combination reuse the same repo at no extra GitHub-side cost. A failed build (red ci.yml) is never charged. Payment: provide account_api_key to pay with account credits (requires sufficient balance), or omit it entirely to pay per-call in USDC via the x402 protocol (attach payment via the MCP call's _meta[\"x402/payment\"] — no signup, no tool argument for this). maintain (default true, credit flow only) keeps this project's repeat access renewable — see ADR 0025 and set_projects. Pass site_profile: true (only your account's single profile) or a profile name to attach that named profile's documents in the same result; if incomplete, call get_siteprofile with next.arguments — there is no second unsolicited reply. delivery: \"clone\" (default) returns a git clone command; \"inline\" returns the files in the reply instead, for callers that can't run git — costs more tokens, use only when a shell isn't available. Extra pages land IN the clone (unique personal bk-* repo; shared tpl stays generic): site_profile true or a name bakes dashboard legal pages (privacy/terms/cookies) as Next.js routes; template_files true (all saved files) or [{name} | {source, dest}] pulls dashboard files or files from the connected GitHub repo.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "admin_page_set": { "description": "Optional extra file-tree name (same overlay as template_files). Prefer site_profile / template_files.", "type": "string" }, "components": { "description": "Component ids to include, e.g. [\"nextjs-base\", \"tailwind\", \"supabase-client\"].", "items": { "type": "string" }, "minItems": 1, "type": "array" }, "delivery": { "description": "\"clone\" (default): git clone command. \"inline\": files in the reply. No git needed. More tokens.", "enum": [ "clone", "inline" ], "type": "string" }, "maintain": { "description": "Keep repeat access to this repo renewable. Defaults to true. Ignored for x402 (accountless) purchases.", "type": "boolean" }, "project": { "description": "Project metadata to save alongside the purchased scaffold.", "properties": { "description": { "description": "Free-text description saved with the project.", "type": "string" }, "name": { "description": "Name used for the project and in package.json.", "type": "string" } }, "type": "object" }, "site_profile": { "description": "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, …).", "type": [ "boolean", "string" ] }, "template_files": { "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." } }, "required": [ "components" ], "type": "object" }, "name": "purchase_scaffold", "outputSchema": null }, { "description": "File a GitHub issue on https://github.com/botkelp/components/issues about generated or catalog code, or request a new component/docs change. Welcome — we want agents to report problems instead of silently papering over them. Requires account_api_key (spam guard), rate-limited to 10 calls/day per account. projectid is optional context. Never include API keys or secrets in description.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "description": { "description": "What is wrong or what you want. Include enough detail to reproduce. No secrets.", "type": "string" }, "projectid": { "description": "Optional project id this report relates to.", "type": "string" } }, "required": [ "description" ], "type": "object" }, "name": "report_issue", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "files": { "description": "The full set of files, e.g. [{ path: \"app/admin/page.tsx\", content: \"...\" }].", "items": { "properties": { "content": { "type": "string" }, "path": { "description": "Relative file path, e.g. \"app/layout.tsx\".", "type": "string" } }, "required": [ "path", "content" ], "type": "object" }, "minItems": 1, "type": "array" }, "name": { "description": "Name for this set, e.g. \"default\" or \"acme-admin\".", "type": "string" } }, "required": [ "name", "files" ], "type": "object" }, "name": "set_adminpageset", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "disconnect": { "description": "true: drop the connected repo. Omit to mint a fresh install URL.", "type": "boolean" } }, "type": "object" }, "name": "set_github", "outputSchema": null }, { "description": "Turns Maintain on/off for one of this account's projects and/or rotates its project key. Identify the project with projectid (scoped to your authenticated account). Turning maintain off does not delete or revoke anything already cloned; it stops future repeat get_scaffold access after the current Maintain billing period.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "maintain": { "type": "boolean" }, "projectid": { "description": "The project id to change (from get_projects). Required — scoped to your authenticated account.", "type": "string" }, "rotate": { "description": "If true, mints a new project key and invalidates the old one.", "type": "boolean" } }, "required": [ "projectid" ], "type": "object" }, "name": "set_projects", "outputSchema": null }, { "description": "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).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "field": { "description": "Fields to change. Omitted fields keep their current value.", "properties": { "cookies": { "type": "string" }, "custom_field": { "additionalProperties": { "type": "string" }, "propertyNames": { "type": "string" }, "type": "object" }, "license": { "type": "string" }, "privacy": { "type": "string" }, "terms": { "type": "string" } }, "type": "object" }, "siteprofilename": { "description": "Name for this profile, e.g. \"default\" or \"acme-co\".", "type": "string" } }, "required": [ "siteprofilename", "field" ], "type": "object" }, "name": "set_siteprofile", "outputSchema": null }, { "description": "Runs a real `npm install && npm run build` against the given files on an isolated GitHub Actions runner and reports whether the project builds. Two-call protocol: pass files to start (returns WAIT + a jobId), then call again with that jobId to get the verdict (OK or FAIL). A full install and build usually takes one to two minutes. Requires the projectid of a project this account purchased via purchase_scaffold — attributes every build to a real customer. Use this after editing a get_scaffold result to check the edited project still builds, before handing it to the user. Send the full project — every file, not just the ones you changed. On FAIL, the response includes the tail of the failing step output (compiler/install errors). Fix the files and retry.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "envVariables": { "description": "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).", "items": { "type": "string" }, "type": "array" }, "files": { "description": "The full project to verify — a scaffold's files with your edits applied. Omit when polling with jobId.", "items": { "properties": { "content": { "type": "string" }, "path": { "description": "Relative file path, e.g. \"app/layout.tsx\".", "type": "string" } }, "required": [ "path", "content" ], "type": "object" }, "minItems": 1, "type": "array" }, "jobId": { "description": "Poll a previously started verification. Omit on the first call (pass files), pass the returned jobId on subsequent calls.", "type": "string" }, "projectid": { "description": "The project id from a previous purchase_scaffold result — must be owned by this account. Required.", "type": "string" } }, "required": [ "projectid" ], "type": "object" }, "name": "verify_scaffold", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:d21705358f231e4c01e71c9f8eef74accd75260a52e422e806b84b3aa0d91bd7 | sha256sum