{
  "name": "Charming",
  "description": "Charming hosts personal interactive web apps for agents. Each app has a real URL, persistent KV storage, and an HTTP/MCP API. Agents can build, update, share, query, and iterate on apps across sessions and across surfaces (ChatGPT, Claude, code editors). Interaction is via MCP (see `url`) or the HTTP API documented at https://charm.ing/.well-known/openapi.json — Charming does not currently expose an A2A JSON-RPC endpoint.",
  "url": "https://charm.ing/mcp",
  "version": "1.0.0",
  "provider": {
    "organization": "Tambo Labs",
    "url": "https://usecharming.com"
  },
  "documentationUrl": "https://charm.ing/docs/llms-full.txt",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/uri-list"
  ],
  "skills": [
    {
      "id": "build_app",
      "name": "Build a new app",
      "description": "Author an interactive web app or start from a published one. Existing-contract saves return a live URL; ESM saves return a build ID to inspect or cancel before publication. Backed by MCP tools `create_app`, `update_app`, `get_app_build`, `cancel_app_build`, and `search_templates`.",
      "tags": [
        "create",
        "build",
        "scaffold"
      ],
      "examples": [
        "Build me a daily mood tracker.",
        "Create an app that tracks my reading list."
      ]
    },
    {
      "id": "manage_apps",
      "name": "List and inspect apps",
      "description": "List the caller's apps, fetch source/metadata, rename, and delete. Backed by `list_apps`, `get_app`, `get_app_source`, `rename_app`, `delete_app`.",
      "tags": [
        "list",
        "inspect",
        "manage"
      ],
      "examples": [
        "Show me all my Charming apps.",
        "Rename my protein tracker to nutrition log."
      ]
    },
    {
      "id": "call_app",
      "name": "Call an app's operations",
      "description": "Read or mutate an app's stored state via the operations it declares. Backed by `query_app`, `mutate_app`, `upload_asset`.",
      "tags": [
        "call",
        "query",
        "mutate"
      ],
      "examples": [
        "Log today's meal in my food tracker.",
        "What is currently on my reading list?"
      ]
    },
    {
      "id": "share_app",
      "name": "Share apps and publish templates",
      "description": "Share an app with collaborators, end users, or viewers, manage shares, open it to anyone with the link, and configure whether it is a template + starter prompt. Backed by `share_app`, `unshare_app`, `list_app_shares`, `set_public`, `unset_public`, `set_template`, `unset_template`, `set_starter_prompt`, and the deprecated aliases `set_remixable` / `unset_remixable`.",
      "tags": [
        "share",
        "template",
        "collaborate"
      ],
      "examples": [
        "Share my workout tracker with alice@example.com.",
        "List my recipe app as a Template anyone can copy."
      ]
    },
    {
      "id": "submit_feedback",
      "name": "Capture feedback from inside an app",
      "description": "Record per-app feedback — bug reports, feature requests, missing capabilities — and read the Charming team's replies. Backed by `submit_feedback`, `list_feedback`, `list_feedback_responses`, `acknowledge_feedback_responses`.",
      "tags": [
        "feedback",
        "report"
      ],
      "examples": [
        "Report that the date picker is broken in my journal app."
      ]
    },
    {
      "id": "read_docs",
      "name": "Read Charming documentation",
      "description": "Read the public Charming docs over the same connection, with no web access: the index, a capability or reference page, or the full authoring manual. Backed by `read_docs`.",
      "tags": [
        "docs",
        "reference",
        "read"
      ],
      "examples": [
        "How do I add storage to a Charming app?",
        "Read the Charming design guide before building my app."
      ]
    },
    {
      "id": "routines",
      "name": "Run an app on a schedule",
      "description": "Run one of an app's own operations on an hourly, daily, or weekly timer with no chat open, and manage those schedules. Backed by `create_routine`, `list_routines`, `update_routine`, `delete_routine`.",
      "tags": [
        "schedule",
        "routine",
        "automation"
      ],
      "examples": [
        "Refresh my dashboard data every morning.",
        "Turn off the weekly digest on my reading list app."
      ]
    },
    {
      "id": "profile",
      "name": "Manage account profile",
      "description": "Set the user's public handle for app sharing. Backed by `set_handle`.",
      "tags": [
        "profile",
        "handle",
        "account"
      ],
      "examples": [
        "Set my Charming handle to garrytan."
      ]
    }
  ]
}
