Skip to main content
Glama
getstoreready-mcp

getstoreready-mcp

Official

Two ways to connect

A. Hosted connector (no install)

Add https://api.getstoreready.com/mcp as a custom connector / remote MCP server. The first time, your AI app opens getstoreready.com — sign up or log in, click Allow, done. No API key to copy.

  • Claude (web / desktop): Settings → Connectors → Add custom connector → paste the URL.

  • Claude Code: claude mcp add --transport http getstoreready https://api.getstoreready.com/mcp

  • ChatGPT, Cursor, others: add it as a remote / Streamable HTTP MCP server.

The hosted connector can't see your computer, so the local-only tools (detect_app, capture_screenshots, bootstrap_store_project, upload by file path, saving a store key from a file) are only in the local server below.

B. Local server (simulator capture, local files)

Every client below runs the same command. No API key needed — ask your agent to "sign in to GetStoreReady": the sign_in tool opens getstoreready.com/connect with a short code, you sign up or log in and click Allow, and the key is saved to ~/.config/getstoreready/credentials.json.

{
  "command": "npx",
  "args": ["-y", "github:getstoreready/getstoreready-mcp"]
}

Prefer a fixed key (CI, scripts)? Create one at getstoreready.com/profile/api-keys and set it as GSR_API_KEY in the server's env — it takes precedence over sign_in. The examples below show that optional env block.

Claude Code

Project-scoped (shared via .mcp.json committed to a repo):

claude mcp add getstoreready --scope project -- npx -y github:getstoreready/getstoreready-mcp

Optionally set GSR_API_KEY in your environment (otherwise use sign_in), or add it to the generated .mcp.json:

{
  "mcpServers": {
    "getstoreready": {
      "command": "npx",
      "args": ["-y", "github:getstoreready/getstoreready-mcp"],
      "env": { "GSR_API_KEY": "gsr_live_your_key_here" }
    }
  }
}

User-scoped (available in every project): same block in ~/.claude.json under mcpServers, or claude mcp add --scope user.

Claude Desktop

Settings → Developer → Edit Config (opens claude_desktop_config.json):

{
  "mcpServers": {
    "getstoreready": {
      "command": "npx",
      "args": ["-y", "github:getstoreready/getstoreready-mcp"],
      "env": { "GSR_API_KEY": "gsr_live_your_key_here" }
    }
  }
}

Cursor

Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "getstoreready": {
      "command": "npx",
      "args": ["-y", "github:getstoreready/getstoreready-mcp"],
      "env": { "GSR_API_KEY": "gsr_live_your_key_here" }
    }
  }
}

Codex CLI

Add to ~/.codex/config.toml:

[mcp_servers.getstoreready]
command = "npx"
args = ["-y", "github:getstoreready/getstoreready-mcp"]

[mcp_servers.getstoreready.env]
GSR_API_KEY = "gsr_live_your_key_here"

Gemini CLI

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "getstoreready": {
      "command": "npx",
      "args": ["-y", "github:getstoreready/getstoreready-mcp"],
      "env": { "GSR_API_KEY": "gsr_live_your_key_here" }
    }
  }
}

Related MCP server: App Store Connect MCP Server

Tools

Account & billing

Tool

What it does

sign_in

Browser sign-in / sign-up (local server only) — no password or key in the chat

sign_out

Forget the saved key on this machine (local server only)

get_account

Signed-in email, plan, AI credit balance

list_plans

Plans and credit packs with prices

start_checkout

Payment link for a plan or credit pack — the user pays in their browser

App bootstrap (from local repo)

Tool

What it does

detect_app

Infer stack, app name, platforms, locales, and prioritized screens from a repo path.

discover_screenshots

Find PNG/JPG under marketing/, fastlane/screenshots/, screenshots/, etc.

capture_screenshots

Capture from iOS Simulator (simctl + optional Maestro) or Android (adb) into marketing/<locale>/. Prefer deepLinks or Maestro for distinct screens.

bootstrap_store_project

One-shot: detect → upload → create project → apply template → return text layers for copy.

Agent skill: getstoreready/getstoreready-skill — install with npx skills add getstoreready/getstoreready-skill.

Quick bootstrap:

  1. detect_app({ appRootPath: "/path/to/app" })

  2. discover_screenshots({ appRootPath }) — if empty, capture_screenshots({ appRootPath, platform: "ios" })

  3. bootstrap_store_project({ appRootPath, templateKey: "random" })

  4. update_screen_text per screen (optionally after get_screen_images + vision)

  5. Optional: update_listing → translate_project → export_project → store push tools

Projects & templates

Tool

What it does

list_projects

List your GetStoreReady projects.

create_project

Create a new project. Returns its id and editor URL.

get_project

Project summary — platforms, languages, screen count, editor URL.

list_templates

List templates with your owned/locked state.

apply_template

Apply a template by key or "random". See recommended flow below.

upload_screenshots

Upload raw app screenshots — prefer local path over base64 data.

