Charm + Claude
Your loyalty program, one question away in Claude.
How it works
What you can do.
Charm ships an MCP server on top of its public API. Add it to Claude as a custom connector and ask in plain language: how many points a customer has, which rewards were redeemed this week, or why a shopper dropped a tier. Claude keeps the thread, so the follow-up question lands without you restating who you're talking about.
- ✓Every public API endpoint exposed as a tool, generated from the API itself so the tools never drift
- ✓Multi-step questions in one thread: find the customer, read their history, then draft the reply
- ✓Available anywhere Claude is, including Claude Code for one-off operational scripts
- ✓Scoped by your API key: a read-only key answers questions but physically cannot change a balance
Under the hood
What the data looks like.
Endpoint: https://charm.appfleece.app/api/mcp
Auth: Authorization: Bearer chrm_live_...
You: "Why did jane@example.com drop from Gold?"
Claude → tools/call get_customer { email: "jane@example.com" }
→ tools/call list_point_events { customer_id: "cus_8321" }
← 400 points expired on 2026-07-31, tier recalculated to SilverSetup
Five-minute setup.
- 1Create an API key in Charm → Settings → API. Its scopes decide what Claude can do
- 2In Claude, open Settings → Connectors and add a custom connector
- 3Paste the Charm MCP endpoint and authenticate with the key as a bearer token
- 4Ask away. Revoking the key disconnects Claude instantly
FAQ
Common questions.
Can Claude do something my API key can't?
No. The key's scopes are Claude's capabilities, enforced server-side on every tool call. A read-only key sees only read tools.
Does Charm data get used for training?
The connector sends your data to Anthropic under whatever terms your Claude plan carries. Charm's side is a plain API call: we don't route anything through a third party, and an expired or revoked key stops it dead.
What stops Claude from double-awarding points?
The same idempotency layer as the REST API. Mutations accept an idempotency key, and every call passes the shop's rate limits.