MCP App Store

Overview

Buildy is a hosted runtime for personal web apps that users and their agents can share. An agent creates an app, Buildy gives it a URL, backend, and key-value storage, and the user keeps using the same app and data across ChatGPT, Claude, and other agents.

Tools

create_app

ChatGPT
Create a new interactive web app and render it inline. Use this to build a new app from a request. If module reuses a manifest.id the caller already owns, the new app replaces the existing app module, UI, and styles in place; use update_app to edit a known app ID by UUID. Apps persist state through a backend env.storage (Workers KV) binding and call backend operations from the frontend via window.buildy.api. The module, ui, and description parameter docs carry the authoring rules; the buildy:app-guide prompt has the full guide and a canonical example.

delete_app

ChatGPT
Permanently delete a Buildy app the caller owns, optionally also purging its stored data. Use this to remove an app the caller no longer wants. Deletion is irreversible and requires confirmation: the host is asked to show a confirmation prompt, and when it cannot, the call fails closed until re-invoked with confirm: true.

get_app

ChatGPT
Fetch an existing app by ID and render it inline. Use this to open, re-render, or continue working with an app the caller already has. Returns the live embedded UI plus its callable API operations, which another agent can invoke with query_app (read-only) or mutate_app (writes) to query or update saved app data. Unlike list_apps, which returns only names and URLs, get_app renders the app; call list_apps first to find the ID.

get_app_source

ChatGPT
Return an app's raw persisted source (module, frontend ui script, and styles) plus its current version for optimistic-concurrency edits. Use this when you need the source to inspect, debug, or edit an app the caller owns.

list_apps

ChatGPT
List the caller's Buildy apps. Use this to find an app's id before fetching, editing, or calling it. Returns per app: id, displayName, description (a search-friendly summary), url, lastUpdatedAt (ISO-8601 of the last write), claimed (always true for now — exposed for forward-compat), and capabilities (imports + exports). The description disambiguates apps with similar display names; capabilities.exports lists each app's callable operations, exposing the cross-app integration surface without N+1 get_app_source calls. Paginate with cursor from a prior call's nextCursor line. Apps with description: null predate descriptions and have not yet been backfilled.

list_feedback

ChatGPT
List feedback rows for the caller's apps. Use this to review feedback previously recorded for an app. When app_id is set, returns rows for that one app (owner-checked); when omitted, returns rows across every app the caller owns. Paginate with cursor from a prior call's cursor field. Newest rows come first.

mutate_app

ChatGPT
Run a mutating backend operation on a Buildy app and return its result, without editing code. Use this for operations that change state — including operations whose read/write safety can't be determined. For read-only operations, use query_app. If you don't know an operation's name or which tool it needs, call get_app — each operation lists its tool.

query_app

ChatGPT
Run a read-only backend operation on a Buildy app and return its result, without editing code. Use this for operations that only read state. For operations that change state, use mutate_app. If you don't know an operation's name or which tool it needs, call get_app — each operation lists its tool.

rename_app

ChatGPT
Change a Buildy app's URL slug — the human-readable, URL-safe name, distinct from its title/displayName and from its machine manifest id. Use this to give an app a different public URL. Titles and slugs are independent: editing the title with update_app does not change the slug; this tool does. Renaming changes the public URL, and the old URL keeps working by redirecting to the new one. Slug rules: lowercase letters, digits, and hyphens; 2-48 chars; may start with a letter or digit; no leading, trailing, or consecutive hyphens.

set_handle

ChatGPT
Change the signed-in user's handle (their username) — the first segment of their friendly app URLs (https://app.buildy.so/<handle>/<app-name>), so changing it changes the prefix of every app URL they share. Use this to give the current user a different handle. The old handle keeps working by redirecting to the new one, so links already shared stay valid. Acts on the current signed-in user only and takes no user id. Handle rules: lowercase letters, digits, and hyphens; 3-32 chars; must start with a letter; no leading, trailing, or consecutive hyphens; some words are reserved. Rate-limited to 3 changes per rolling 30 days.

set_remixable

ChatGPT
Mark a Buildy app as remixable. Use this to let anyone who opens the app's URL get their own brand-new editable copy, while the original is never mutated by visitors. Each remix is an independent app the visitor can keep and later claim by signing up. Idempotent: calling on an already-remixable app returns the same URL without re-firing analytics. Anonymous apps cannot be made remixable; the app must be claimed first.

set_starter_prompt

ChatGPT
Set or clear an app's authored starter prompt — the text prefilled in the chat host when a visitor clicks "Open in Claude" or "Open in ChatGPT" on the app, replacing the generic "I'm using a Buildy app at <url>" body. Use this to frame a shared/remixable app's intended use for visitors. Pass starter_prompt: null (or an empty string) to clear and revert to the generic default. Owner-only; anonymous apps must be claimed first. Idempotent (re-setting the same value is a no-op). Length cap: 2000 characters.

submit_feedback

ChatGPT
Record agent-authored feedback about a Buildy app. Use this to log observed bugs, suggested enhancements, caught crash reports, or qualitative notes. Source is server-enforced to "agent" — agents cannot impersonate user or auto-crash sources. The caller must own the app.

unset_remixable

ChatGPT
Stop allowing remixes of a Buildy app. Use this to turn off auto-forking for new visitors; existing remixes survive untouched. Idempotent: calling on an already-non-remixable app is a no-op.

update_app

ChatGPT
Update an existing Buildy app and render the fresh version inline. Use this to edit an app the caller already owns, identified by UUID. Two mutually exclusive input shapes: (A) full-source — pass module/ui/styles to replace those buckets, following the same authoring rules as create_app (documented on those parameters and in the buildy:app-guide prompt); (B) edits[] — exact-string find/replace operations plus the expected_version from your last read, much cheaper for small changes. If the app's behavior changed materially (new operation, new data tracked, new use-case), also pass an updated description so list_apps stays accurate; backfill one if an older app has none.

upload_asset

ChatGPT
UPLOAD A STATIC ASSET TO AN APP so app code stays small and the app reads it back same-origin. Use this when an app needs a large or static file — an image, PDF, audio clip, or a dataset bigger than a few KB — that would otherwise be inlined into module/ui and blow the 256 KiB source cap. Provide EXACTLY ONE of: text (UTF-8 dataset/JSON/CSV — no encoding needed), sourceUrl (a remote image/PDF the SERVER fetches; never paste binary), or dataBase64 (tiny inline binary only, <64 KiB). The app reads the asset via window.buildy.assets.getUrl(key) (for <img>/<a>) or env.assets.get(key) in its backend (the app must declare buildy:storage/blob@1.0 in manifest.capabilities.imports to use env.assets). Caps: 10 MiB/asset, 50 assets/app, 100 MiB/app.

Capabilities

WritesInteractive

App Stats

16

Tools

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily