For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /docs/mcp.md.

MCP Server

Connect Cresc to your AI client (Claude Desktop, an IDE, your own agent) so it can read your release state directly and investigate alongside GitHub, Sentry or CI. Everything is read-only — it never changes your releases.

What you would use it for

Find out why a device did not get an update

A device on native package 1.2.0 of my app (appKey xxx) never received the update — can you check?

The agent looks up which version that package currently serves, replays the update decision, checks whether the patch artifacts are ready, and tells you where it stops — outside the rollout, package paused, or the patch still building.

Confirm the state around a release

Which version does 1.2.0 serve right now, and what is the rollout percentage?

Correlate with your other tools

Errors went up yesterday — compare the Sentry exceptions with the Cresc release history

Check that a new version is healthy

Did 1.2.4 roll back anywhere since yesterday? Show its JS errors and map the most frequent one back to the source line

The agent sums up how the version was delivered and the download failures, patch failures, activations and rollbacks clients reported, lists the JS errors that version raised, and maps a stack back to your source with the source map archived at publish time (needs pushy:health:read, see below).

Getting started

1. Create a token

In the Cresc console open "MCP Server", give it a name and a client label, tick the apps it may read, then copy the token right away — it is shown only once.

Tokens get pushy:apps:read and pushy:diagnose by default, which is enough to debug update delivery. To let the agent read version health and JS errors as well, also tick pushy:health:read. Existing tokens do not gain it automatically — create a new one.

Copy the block below into your AI assistant (Claude Code, Cursor, Codex, Gemini CLI — any of them). Replace the token with your own first; the agent will find the right config location, install the server and verify it:

Please install the Cresc hot-update MCP server in the client I am using.

Server details (fixed — do not change them):
- Name: cresc
- Transport: HTTP (Streamable HTTP — not stdio, not SSE)
- URL: https://api.cresc.dev/mcp
- Auth: request header  Authorization: Bearer <token>
- My token: pushy_mcp_xxxxxxxx   <- replace this with the token from the console

Steps to follow:

1. First work out which client I am in (Claude Code / Claude Desktop / Cursor /
   VS Code / Codex / Cline / Gemini CLI ...) and find its MCP config file or
   CLI. If you cannot tell, ask me — do not guess and write into a random one.
2. Add it the official way for that client. Prefer the official CLI when there
   is one (claude mcp add, codex mcp add, gemini mcp add); otherwise edit the
   config file: back it up first, keep every MCP server already listed there,
   and never overwrite the whole file.
3. If the client only supports stdio and cannot talk to a remote HTTP server,
   use the proxy instead:
   npx -y mcp-remote https://api.cresc.dev/mcp --header "Authorization: Bearer <token>"
4. The token is a secret: prefer user-level (global) config, and do not write it
   into a project file that git would commit. If it has to live in the project,
   confirm the file is in .gitignore and tell me.
5. Verify after installing: list the tools the cresc server exposes, then run one
   read-only query (for example, list the apps I have access to) and paste the
   result. A 401/403 means the token is invalid or no apps were ticked — tell me
   to create a new token in the console instead of retrying.
6. Finish with one line: which file you changed or which command you ran, and
   whether I need to restart the client.

For context: this MCP server is read-only. It only reads release state — it
never publishes a version and never changes any setting.

3. Or configure it by hand

With Claude Desktop:

{
  "mcpServers": {
    "cresc": {
      "type": "http",
      "url": "https://api.cresc.dev/mcp",
      "headers": {
        "Authorization": "Bearer pushy_mcp_your_token"
      }
    }
  }
}

4. Just ask

Once connected, ask in plain language as in the scenarios above — you never need to name a tool.

What it can read

CapabilityDescription
App listThe apps the token is allowed to see
Release topologyThe version each native package serves, plus any gray release and its percentage
Update decisionReplays the decision for a set of client parameters and explains the outcome
Artifact statusWhether the patch was generated, and whether its task failed
Request observationRecent real requests per native package version: the build timestamps and content fingerprints clients report and their SDK versions, checked against the registered packages
Version healthPer OTA version, how updates were delivered and the download failures, patch failures, activations and rollbacks clients reported, plus cumulative devices observed (needs pushy:health:read, client v10.47.0+)
JS errorsError issues grouped by fingerprint, with stacks mapped to your source when a source map is archived (needs pushy:health:read, client v10.55.0+, see JS error monitoring)

Good to know

  • Read-only: it never publishes a version, pauses an app or changes any setting;
  • Scoped per app: grant only the apps you are debugging; a token can be revoked from the console at any time and stops working immediately;
  • Where the data goes: results go to the AI client you authorized, which may forward them to the model provider you chose — Cresc controls neither;
  • Responses never contain email addresses, IPs, device identifiers, secrets or payment data;
  • Error data: messages, stacks and source snippets come from your own app code. URL query strings, email addresses, IPs and token=-style secrets are removed, but business context may remain; for the custom context passed to captureException only the field names are returned, never the values;
  • Rate limit: mapping an error to source for the first time downloads the source map, limited to 30 per account every 10 minutes. Over the limit the raw stack is returned; errors already mapped are not affected.