Connect a client
Connect your MCP client, tell Elixir what to record, and ask it about Clash Royale history. Five minutes, no key to paste.
Three things happen once, in this order: an account, a recorded player, a connected client. Most of the elapsed time is waiting for two emails.
1. Get an account
Accounts are approved by hand. Ask on the sign-in card, at /signin?request, with your email and your Clash Royale player tag. You will hear back either way. Once approved, sign in at the same place: enter your email, then the six-digit code from the mail (15 minutes, five attempts). The mail also carries a one-click link; either works.
2. Track your player
On Account → Overview, track your player tag. Tracking is recording:
the scheduler starts fetching your profile and battle log at its next tick,
and history builds from there. Your first player becomes your primary,
which is what every tool means when you omit player_tag. Track alts and
friends the same way and mark the relationship; every tier holds 50 players. See
Recording and coverage for what gets fetched and how often.
You can connect a client while capture is still pending.
3. Connect
The endpoint is the same for every client:
https://elixir.poapkings.com/mcp
The door speaks Streamable HTTP over JSON and authenticates with OAuth 2.1
(dynamic client registration, PKCE S256, a resource parameter naming the
endpoint). A client that names no scope is offered every capability, ticked,
on the consent page; untick what you do not want, and change it later under
Account → Connections. Details are on the Protocol reference.
Claude.ai
- Settings → Connectors → Add custom connector.
- Name it (say,
Elixir MCP) and pastehttps://elixir.poapkings.com/mcp. Leave the OAuth client id and secret empty: the door registers the client itself. - Click Connect. A sign-in page opens: enter your account email, then the six-digit code from the mail, and approve the listed capabilities.
- In a chat, enable the connector under the tools menu and ask something.
The connector caches the tool list. When elixir_changelog or a response's
contract_version shows the contract moved, disconnect and reconnect the
connector to refresh it.
Claude Desktop
Claude Desktop uses the same connector list as Claude.ai: Settings →
Connectors → Add custom connector, then the steps above. Remote connectors
need a plan that supports them; the desktop app's claude_desktop_config.json
stdio servers are a different mechanism and are not needed.
Claude Code
claude mcp add --transport http elixir https://elixir.poapkings.com/mcp
Then run /mcp inside Claude Code and choose Authenticate for elixir;
the browser flow is the same email-and-code page. Use --scope user on the
add command if you want the connection in every project.
Any MCP client
Your client needs: Streamable HTTP transport (POST only, JSON responses, no
SSE required), OAuth 2.1 with dynamic client registration and PKCE S256, and
RFC 8707 resource support. The sequence is:
POST /mcpwithout a token → 401 withWWW-Authenticate: Bearer resource_metadata="https://elixir.poapkings.com/.well-known/oauth-protected-resource".- Read that document, then the authorization-server metadata it points to.
POST /oauth/registerwith yourredirect_uris(https, or http on localhost / 127.0.0.1 / [::1]).- Send the user to
/oauth/authorizewithclient_id,redirect_uri,code_challenge(S256),scope=cr:read,resource=https://elixir.poapkings.com/mcp, andstate. - Exchange the code at
/oauth/tokenwithcode_verifierand the sameresource. Access tokens last an hour; refresh tokens rotate on every use. POST /mcpwithAuthorization: Bearer <access_token>and aninitializerequest. ReadserverInfo.versionand_meta.
The official MCP SDKs implement steps 1 to 5; mcp-remote bridges a
stdio-only client to this flow.
ChatGPT
ChatGPT's connector support is scoped to its own connector catalogue and to
developer-mode custom connectors whose availability depends on your plan and
region, and its expectations of a server (specific search and fetch
tools for deep research) differ from a general MCP tool surface. Elixir MCP
does not test against ChatGPT and makes no claim that it works there. If you
try it and it does, or does not, elixir_feedback is the place to say so.
4. Ask something
Account → Overview shows what is recorded for your primary so far and
offers starter questions matched to it: a snapshot review when only a profile
exists, a seven-day review once battles are in (30 days if the last week is
empty), a deck comparison when two decks appear, a week-over-week comparison
when both windows have battles. Copy one into your client. You never need
to tell the client your tag; if it starts by listing your players, that is a
bug worth reporting. The agent can also read this manual itself: elixir_docs
serves these pages over the connection, and the eleven
examples are offered as prompts, so "how do I scout a
bracket?" is a question it can answer before it calls anything.
The same page counts successful player, battle and war reads through your
personal connections over the last seven days, so you can tell an authorized
connection from a working one. Review activity lists every call with its
request_id.
What next
- Users, agents and integrations: a bot for a whole clan rather than a connection for yourself.
- Tools: everything the connection can call.
- Reading a response: the
metaenvelope every answer carries. - Limits: what 500 calls a day actually bounds.
If something goes wrong
Quote the request_id from the response's meta when you report an answer
that looks wrong. Your own call history, with those ids, is on Account →
Activity; refused credentials appear on Account → Connections.