place_screenshot_image

Place an uploaded asset into a screen by 1-based index.

Free-form design (full editor parity)

Everything the web editor can do — free text with per-word highlight runs, any Google Font, device mockups with 3D tilt/lean and view presets, image & icon layers, edge fades, gradient/pattern/panorama backgrounds, per-device overrides (iPhone vs iPad vs Android), groups and z-order — is one Design JSON per screen. These tools read and write it directly; the vocabulary comes live from the API, so new editor features show up without an MCP update.

Tool

What it does

get_design_catalog

Start here. Design guide + JSON Schema + layer defaults, device models & view presets, slot sizes, fonts, icons. Also exposed as the gsr://design-guide resource.

get_screen_design

Full Design JSON of one screen (or the feature graphic).

set_screen_design

Replace a screen's whole design (validated by the API).

edit_layers

Batch ops: add / update / remove / move / duplicate / set_override (per device slot) / group / ungroup.

set_background

Background for one/all screens, or a per-slot background override.

render_preview

Render a screen to PNG per device slot with the export engine — for the agent to look at its work.

add_screen / delete_screen / move_screen

Blank, template, copied or full-design screens; feature graphic too.

set_device_slots

Which device sizes the project produces; tablet landscape.

list_media

Your uploads + curated stock images usable as assetId.

Design loop: get_design_catalog → add_screen / set_screen_design → render_preview → edit_layers tweaks (incl. set_override for tablets) → render_preview again for every enabled slot.

Screen design

Tool

What it does

get_screens

List screens with text layer ids, current copy, and device asset urls.

get_screen_images

Return device screenshot images for your AI client's vision (not server OCR).

update_screen_text

Change one template text layer on one screen.

update_screen_design

Change background and/or multiple text layers on one screen.

bulk_update_designs

Same background/text across all or selected screens (e.g. white bg everywhere).

Listing & localization

Tool

What it does

list_store_languages

Active and available store languages for a project.

add_store_language

Add de_DE, fr_FR, etc.

remove_store_language

Remove a language (not the primary one)

reorder_store_languages

Set language order

set_primary_store_language

Change the primary (source) language

get_listing

Read ASO / store listing text for one locale.

update_listing

Update listing fields for one locale.

get_ai_credits

AI credit balance and translate availability.

estimate_translation

Credit cost estimate before translating.

translate_project

AI-translate listing and/or screen text between languages.

Export

Tool

What it does

export_project

Enqueue export, wait for ZIP, optionally save to a local path.

Store push (Premium/Pro)

Link credentials in the web UI first (/projects/:id/settings).

Tool

What it does

get_app_store_link

App Store Connect link status for a project.

preview_app_store_push

Review ASC push plan, blockers, warnings, live-store diff.

push_to_app_store

Push listing + screenshots to App Store Connect.

get_app_store_push_job

Poll an App Store push job.

get_google_play_link

Google Play link status for a project.

preview_google_play_push

Review Play push plan, blockers, live-store diff.

push_to_google_play

Push listing, screenshots, and app icon to Google Play.

get_google_play_push_job

Poll a Google Play push job.

Template + screenshots (live editor):

  1. apply_template({ projectId, templateKey }) — without assetIds

  2. upload_screenshots({ images: [{ path: "/local/shot.png" }] })

  3. place_screenshot_image once per screen

Screenshot-aware titles (vision on your client):

  1. get_screens or get_screen_images — your AI reads the images

  2. update_screen_text per screen with generated marketing copy

Bootstrap from an app repo (Flutter / RN / Swift):

  1. bootstrap_store_project({ appRootPath: "/path/to/my-app" })

  2. update_screen_text for each screen using returned textLayers

  3. update_listing when ASO metadata is ready

Add German + translate:

  1. estimate_translation({ fromLanguage: "en_US", toLanguage: "de_DE", includeListing: true, includeDesigns: true })

  2. get_ai_credits — confirm balance

  3. add_store_language({ languageCode: "de_DE" })

  4. translate_project({ fromLanguage: "en_US", toLanguage: "de_DE", includeListing: true, includeDesigns: true })

Push to App Store / Google Play:

  1. get_app_store_link / get_google_play_link — confirm linked

  2. preview_app_store_push / preview_google_play_push — review blockers + diff

  3. push_to_app_store / push_to_google_play — enqueue (waits by default)

White backgrounds on all screens:

bulk_update_designs({
  "projectId": "...",
  "background": { "type": "solid", "color": "#ffffff" }
})

Local development

git clone git@github.com:getstoreready/getstoreready-mcp.git
cd getstoreready-mcp
npm install
GSR_API_KEY=... GSR_API_BASE=http://localhost:3201 GSR_SITE_URL=http://localhost:3200 npm run dev

Hosted mode (what runs behind api.getstoreready.com/mcp):

npm run build
PORT=3100 GSR_API_BASE=http://localhost:3201 GSR_PUBLIC_API_BASE=http://localhost:3201 node dist/index.js --http

