# Charming Docs > Charming is a hosting platform for personal software for you and your AI agent. ## Docs - [Charming docs](https://charm.ing/docs): Charming is a hosting platform for personal software for you and your AI agent. ## Concepts - [How Charming works](https://charm.ing/docs/concepts/how-charming-works): What Charming is, how an agent builds an app on it, and what every app supports. - [Where your apps live](https://charm.ing/docs/concepts/where-your-apps-live): Every app gets a stable URL the moment it's built, and three ways back to it: Account Home, your agent, or the link itself. ## Capabilities - [Data storage](https://charm.ing/docs/capabilities/data-storage): Every app comes with storage your agent can read and write: lists, settings, totals, even files. - [App names and URLs](https://charm.ing/docs/capabilities/app-names-and-urls): Every app gets a short, shareable URL built from your handle and the app's own name, and both are yours to change. - [Privacy and sharing](https://charm.ing/docs/capabilities/privacy-and-sharing): Every app is private by default: one owner, one dataset, and you decide who else gets in and what they can do. - [Secrets](https://charm.ing/docs/capabilities/secrets): Your app calls external APIs using a key the owner sets in App settings; the value never reaches your app's code or the model that built it. - [Connect to any AI agent](https://charm.ing/docs/capabilities/connect-any-agent): Build your app in one agent, then open, read, and update it from another: Claude, ChatGPT, any agent that speaks MCP or HTTP, all against the same app. - [Code export](https://charm.ing/docs/capabilities/code-export): The code behind your app is yours: export it anytime and reuse it anywhere. - [Templates](https://charm.ing/docs/capabilities/templates): Publish an app as a template so a signed-in visitor can create their own independent copy, and optionally list it in the public template store. - [Pricing and limits](https://charm.ing/docs/capabilities/limits): Free and claimed tiers, size caps, rate limits, and token lifetimes for Charming apps. - [Feedback](https://charm.ing/docs/capabilities/feedback): People using your app can send you a bug report or a suggestion right from the app, and your agent can read it back and turn it into a fix. - [Custom domains](https://charm.ing/docs/capabilities/custom-domains): Put a Charming app on your own domain, and give every visitor their own private data instead of one shared pool. - [Routines](https://charm.ing/docs/capabilities/routines): Routines run an app op on its own, on a timer, with no chat open. ## Charming for Work - [Charming for Work](https://charm.ing/docs/work): See what a Business account adds to the apps your team builds with Charming. - [Security review](https://charm.ing/docs/work/security-review): Current facts and source links for a manager, IT admin, or security reviewer assessing Charming for a team. ## AI clients - [AI clients](https://charm.ing/docs/clients): Find your AI client and follow its setup guide. - [Set up ChatGPT](https://charm.ing/docs/clients/chatgpt): Connect Charming from the ChatGPT Apps directory, then build your first app. - [Set up Claude](https://charm.ing/docs/clients/claude): Add Charming to Claude as a custom MCP connector, screen by screen. - [Set up Grok](https://charm.ing/docs/clients/grok): Add Charming to Grok with the default MCP connector URL. - [Set up Gemini CLI](https://charm.ing/docs/clients/gemini): Add Charming to Gemini CLI with one command. - [Set up Perplexity](https://charm.ing/docs/clients/perplexity): Add Charming as a custom remote connector in Perplexity. - [Set up Cursor](https://charm.ing/docs/clients/cursor): Connect Cursor with one prompt, or add Charming as a remote MCP server. - [Set up Codex](https://charm.ing/docs/clients/codex): Install the Charming plugin once, then build in the Codex app or CLI. - [Set up Goose](https://charm.ing/docs/clients/goose): Add one URL, sign in once, then build and use Charming apps inside Goose. - [Set up Claude Code](https://charm.ing/docs/clients/claude-code): Add Charming to Claude Code with one terminal command. - [Set up Cline](https://charm.ing/docs/clients/cline): Add Charming as a remote MCP server in the Cline extension. - [Set up Windsurf](https://charm.ing/docs/clients/windsurf): Add Charming as a remote MCP server in Windsurf. - [Set up Continue](https://charm.ing/docs/clients/continue): Add Charming as a remote MCP server in a Continue project. - [Set up Zed](https://charm.ing/docs/clients/zed): Add Charming as a remote MCP server in Zed. - [Set up Notion](https://charm.ing/docs/clients/notion): Add Charming to a Notion Custom Agent as a custom MCP server. - [Set up n8n](https://charm.ing/docs/clients/n8n): Use Charming tools in an n8n AI Agent workflow. - [Set up Amazon Bedrock AgentCore](https://charm.ing/docs/clients/agentcore): Add Charming as an external MCP server target in an AgentCore Gateway. - [Set up Microsoft 365 Copilot](https://charm.ing/docs/clients/microsoft-365-copilot): Add Charming to Microsoft 365 Copilot through a declarative agent. ## Prompts for agents - [Prompts for agents](https://charm.ing/docs/prompts): Copy a prompt into your agent to build, use, or design a Charming app. ## Guides - [Build an app multiple people use](https://charm.ing/docs/guides/build-an-app-multiple-people-use): How to share one app with the people who'll use it, whether they share data or each need their own. - [Browser features in your app](https://charm.ing/docs/guides/browser-features): Camera, microphone, and location ask the browser for permission, and a chat host can block that prompt before it shows. A file picker asks for nothing, so it always works. - [Fix and improve your app](https://charm.ing/docs/guides/fix-and-improve-your-app): Once your app is live, ask your agent to check it for problems, read what people said, and ship the fix, all in one pass. - [Moving from Buildy to Charming](https://charm.ing/docs/guides/migrate-from-buildy): Buildy is now Charming. Your apps already moved — here is the new URL, the new MCP connector, and how to update an agent that still remembers Buildy. ## Charming API - [Charming API](https://charm.ing/docs/reference) ### Operations - [Apply exact-string find/replace edits to the persisted source](https://charm.ing/docs/reference/operations/patch-app-source) - [Approve a pairing (browser-side, signed-in user)](https://charm.ing/docs/reference/operations/approve-pairing) - [Call an operation defined inside the app's `fetch` handler](https://charm.ing/docs/reference/operations/call-app-operation) - [Claim an unclaimed app for the authenticated user](https://charm.ing/docs/reference/operations/claim-app) - [Clear the icon and fall back to the default Charming mark](https://charm.ing/docs/reference/operations/clear-app-icon) - [Create a new secret value](https://charm.ing/docs/reference/operations/create-app-secret) - [Create an app (anonymous or authenticated upsert)](https://charm.ing/docs/reference/operations/create-app) - [Create or replace a secret value](https://charm.ing/docs/reference/operations/upsert-app-secret) - [Delete a secret by name](https://charm.ing/docs/reference/operations/delete-app-secret) - [Delete an app](https://charm.ing/docs/reference/operations/delete-app) - [Delete an asset](https://charm.ing/docs/reference/operations/delete-app-asset) - [Fetch the canonical Charming authoring guide as Markdown](https://charm.ing/docs/reference/operations/get-app-guide-prompt) - [Fetch the Charming design guide as Markdown](https://charm.ing/docs/reference/operations/get-design-guide-prompt) - [Get an app's agent description without changing the app](https://charm.ing/docs/reference/operations/get-app-agent-descriptor) - [List assets for an app](https://charm.ing/docs/reference/operations/list-app-assets) - [List the app secret NAMES (never values)](https://charm.ing/docs/reference/operations/list-app-secrets) - [List the caller’s tokens (no plaintext, no hash)](https://charm.ing/docs/reference/operations/list-tokens) - [List your owned and shared apps, newest first](https://charm.ing/docs/reference/operations/list-apps) - [Mint a device_code for an unauthenticated agent (RFC 8628-shaped)](https://charm.ing/docs/reference/operations/start-pairing) - [Mint a personal access token (`chrm_user_*`)](https://charm.ing/docs/reference/operations/create-token) - [OAuth protected-resource metadata (delegated to better-auth)](https://charm.ing/docs/reference/operations/get-oauth-protected-resource) - [OAuth/MCP discovery metadata (delegated to better-auth)](https://charm.ing/docs/reference/operations/get-oauth-authorization-server) - [Owner-only metadata + storage key inventory](https://charm.ing/docs/reference/operations/describe-app) - [Per-app OpenAPI document derived from `export const routes`](https://charm.ing/docs/reference/operations/get-app-openapi) - [Poll a device_code until the user approves](https://charm.ing/docs/reference/operations/poll-pairing) - [Read the app's durable runtime-failure events](https://charm.ing/docs/reference/operations/get-app-activity) - [Read the exact persisted source for an app](https://charm.ing/docs/reference/operations/get-app-source) - [Read the per-app runtime error ring buffer](https://charm.ing/docs/reference/operations/get-app-diag) - [Report a caught app load failure from the in-page bridge (anonymous)](https://charm.ing/docs/reference/operations/report-app-load-error) - [Report a runtime error from the in-page shell (anonymous)](https://charm.ing/docs/reference/operations/report-app-diag) - [Resolve a manifestId to an appId in the caller’s scope](https://charm.ing/docs/reference/operations/resolve-app-manifest) - [Revoke a token](https://charm.ing/docs/reference/operations/revoke-token) - [Set or clear the authored chat-with-app starter prompt](https://charm.ing/docs/reference/operations/set-app-starter-prompt) - [Set the home-screen / favicon icon (emoji + bg)](https://charm.ing/docs/reference/operations/set-app-icon) - [Submit durable feedback for an app](https://charm.ing/docs/reference/operations/submit-app-feedback) - [Subscribe to the live-state SSE stream for an app](https://charm.ing/docs/reference/operations/subscribe-app-events) - [This document](https://charm.ing/docs/reference/operations/get-openapi-spec) - [Toggle whether anyone can open the app with no login](https://charm.ing/docs/reference/operations/set-app-public) - [Toggle whether signed-in visitors can create their own copy, and whether it is listed as a template](https://charm.ing/docs/reference/operations/set-app-remixable) - [Update an existing app](https://charm.ing/docs/reference/operations/update-app) - [Upload an asset for an app](https://charm.ing/docs/reference/operations/upload-app-asset) - [Web Bot Auth signing-key directory (RFC 9421)](https://charm.ing/docs/reference/operations/get-http-message-signatures-directory) ## Technical specs for agents - [Technical specs for agents](https://charm.ing/docs/technical-reference): Dense build, runtime, and protocol specs written for agents that work with Charming. - [Authentication](https://charm.ing/docs/technical-reference/authentication): Agent reference for token scopes, pairing, claims, recovery, and revocation. ### Mcp - [MCP reference](https://charm.ing/docs/technical-reference/mcp): The generated Charming MCP contract for standard MCP Apps clients and ChatGPT. - [MCP server](https://charm.ing/docs/technical-reference/mcp/server): Server identity, instructions, and capabilities. - [MCP prompts](https://charm.ing/docs/technical-reference/mcp/prompts): Prompt descriptors returned by prompts/list. - [MCP resources](https://charm.ing/docs/technical-reference/mcp/resources): UI resource descriptors returned by resources/list. #### Tools - [Create App](https://charm.ing/docs/technical-reference/mcp/tools/create_app): Create a new interactive web app and render it inline. - [Create Routine](https://charm.ing/docs/technical-reference/mcp/tools/create_routine): Use this when the user wants an app op to run on its own, on a timer — no chat needs to be open. - [Delete App](https://charm.ing/docs/technical-reference/mcp/tools/delete_app): Permanently delete a Charming app the caller owns, optionally also purging its stored data. - [Delete Routine](https://charm.ing/docs/technical-reference/mcp/tools/delete_routine): Use this to stop and remove a Routine. - [Get App](https://charm.ing/docs/technical-reference/mcp/tools/get_app): Fetch an existing app by ID and render it inline. - [Get App Source](https://charm.ing/docs/technical-reference/mcp/tools/get_app_source): Return an app's raw persisted source (module, frontend ui script, and styles) plus its current revision for optimistic-concurrency edits. - [List App Shares](https://charm.ing/docs/technical-reference/mcp/tools/list_app_shares): MCP contract for list_app_shares. - [List Apps](https://charm.ing/docs/technical-reference/mcp/tools/list_apps): List the caller's Charming apps — owned ones plus apps shared with them (accepted invites, marked `[shared with you]`; a read-only share also reads `(view-only)`). - [List App Feedback](https://charm.ing/docs/technical-reference/mcp/tools/list_feedback): List feedback rows for the caller's apps. - [List Routines](https://charm.ing/docs/technical-reference/mcp/tools/list_routines): Use this to see the caller's Routines across their apps. - [Mutate App](https://charm.ing/docs/technical-reference/mcp/tools/mutate_app): Run a mutating backend operation on a Charming app and return its result, without editing code. - [Query App](https://charm.ing/docs/technical-reference/mcp/tools/query_app): Run a read-only backend operation on a Charming app and return its result, without editing code. - [Rename App](https://charm.ing/docs/technical-reference/mcp/tools/rename_app): Change a Charming app's URL slug — the human-readable, URL-safe name, distinct from its title/displayName and from its machine manifest id. - [Search Templates](https://charm.ing/docs/technical-reference/mcp/tools/search_templates): Search the public Charming template directory by keyword. - [Set Your Handle](https://charm.ing/docs/technical-reference/mcp/tools/set_handle): MCP contract for set_handle. - [Make App Public](https://charm.ing/docs/technical-reference/mcp/tools/set_public): Make a Charming app PUBLIC: anyone who opens its URL can use it with no login and read AND write its SHARED data. - [Share App as Remixable](https://charm.ing/docs/technical-reference/mcp/tools/set_remixable): Deprecated: use `set_template` instead (same effect, plus an optional `listed` flag). - [Set App Starter Prompt](https://charm.ing/docs/technical-reference/mcp/tools/set_starter_prompt): MCP contract for set_starter_prompt. - [Publish App as Template](https://charm.ing/docs/technical-reference/mcp/tools/set_template): Publish a Charming app as a template: makes it copyable, and optionally lists it in Charming's public template directory. - [Share App with a User](https://charm.ing/docs/technical-reference/mcp/tools/share_app): Invite someone (by Charming handle or email) to one of your apps, OR change the role of someone you already invited. - [Submit App Feedback](https://charm.ing/docs/technical-reference/mcp/tools/submit_feedback): Record agent-authored feedback about a Charming app. - [Make App Private](https://charm.ing/docs/technical-reference/mcp/tools/unset_public): Make a public Charming app PRIVATE again. - [Stop Allowing Remixes](https://charm.ing/docs/technical-reference/mcp/tools/unset_remixable): Deprecated: use `unset_template` instead (identical effect). - [Unpublish Template](https://charm.ing/docs/technical-reference/mcp/tools/unset_template): Stop treating a Charming app as a template. - [Revoke App Share](https://charm.ing/docs/technical-reference/mcp/tools/unshare_app): Revoke another user's access to one of your apps — removes a pending invitation or an accepted collaborator grant. - [Update App](https://charm.ing/docs/technical-reference/mcp/tools/update_app): Update an existing Charming app and render the fresh revision inline. - [Update Routine](https://charm.ing/docs/technical-reference/mcp/tools/update_routine): Use this to change a Routine's `interval`, or enable/disable it. - [Upload Asset](https://charm.ing/docs/technical-reference/mcp/tools/upload_asset): UPLOAD A STATIC ASSET TO AN APP so app code stays small and the app reads it back same-origin.