Skip to content

Commit 8d85ce4

Browse files
v1.12.0: app preview videos + auto-snapshot safety net
Add app preview (video) tools (list/get/create-set/upload/delete) and preview backup/restore (includePreviews + restore_app_previews). Add APPSTORE_MCP_AUTO_SNAPSHOT so the server snapshots text metadata before the first listing edit — making 'revert' reliable even without a manual snapshot. 80 tools.
1 parent b18e1ad commit 8d85ce4

8 files changed

Lines changed: 322 additions & 10 deletions

File tree

.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,5 @@ ASC_PRIVATE_KEY_PATH=/absolute/path/to/AuthKey_XXXXXXXXXX.p8
3333
# APPSTORE_MCP_ALLOW_EXTERNAL_TESTFLIGHT=false # block submit_beta_review
3434
# Optional: where metadata snapshots are written (default ~/.appstore-api-mcp/snapshots)
3535
# APPSTORE_MCP_SNAPSHOT_DIR=
36+
# Optional: auto-snapshot an app's text metadata before the first listing edit (a safety net for "revert")
37+
# APPSTORE_MCP_AUTO_SNAPSHOT=true

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@ All notable changes to this project are documented here. The format follows
44
[Keep a Changelog](https://keepachangelog.com/) and the project uses
55
[Semantic Versioning](https://semver.org/).
66

7+
## [1.12.0] - 2026-06-03
8+
9+
### Added
10+
- **App preview videos:** `list_app_preview_sets`, `list_app_previews`,
11+
`get_app_preview` (incl. `videoUrl`), `create_app_preview_set`,
12+
`upload_app_preview`, `delete_app_preview`. Snapshots can back up previews
13+
(`includePreviews:true`) and **`restore_app_previews`** re-uploads them.
14+
- **Auto-snapshot safety net:** `APPSTORE_MCP_AUTO_SNAPSHOT=true` makes the server
15+
save a text-metadata snapshot of an app before the **first** listing edit of the
16+
session — so "revert" works even if you forgot to snapshot. Plus a server-side
17+
habit nudge to snapshot before bulk/risky edits, and a revert recipe.
18+
719
## [1.11.0] - 2026-06-03
820

921
### Added

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,11 +261,12 @@ Full parameter reference: **[docs/TOOLS.md](docs/TOOLS.md)**.
261261
| `list_screenshot_sets` / `create_screenshot_set` | Manage per-device screenshot sets |
262262
| `list_screenshots` / `upload_screenshot` / `delete_screenshot` | Manage screenshots (upload handles the full reserve→upload→commit flow) |
263263
| `get_screenshot` | 👁️ Fetch a live screenshot **as an image the agent can see** — review/compare what's on a listing |
264+
| `list_app_preview_sets` / `list_app_previews` / `get_app_preview` / `create_app_preview_set` / `upload_app_preview` / `delete_app_preview` | 🎬 **App preview videos** — list, inspect (incl. `videoUrl`), upload, delete |
264265
| `audit_apps` | 🩺 **Fleet ASO audit** — scan all apps for missing subtitle/keywords/description, under-used keyword field, single-locale listings, missing screenshots. Read-only |
265266
| `apps_review_status` | 🗂️ **Fleet review board** — every app's current version + state (waiting / in-review / rejected / ready) in one call |
266267
| `submit_for_review` / `release_version` / `set_phased_release` | 🚀 Submit a version to Apple review (full flow), release an approved build, and control phased rollout |
267268
| `doctor` | 🩺 Diagnose setup: Node, creds, key works, role capabilities, vendor number, Mac build tools, write mode |
268-
| `snapshot_app_metadata` / `diff_app_metadata_snapshot` / `restore_app_metadata` / `restore_screenshots` | 💾 Back up / compare / restore an app's metadata. Text is always saved; pass `includeScreenshots:true` to also download the images so **deleted screenshots can be re-uploaded** |
269+
| `snapshot_app_metadata` / `diff_app_metadata_snapshot` / `restore_app_metadata` / `restore_screenshots` / `restore_app_previews` | 💾 Back up / compare / restore an app's metadata. Text always saved; `includeScreenshots:true` and `includePreviews:true` also download the images/videos so **deleted screenshots and previews can be re-uploaded**. Set `APPSTORE_MCP_AUTO_SNAPSHOT=true` to auto-snapshot text before the first edit |
269270
| `release_readiness_check` | ✅ One-call **go/no-go report** — build, metadata, ASO, screenshots, compliance, TestFlight, reviews |
270271
| `aso_opportunity_report` / `portfolio_growth_report` | 📈 Rank the easiest **ASO wins** across all apps; portfolio snapshot of units sold per app |
271272
| `add_build_to_beta_group` / `submit_beta_review` | ✈️ Assign a build to a TestFlight group; submit for beta review |

docs/RECIPES.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,22 @@ Uses: `get_app_store_version_localization`, `list_app_info_localizations`,
134134
`update_app_store_version_localization` (with `dryRun`),
135135
`bulk_update_version_localizations`, `aso_opportunity_report`.
136136

137-
## 7. Build & ship (Mac only)
137+
## 7. Safety net — snapshot before risky edits, then revert if needed
138+
139+
```text
140+
Before we change anything on AppName, take a full snapshot (include screenshots
141+
and previews). Then make the edits I describe. If I say "revert", restore the
142+
metadata, screenshots, and previews from that snapshot.
143+
```
144+
145+
Uses: `snapshot_app_metadata` (with `includeScreenshots:true` / `includePreviews:true`),
146+
then `restore_app_metadata` + `restore_screenshots` + `restore_app_previews`.
147+
148+
> Or set `APPSTORE_MCP_AUTO_SNAPSHOT=true` so the server auto-snapshots text
149+
> metadata before the first edit — then "revert" works even if you forgot to
150+
> snapshot. (Screenshots/previews still need the explicit include flags.)
151+
152+
## 8. Build & ship (Mac only)
138153

139154
```text
140155
Bump AppName's build number, archive it, and upload the new build to App Store

docs/TOOLS.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,29 @@ Re-upload screenshots from a snapshot that was taken with `includeScreenshots:tr
419419
- `replace` — delete the set's current screenshots first (true restore)
420420
- `dryRun` — preview what would be uploaded
421421

422+
### restore_app_previews
423+
Re-upload app preview **videos** from a snapshot taken with `includePreviews:true`.
424+
- `appId` **(required)**, `snapshotFile` **(required)**, `replace`, `dryRun`
425+
426+
> **Auto-snapshot:** set `APPSTORE_MCP_AUTO_SNAPSHOT=true` and the server saves a
427+
> text-metadata snapshot of an app before the **first** listing edit of the session
428+
> — a built-in safety net so you can always revert. (Screenshots/previews still
429+
> need `includeScreenshots` / `includePreviews` to be restorable.)
430+
431+
## App previews (video)
432+
433+
### list_app_preview_sets / list_app_previews / get_app_preview
434+
- sets: `localizationId`; previews: `previewSetId`; one preview: `previewId` (includes `videoUrl` when available).
435+
436+
### create_app_preview_set
437+
- `localizationId` **(required)**, `previewType` **(required)** (e.g. IPHONE_67).
438+
439+
### upload_app_preview
440+
- `previewSetId` **(required)**, `filePath` **(required)** (.mp4/.mov), `fileName`, `previewFrameTimeCode` (e.g. `00:00:05:00`).
441+
442+
### delete_app_preview
443+
- `previewId` **(required)**.
444+
422445
## Safe mode (guardrails)
423446

424447
Set these env vars to enforce limits at the **server** (blocked calls return a

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "appstore-api-mcp",
3-
"version": "1.11.0",
3+
"version": "1.12.0",
44
"description": "MCP server for Apple App Store Connect — edit listings (keywords, descriptions, titles, screenshots), track analytics (downloads, proceeds, subscriptions, retention), run a fleet-wide ASO audit, preview changes with dry-run, and reach the full API. Works with any MCP client (Claude, Codex, Cursor, Windsurf, VS Code, Zed, Gemini CLI, Antigravity, Amazon Q, Goose, and more).",
55
"type": "module",
66
"bin": {

src/guardrails.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ export const WRITE_TOOLS = new Set([
1414
"create_screenshot_set",
1515
"upload_screenshot",
1616
"delete_screenshot",
17+
// app previews (video)
18+
"create_app_preview_set",
19+
"upload_app_preview",
20+
"delete_app_preview",
21+
"restore_app_previews",
1722
// reviews
1823
"reply_to_customer_review",
1924
// testflight

0 commit comments

Comments
 (0)