Configuration

Env var

Required

Default

GSR_API_KEY

No — or use sign_in

—

GSR_CREDENTIALS_PATH

No

~/.config/getstoreready/credentials.json

GSR_API_BASE

No

https://api.getstoreready.com

GSR_SITE_URL

No

https://getstoreready.com

License

MIT

Store connections

Connect a project to App Store Connect / Google Play without the web UI. Secrets are passed as file paths — the MCP reads the file locally and sends it encrypted to GetStoreReady, so keys never enter the chat.

Tool

Purpose

list_store_credentials

Saved keys / service accounts (no secrets)

add_app_store_credential

issuerId, keyId, privateKeyPath (AuthKey_XXXX.p8)

add_google_play_credential

serviceAccountJsonPath

test_store_credential

Check a credential, optionally against an app

delete_store_credential

Remove a saved credential

link_app_store / link_google_play

Connect a project to its store app

test_store_link / unlink_store

Check or remove a project's link

Available Tools

15 tools
add_store_languageA

Add one or more store languages to a project (e.g. de_DE for German). Does not translate — call translate_project after.

Inputs: projectId (required), languageCode, languageCodes.

bulk_update_designsB

Apply the same background (e.g. white) and/or text updates across multiple or all screens. Example: set every screen background to solid white.

Inputs: projectId (required), locale, background, textUpdates, +1 more.

estimate_translationA

Estimate AI credit cost before translating listing copy and/or screen text. Always call this before translate_project when credits matter.

Inputs: projectId (required), toLanguage (required), fromLanguage (required), screens, +4 more.

get_ai_creditsA

Check AI credit balance and whether translation is available.

Inputs: no named parameters.

get_app_store_push_jobB

Get status of an App Store push job. Optionally wait until it completes.

Inputs: jobId (required), projectId (required), wait.

get_google_play_push_jobC

Get status of a Google Play push job. Optionally wait until it completes.

Inputs: jobId (required), projectId (required), wait.

get_listingB

Get store listing / ASO text for a project in one locale.

Inputs: locale (required), projectId (required).

get_screen_imagesA

Return raw app screenshot images (device layer assets) as vision input for the host AI. Use with your client vision to read UI content, then call update_screen_text. Also returns a JSON index mapping images to screen indices.

Inputs: projectId (required), locale, screenIndices.

list_store_languagesC

List active and available store languages for a project.

Inputs: projectId (required).

preview_google_play_pushA

Review what would be pushed to Google Play — blockers, warnings, locale plans, and optional remote diff. Call before push_to_google_play.

Inputs: projectId (required), locales, displaySlots, includeAppIcon, +3 more.

push_to_google_playA

Enqueue a Google Play push (listing, screenshots, app icon). Requires Premium/Pro and a linked app. Call preview_google_play_push first.

Inputs: projectId (required), wait, locales, displaySlots, +4 more.

update_listingC

Update store listing / ASO text for a project in one language.

Inputs: locale (required), projectId (required), appName, keywords, +6 more.

update_screen_designC

Update one screen design — background color/gradient and/or multiple text layers at once.

Inputs: projectId (required), screenIndex (required), locale, background, +1 more.

update_screen_textA

Update the marketing headline/body text on one screen (template text layer, not in-app UI text). Preserves template highlight styling (italic accent, pill) when the layer uses runs — call get_screens to see highlightStyle/templateHighlight. Optionally pass highlightPhrase to control which word gets the accent (e.g. "workouts" or "#habits").

Inputs: text (required), layerId (required), projectId (required), screenIndex (required), +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 15 tools

    Disambiguation5/5

    Each tool targets a distinct action: Google Play push lifecycle (preview, push, status, link), screen content (images, text, design), store listings (languages, listing text), and auxiliary (credits, translation estimation). No two tools share the same purpose.

    Naming Consistency4/5

    Tools follow a consistent verb_noun snake_case pattern (e.g., push_to_google_play, update_screen_text). Minor inconsistencies: some tools use 'get' vs 'list' (get_google_play_link vs list_store_languages), and 'bulk_update_designs' deviates slightly from the verb_noun structure.

    Tool Count5/5

    15 tools is appropriate for a store management server. Each tool serves a specific function without being overwhelming or insufficient.

    Completeness3/5

    Covers core workflows for Google Play push, screen editing, and listing management. Notable gaps: no App Store push initiation (only status), no actual translation tool (only estimation), and no tool to delete screens or manage screens beyond design/ text.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      F
      maintenance
      Enables AI agents to manage App Store Connect apps, including registering bundle IDs, uploading metadata and screenshots, setting age ratings, managing TestFlight groups and testers, and submitting apps for review.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Provides AI assistants direct access to Apple's App Store Connect API, enabling them to manage apps, provisioning data, TestFlight builds, and App Store versions, including creating versions, attaching builds, and submitting for review.
      14
      MIT