---
title: "MCP reference"
description: "The generated Charming MCP contract for standard MCP Apps clients and ChatGPT."
sidebar:
  order: 1
---

<!-- Generated by apps/docs/scripts/generate-mcp-reference.mjs. -->

Use `https://charm.ing/mcp` for MCP clients. Use `https://charm.ing/mcp/chatgpt` for a direct ChatGPT integration.

Both endpoints provide the same tool names, inputs, and outputs. ChatGPT receives extra metadata for progress messages and inline app rendering. If you are calling a tool, you can ignore the ChatGPT metadata sections.

Download the [complete generated contract](/docs/mcp-contract.json) to inspect both protocol responses.

## Contract sections

- [Server](/docs/technical-reference/mcp/server): server identity, instructions, and capabilities.
- [Tools](#tools): every input schema, output schema, annotation, execution rule, and metadata field.
- [Prompts](/docs/technical-reference/mcp/prompts): every server prompt and argument.
- [Resources](/docs/technical-reference/mcp/resources): every UI resource, MIME type, CSP rule, and host-specific field.

## Tools

- [`acknowledge_feedback_responses`](/docs/technical-reference/mcp/tools/acknowledge_feedback_responses): Acknowledge feedback responses after the agent has processed them.
- [`cancel_app_build`](/docs/technical-reference/mcp/tools/cancel_app_build): Use this to cancel an accepted app build before it publishes.
- [`create_app`](/docs/technical-reference/mcp/tools/create_app): Create a new interactive web app and render it inline.
- [`create_routine`](/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`](/docs/technical-reference/mcp/tools/delete_app): Permanently delete a Charming app the caller owns, optionally also purging its stored data.
- [`delete_routine`](/docs/technical-reference/mcp/tools/delete_routine): Use this to stop and remove a Routine.
- [`get_app`](/docs/technical-reference/mcp/tools/get_app): Fetch an existing app by ID and render it inline.
- [`get_app_build`](/docs/technical-reference/mcp/tools/get_app_build): Use this to inspect an accepted app build without running or publishing it.
- [`get_app_source`](/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`](/docs/technical-reference/mcp/tools/list_app_shares): MCP contract for list_app_shares.
- [`list_apps`](/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_feedback`](/docs/technical-reference/mcp/tools/list_feedback): List feedback rows for the caller's apps.
- [`list_feedback_responses`](/docs/technical-reference/mcp/tools/list_feedback_responses): Fetch unread Charming staff responses to feedback submitted by this authenticated account.
- [`list_routines`](/docs/technical-reference/mcp/tools/list_routines): Use this to see the caller's Routines across their apps.
- [`mutate_app`](/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`](/docs/technical-reference/mcp/tools/query_app): Run a read-only backend operation on a Charming app and return its result, without editing code.
- [`read_docs`](/docs/technical-reference/mcp/tools/read_docs): Read Charming documentation without web access.
- [`rename_app`](/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`](/docs/technical-reference/mcp/tools/search_templates): Search the public Charming Template directory by keyword.
- [`set_handle`](/docs/technical-reference/mcp/tools/set_handle): MCP contract for set_handle.
- [`set_public`](/docs/technical-reference/mcp/tools/set_public): Make a Charming app Public: anyone with the URL can open the live hosted App Viewer with no login and read its data.
- [`set_remixable`](/docs/technical-reference/mcp/tools/set_remixable): Deprecated: use `set_template` instead.
- [`set_starter_prompt`](/docs/technical-reference/mcp/tools/set_starter_prompt): MCP contract for set_starter_prompt.
- [`set_template`](/docs/technical-reference/mcp/tools/set_template): Enable a Charming Template for people who can already read the source App, and optionally publish it in Charming's public Template directory so anyone can discover and copy it.
- [`share_app`](/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_feedback`](/docs/technical-reference/mcp/tools/submit_feedback): Record agent-authored feedback about a Charming app.
- [`unset_public`](/docs/technical-reference/mcp/tools/unset_public): Make a public Charming app PRIVATE again.
- [`unset_remixable`](/docs/technical-reference/mcp/tools/unset_remixable): Deprecated: use `unset_template` instead (identical effect).
- [`unset_template`](/docs/technical-reference/mcp/tools/unset_template): Stop treating a Charming app as a template.
- [`unshare_app`](/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`](/docs/technical-reference/mcp/tools/update_app): Use this to update an existing Charming app identified by UUID.
- [`update_routine`](/docs/technical-reference/mcp/tools/update_routine): Use this to change a Routine's `interval`, or enable/disable it.
- [`upload_asset`](/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.

Found a bug or need a feature? [Tell us](/docs/capabilities/feedback) with `submit_feedback` or `POST /app/{id}/feedback`. Your feedback shapes what we build next.
