Connect an AI assistant to Storevisor
Storevisor is a remote MCP server. An AI assistant that supports remote MCP servers (custom connectors) reaches the 35 tools below, on the data of one workspace you choose.
Before you start
Create an account (an e-mail address and a password; it costs nothing today), create a workspace, and connect your stores on the Connections page.
Connect with OAuth (Claude, ChatGPT and other MCP clients)
- Add a custom connector (remote MCP server) in your AI client and paste this URL:
https://storevisor.devino.ca/mcp - The client finds the sign-in on its own (OAuth 2.1 with PKCE; the server describes itself at
https://storevisor.devino.ca/.well-known/oauth-protected-resource, and client registration is open). Sign in to your Storevisor account in the window it opens. - Pick the workspace the assistant may use. One connection reaches one workspace.
- Approve. The approval page shows your account and the workspace. Reading is the default; making changes is a separate box, unticked unless you tick it.
- To disconnect, open the MCP & API page and press Disconnect. The assistant's next call fails.
Or use a workspace key
- For clients that send a header instead of signing in: create a key on the MCP & API page (read, or read and write; it is shown once) and send it as
Authorization: Bearer sws_…tohttps://storevisor.devino.ca/mcp. - The same tools over REST:
POST https://storevisor.devino.ca/api/tools/<tool name>with the tool's arguments as a JSON body and the same header. The API reference lists every tool's arguments. - Revoking the key on the MCP & API page stops it at once.
Writes: preview first, then confirm
- Every store write (listings, versions, App Review submissions, releases and rollouts) runs as a preview first. The answer shows what would change and carries a
confirm_token. Nothing reaches the store. - To apply it, repeat the same call with
apply: trueandconfirmToken. The token is single use, valid 10 minutes, and bound to you, the AI client, the tool and those exact arguments; changed arguments are refused and need a new preview. - Release steps (builds, versions, submissions, releases, rollouts, Microsoft submissions) also return
commit_args: the store state the preview saw. The commit repeats the arguments withcommit_argsmerged in; if the store changed since the preview, the commit is refused. - Write tools are listed only for a connection that was allowed to make changes (the "make changes" box at sign-in, or a read-and-write key). A read-only connection never sees them.
- The token proves that a preview of exactly those arguments ran. It is not a person's approval: your AI client decides whether to ask you before it calls a write tool.
A store you have not connected
Every tool is listed whether or not its store is connected. A tool whose store this workspace has not connected answers that the store must be connected first, and reads or changes nothing.
More guides
- Connect your stores: one guide per connection, with the key or role to create in each console and the errors the check can show.
- API reference: the REST endpoint, its OpenAPI document and every tool's arguments.
- Error codes: every refusal the MCP server and the API can answer, and what to do.
Tools (35)
14 read, 21 write. The same names and wording your AI client lists.
| Tool | What it does | Kind |
|---|---|---|
apple_listing_get | Apple: read the live App Store listing Reads the CURRENT App Store listing for an app straight from App Store Connect (not the warehouse cache): name, subtitle, keywords, description, promotional text, what's new, URLs, and a screenshot-set summary per… | read |
apple_cpp_list | Apple: list custom product pages Lists App Store custom product pages (CPPs) for an app, with their versions and states. | read |
apple_screenshots_get | Apple: read App Store screenshot sets Reads the screenshot sets live from App Store Connect for the EDITABLE App Store version when one exists (that is the only surface a write can touch), otherwise the live version. | read |
apple_release_status | Apple: release state (live / in review / waiting build) Reads the app's release pipeline live from App Store Connect: every App Store version (versionString, appVersionState, platform, createdDate, releaseType) with its attached build (version, processingState,… | read |
apple_builds_list | Apple: list TestFlight builds (newest first) Lists the newest TestFlight builds for an app live from App Store Connect: id, build_number (CFBundleVersion), pre_release_version (the marketing version), platform, processing_state, uploaded_at, expired,… | read |
apple_testflight_overview | Apple: TestFlight overview — beta groups, testers, builds in testing, tester feedback Reads an app's TestFlight state live from App Store Connect — the truthful, citable answer to App Review's "what beta testing did you do?": every beta group (name, internal / external, public link enabled + URL + limit,… | read |
play_listing_get | Play: get store listing Read a Google Play store listing live from androidpublisher (title, short/full description, video, image counts per type). | read |
play_listing_locales | Play: list every localized store listing Every localization of a Google Play store listing, live from androidpublisher edits.listings.list (language, title, shortDescription, fullDescription, video + character counts against Play's limits). | read |
play_app_details_get | Play: contact details + default language The app's store contact details (contactEmail, contactPhone, contactWebsite) and default language, live from androidpublisher edits.details through a throwaway edit that is always deleted. | read |
play_release_status | Play: release state per track Reads every Play track (internal, alpha, beta, production, custom) live from androidpublisher with its releases: status (draft | inProgress | halted | completed), name, versionCodes, userFraction for staged rollouts,… | read |
ms_listing_get | Microsoft Store listing (live) Live Partner Center listing for an app: description, short description, features, search terms, image slots. | read |
ms_release_status | Microsoft Store release state (live) Live Partner Center release state for an app: the last published submission and the pending one — status, statusDetails (errors, warnings, certification reports), targetPublishMode, and every package with its version,… | read |
release_status | Release state across stores (live) One compact row per app x store, read live: live_version, pending_version, pending_state, latest_build, blocked_reason (null when nothing waits on you). | read |
review_watch_status | App Review check state (no store call) What this workspace's App Review check saw on its last run, read from its saved state: NO store call. | read |
apple_listing_update | Apple: update App Store listing metadata (gated) Proposes a listing metadata change. ALWAYS snapshots the current listing first and records the change in listing_changes. | write |
apple_cpp_create | Apple: create a custom product page (gated) Creates a custom product page with one localization (promotional text only — screenshots are out of scope in this version). | write |
apple_screenshot_delete | Apple: delete an App Store screenshot (gated) Deletes one screenshot from a display-type set on the EDITABLE App Store version's localization. | write |
apple_screenshots_copy | Apple: copy one localization's screenshots to another (gated) Copies the screenshot sets of `from_locale` onto `to_locale` of the SAME platform's EDITABLE App Store version (every display type, or only `display_types`). | write |
apple_cloud_workflow_update | Apple: make an Xcode Cloud workflow archive a platform for the App Store (gated) Adds an APP_STORE_ELIGIBLE ARCHIVE action for a platform to an Xcode Cloud workflow (default "Release (tag)"), or lifts an existing archive of that platform to APP_STORE_ELIGIBLE — the way to get macOS builds of a Mac… | write |
apple_cloud_build_create | Apple: start an Xcode Cloud release build (gated) Starts ONE Xcode Cloud build of the app's store-eligible workflow on a branch or tag — the way to get a build App Review accepts without a Mac. | write |
apple_version_submit | Apple: submit a prepared version for review (gated) Submits an EXISTING App Store version for App Review — attaches nothing new. | write |
apple_version_release | Apple: release an approved version that waits on a manual release (gated) Releases an App Store version that App Review has ALREADY approved and that waits on the developer (appVersionState PENDING_DEVELOPER_RELEASE — a version created with release_type MANUAL). | write |
apple_submission_cancel | Apple: withdraw a version from App Review / cancel a review submission (gated) Cancels ONE open review submission of a platform — App Store Connect's "Remove from Review" / "Cancel Submission" — with PATCH /v1/reviewSubmissions/{id} {canceled:true}. | write |
apple_version_create | Apple: create the next App Store version (gated) Creates the NEXT App Store version (PREPARE_FOR_SUBMISSION) for a platform and optionally attaches a TestFlight build to it (ids from apple_builds_list). | write |
apple_version_build_attach | Apple: attach a TestFlight build to the editable version (gated) Attaches (or replaces) the TestFlight build on the EDITABLE App Store version of a platform (PREPARE_FOR_SUBMISSION / *_REJECTED) — the step between apple_version_create and apple_version_submit. | write |
apple_app_setup_update | Apple: first-release App Store setup — content rights, free price, privacy URL, copyright, App Review details (gated) Sets the first-release fields App Review refuses a submission without, through App Store Connect's public API: content_rights_declaration (PATCH /v1/apps), price: "free" (POST /v1/appPriceSchedules, base territory USA,… | write |
play_listing_update | Play: update store listing, or add a new language (gated) Change Play listing text, or CREATE a localization by passing a `locale` the listing does not have yet together with `create_locale: true` (then title, shortDescription and fullDescription are all required — Play… | write |
play_app_details_update | Play: set contact details / default language (gated) Sets the store contact e-mail, phone, website and/or default language (a Play dashboard setup task) through edits.details. | write |
play_data_safety_update | Play: replace the Data safety declaration (gated) Replaces the app's whole Data safety declaration through applications.dataSafety, using the CSV format Play Console exports (App content → Data safety → Export to CSV; columns Question ID / Response ID / Response value… | write |
play_release_promote | Play: promote a release to another track (gated) Promotes the latest completed (else in-progress) release of `from_track` onto `to_track` via edits.tracks.update + edits.commit. | write |
play_rollout_update | Play: change or halt a staged rollout (gated) Moves a track's staged rollout: `user_fraction` raises it (Play never lets a fraction go down; 1 completes the rollout), `halt: true` halts it. | write |
ms_listing_update | Microsoft Store listing update (gated write) Propose a Microsoft Store listing change. | write |
ms_submission_create | Microsoft Store: create a pending submission (gated) Creates a new pending submission on an app, cloned from the last published one (POST /submissions) — the first step of a release: create, upload the package (package upload is not in the cloud yet), then… | write |
ms_submission_commit | Microsoft Store: commit the pending submission (gated) Commits the app's pending submission (POST /submissions/{id}/commit): Partner Center then runs pre-processing and certification, and publishes per the submission's targetPublishMode (a Manual mode still needs a human… | write |
ms_submission_delete | Microsoft Store: delete the pending submission (gated) Deletes the app's pending submission (DELETE /submissions/{id}) — the last published submission is untouched. | write |
Not in the cloud yet
- Changes from the web pages: the release board reads the stores; every change (submit, release, roll out, edit a listing) is made from your AI app or the API, preview first.
- Uploading builds (.ipa, .pkg, .aab, Microsoft Store packages), screenshots or App Review attachments.
- Replying in the App Store Resolution Center and editing the App Privacy label (both need an Apple web session).