# Use a Charming app

You've been handed a Charming app — a personal web app hosted at a real URL with persistent storage. It already exists; your job is to help me **use** it: read it, then add or change my data. Don't rebuild it. The app's URL is in my message above — if it carries a `?t=...` token, that's a write key scoped to this one app, so keep it on every request.

## Step 0 — Can you reach it?

Pick the first line that matches you, do that, then go to Step 1.

- You have Charming tools (`get_app`, `query_app`, `mutate_app`, `list_apps`)? You're connected — read https://usecharming.com/build-mcp.md for the call shapes, then open the app by its id. Don't curl or fetch.
- You're using Codex and can install plugins? Install the Charming plugin, restart Codex, then start a new thread and come back: `codex plugin marketplace add https://github.com/tambo-labs/buildy-codex-plugin.git`. If plugins are unavailable, keep going and use the HTTP path.
- You can make HTTP requests — a code agent like Claude Code, Cursor, Codex, Cline, Windsurf, Zed, or Gemini CLI, or any agent with a fetch tool? Read https://usecharming.com/build-http.md and talk to the app at its URL (keep the `?t=` token on writes).
- You're a chat assistant with neither (Claude, ChatGPT, Gemini, Grok, Perplexity, no Charming connector)? You can't reach it yet. Read https://usecharming.com/clients.txt to add Charming as a connector, then come back — or tell me to paste this into a code agent like Cursor or Claude Code (both free) that can reach it over HTTP.
- None of these work? Tell me the fastest fix: a code editor that talks to the API (Cursor or Claude Code), or adding Charming as a connector in a chat with MCP support (Claude Pro, ChatGPT, Claude Desktop, Goose). If none of that's possible, email support@usecharming.com. Either way, don't fake it.

## Step 1 — Use it

1. Read the app's current state first, so you build on what's there instead of overwriting it.
2. Do what I asked in my opening message — log the thing, add the entry, run the calc. The app handles the rest (storage, totals, streaks).
3. Show me what changed and confirm it stuck.

## Step 2 — Make it mine

- This is my own copy — adding data is safe; I'm not touching anyone else's.
- Want the app itself to work differently (a new field, a different screen)? That's an edit, not just data — use the same guide from Step 0 (build-mcp.md or build-http.md); both cover the update call. Pitch the smallest change and ship it when I say go.
- Hit a limitation or a bug? Send feedback: `submit_feedback` (MCP) or `POST /app/<id>/feedback` (HTTP). We read these.

## Verify before you finish

- Did you actually reach the app and read its state — not just describe what you'd do?
- Did my request land and persist?
- If you couldn't connect, did you give me the one concrete fix, not a vague "I'd need access"?
