@appscreenshotstudio/mcp 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,227 +1,228 @@
1
- # @appscreenshotstudio/mcp
2
-
3
- MCP server for generating App Store screenshots via [AppScreenshotStudio](https://appscreenshotstudio.com).
4
-
5
- Let your AI agent (Claude Code, Cursor, Windsurf) generate, edit, and export App Store screenshots as a native tool.
6
-
7
- ## Setup
8
-
9
- ### 1. Get an API key
10
-
11
- Create one at [appscreenshotstudio.com/settings](https://appscreenshotstudio.com/settings) under **API Keys**.
12
-
13
- ### 2. Install
14
-
15
- **Claude Code:**
16
-
17
- ```bash
18
- claude mcp add appscreenshotstudio -- npx -y @appscreenshotstudio/mcp
19
- ```
20
-
21
- Then add to your shell profile (`.bashrc`, `.zshrc`, etc.):
22
-
23
- ```bash
24
- export APPSCREENSHOTSTUDIO_API_KEY="sk_live_your_key_here"
25
- ```
26
-
27
- **Cursor / Windsurf / Other MCP clients:**
28
-
29
- Add to your MCP config (`.cursor/mcp.json`, `settings.json`, etc.):
30
-
31
- ```json
32
- {
33
- "mcpServers": {
34
- "appscreenshotstudio": {
35
- "command": "npx",
36
- "args": ["-y", "@appscreenshotstudio/mcp"],
37
- "env": {
38
- "APPSCREENSHOTSTUDIO_API_KEY": "sk_live_your_key_here"
39
- }
40
- }
41
- }
42
- }
43
- ```
44
-
45
- ## Tools
46
-
47
- ### `prepare-screenshot-brief`
48
-
49
- Get a research checklist and strategy guide before generating. Returns file patterns to search for across tech stacks, story flow recommendations per app category, headline tips, and the `codebase_context` schema to fill in.
50
-
51
- **Free — no API call or credits.**
52
-
53
- ### `generate-screenshots`
54
-
55
- Create a complete set of App Store screenshots. The agent researches your codebase first, then passes rich context for accurate, app-specific designs.
56
-
57
- | Parameter | Type | Required | Description |
58
- |---|---|---|---|
59
- | `app_name` | string | Yes | App name |
60
- | `app_description` | string | Yes | What the app does (1-3 sentences) |
61
- | `features` | string[] | No | Key features, ordered by importance (max 10) |
62
- | `brand_colors` | object | No | `{ primary, secondary?, accent? }` as hex |
63
- | `mood` | string | No | "energetic", "calm", "minimal", "bold", etc. |
64
- | `device_id` | string | No | Target device (default: `iphone-6.9`) |
65
- | `count` | number | No | Number of cards, 3-10 (default: 5) |
66
- | `story_flow` | string | No | Narrative structure (default: `auto`) |
67
- | `codebase_context` | object | No | App context from codebase research (see below) |
68
-
69
- **Costs 5 credits.**
70
-
71
- #### `codebase_context`
72
-
73
- Pass this for dramatically better screenshots. The context is persisted on the project and used in all subsequent chats.
74
-
75
- | Field | Description |
76
- |---|---|
77
- | `readme_summary` | App overview from README or docs |
78
- | `key_screens` | Main screens/views (e.g. "Dashboard", "Settings") |
79
- | `color_tokens` | Brand colors from theme files (e.g. `{ "primary": "#7C3AED" }`) |
80
- | `target_audience` | Who the app is for |
81
- | `app_category` | fitness, finance, social, productivity, etc. |
82
- | `competitive_edge` | What makes it unique |
83
- | `app_store_description` | Existing store listing if found |
84
- | `tech_stack` | React Native, SwiftUI, Flutter, etc. |
85
- | `ui_style` | "dark mode with neon accents", "clean minimal", etc. |
86
- | `primary_user_flow` | Main user journey through the app |
87
-
88
- ### `edit-screenshots`
89
-
90
- Make changes to an existing project with natural language. Optionally target specific cards.
91
-
92
- | Parameter | Type | Required | Description |
93
- |---|---|---|---|
94
- | `project_id` | string | Yes | From a previous `generate-screenshots` call |
95
- | `message` | string | Yes | What to change |
96
- | `card_indices` | number[] | No | Target specific cards by index (0-based). Omit to edit all. |
97
- | `codebase_context` | object | No | App context to enrich the edit (same schema as above) |
98
-
99
- **Costs 5 credits.**
100
-
101
- ### `upload-screenshots`
102
-
103
- Upload local app screenshots (from Simulator, emulator, or screen captures) into the device mockups of an existing project. Reads files from your local filesystem and places them into the device frames.
104
-
105
- | Parameter | Type | Required | Description |
106
- |---|---|---|---|
107
- | `project_id` | string | Yes | From a previous `generate-screenshots` call |
108
- | `screenshots` | array | Yes | Array of `{ file_path, card_index }` — maps local files to cards |
109
-
110
- Each item in `screenshots`:
111
-
112
- | Field | Type | Description |
113
- |---|---|---|
114
- | `file_path` | string | Absolute path to a local PNG, JPG, or WEBP file |
115
- | `card_index` | number | Which card to place this screenshot on (0-based) |
116
-
117
- **Free.**
118
-
119
- ### `render-screenshots`
120
-
121
- Export to high-resolution PNGs. Returns download URLs.
122
-
123
- | Parameter | Type | Required | Description |
124
- |---|---|---|---|
125
- | `project_id` | string | Yes | Project to render |
126
-
127
- **Free.**
128
-
129
- ### `get-project`
130
-
131
- Retrieve a project's current state — cards, elements, backgrounds, and metadata.
132
-
133
- | Parameter | Type | Required | Description |
134
- |---|---|---|---|
135
- | `project_id` | string | Yes | Project ID to retrieve |
136
-
137
- **Free.**
138
-
139
- ### `generate-background`
140
-
141
- Generate an AI background for a specific card. Uses project metadata (brand colors, mood, theme) for contextual results.
142
-
143
- | Parameter | Type | Required | Description |
144
- |---|---|---|---|
145
- | `project_id` | string | Yes | Project containing the card |
146
- | `card_index` | number | Yes | Which card (0-based) |
147
- | `prompt` | string | Yes | Description of the background |
148
-
149
- **Costs 6 credits.**
150
-
151
- ### `generate-panoramic-background`
152
-
153
- Generate one wide image and slice it across multiple cards so they read as a continuous scene in the App Store gallery. Use after a panoramic chat edit ("pano the background across cards 1-3") to fulfill the pending panoramic, or pass an explicit `prompt` / `pexels_query`.
154
-
155
- | Parameter | Type | Required | Description |
156
- |---|---|---|---|
157
- | `project_id` | string | Yes | Project containing the cards |
158
- | `prompt` | string | No | AI scene description (Gemini). Costs 6 credits. |
159
- | `pexels_query` | string | No | Stock photo search query (Pexels). Free. |
160
- | `card_indices` | number[] | No | Cards sharing the panoramic (0-based, min 2). Default: first 3. |
161
-
162
- Omit both `prompt` and `pexels_query` to fulfill a panoramic already set up by `generate-screenshots` / `edit-screenshots`.
163
-
164
- **Costs 6 credits (AI prompt) or free (Pexels query).**
165
-
166
- ### `list-devices`
167
-
168
- Show all supported device specs. No API call needed.
169
-
170
- **Free.**
171
-
172
- ## Claude Code Skill
173
-
174
- The MCP server auto-installs a Claude Code skill on first startup. The skill teaches Claude a structured research-first workflow for better screenshot results. You can also install it manually:
175
-
176
- ```bash
177
- npx @appscreenshotstudio/mcp install-skill
178
- ```
179
-
180
- Once installed, use `/appscreenshotstudio` in Claude Code or just ask "generate App Store screenshots for my app".
181
-
182
- ## Supported Devices
183
-
184
- | ID | Name | Size | Required |
185
- |---|---|---|---|
186
- | `iphone-6.9` | iPhone 16 Pro Max | 1260x2736 | App Store |
187
- | `iphone-6.3` | iPhone 17 Pro | 1206x2622 | Optional |
188
- | `ipad-13` | iPad Pro 13" | 2064x2752 | App Store |
189
- | `android-phone` | Android Phone | 1080x2340 | Play Store |
190
- | `android-tablet-10` | Android Tablet 7" | 1200x1920 | Play Store |
191
- | `android-tablet-large` | Android Tablet 10" | 1600x2560 | Play Store |
192
- | `apple-watch-ultra` | Apple Watch Ultra 2 | 410x502 | App Store |
193
-
194
- ## Design Features
195
-
196
- The AI generates professional screenshots using:
197
-
198
- - **94 shape types** (17 core + 77 decorative across 13 categories): nature (leaf, flower, tree), weather (cloud, sun, snowflake), celebration (sparkle, trophy, crown, confetti), social (chat-bubble, music-note), tech (rocket, code-bracket), health (dumbbell, flame), food (coffee-cup, pizza), travel (airplane, compass), finance (dollar-sign, piggy-bank), education (graduation-cap, lightbulb), pets (paw-print, cat-face), emoji (smiley, fire-emoji), abstract (swirl, infinity, gem)
199
- - **Rich text**: per-word color, bold, italic, underline, highlight pills (colored backgrounds behind words), gradient fills, text stroke outlines, emoji
200
- - **Compound trust signals**: statRow, laurelStat, starRating, quote, pressBanner. Auto-positioned per layout, and opt-in: supply the real figure or the card ships clean
201
- - **Background textures**: diagonal-stripe, crosshatch, checkerboard, zigzag, hairline-grid, dot-grid, waves, grain, radial-rays, concentric-circles. Ask for one explicitly; they are subtle by design and run continuously across the set.
202
- - **Frame color**: recolor the device frame `natural` (default), `black`, `white`, `gold`. Requires Growth plan or higher.
203
- - **Panoramics**: slice one wide image across cards (chat tags the cards, then `generate-panoramic-background` creates and slices the image) or stretch a foreground element across adjacent cards (`apply_element_span`). Gallery gutters are accounted for.
204
- - **9 device perspectives**: flat, left-15, left-30, right-15, right-30, isometric, top-down, landscape-left, landscape-right
205
- - **10 layouts**: `text-top-device-bottom`, `text-top-device-tilted`, `device-hero`, `social-proof`, `review-clip`, `screen-hero`, `lifestyle-hero`, `stats-hero`, `metric-badge`, `annotated-feature`. The AI varies `deviceScale`, `deviceSide`, `textPosition`, and `textAlign` per card so a set never looks like duplicates.
206
-
207
- ## Workflow
208
-
209
- 1. **Research** — Agent calls `prepare-screenshot-brief`, then searches your codebase for app name, features, colors, screens, and audience
210
- 2. **Generate** — Agent calls `generate-screenshots` with `codebase_context` for app-specific designs
211
- 3. **Iterate** — Agent calls `edit-screenshots` to refine (codebase context carries over automatically)
212
- 4. **Upload** — Agent calls `upload-screenshots` with local file paths to fill device mockups
213
- 5. **Export** — Agent calls `render-screenshots` or click "Download All" in the web app
214
-
215
- ## Security
216
-
217
- - API key stays on your machine (environment variable)
218
- - All API calls over HTTPS
219
- - stdio transport no network ports opened
220
- - Revoke keys anytime in Settings
221
-
222
- ## Links
223
-
224
- - [Screenshot API + MCP overview](https://appscreenshotstudio.com/api)
225
- - [Full docs](https://appscreenshotstudio.com/docs/mcp)
226
- - [REST API reference](https://appscreenshotstudio.com/docs/api)
227
- - [Pricing](https://appscreenshotstudio.com/pricing)
1
+ # @appscreenshotstudio/mcp
2
+
3
+ MCP server for generating App Store screenshots via [AppScreenshotStudio](https://appscreenshotstudio.com).
4
+
5
+ Let your AI agent (Claude Code, Cursor, Windsurf) generate, edit, and export App Store screenshots as a native tool.
6
+
7
+ ## Setup
8
+
9
+ ### 1. Get an API key
10
+
11
+ Create one at [appscreenshotstudio.com/settings](https://appscreenshotstudio.com/settings) under **API Keys**.
12
+
13
+ ### 2. Install
14
+
15
+ **Claude Code:**
16
+
17
+ ```bash
18
+ claude mcp add appscreenshotstudio -- npx -y @appscreenshotstudio/mcp
19
+ ```
20
+
21
+ Then add to your shell profile (`.bashrc`, `.zshrc`, etc.):
22
+
23
+ ```bash
24
+ export APPSCREENSHOTSTUDIO_API_KEY="sk_live_your_key_here"
25
+ ```
26
+
27
+ **Cursor / Windsurf / Other MCP clients:**
28
+
29
+ Add to your MCP config (`.cursor/mcp.json`, `settings.json`, etc.):
30
+
31
+ ```json
32
+ {
33
+ "mcpServers": {
34
+ "appscreenshotstudio": {
35
+ "command": "npx",
36
+ "args": ["-y", "@appscreenshotstudio/mcp"],
37
+ "env": {
38
+ "APPSCREENSHOTSTUDIO_API_KEY": "sk_live_your_key_here"
39
+ }
40
+ }
41
+ }
42
+ }
43
+ ```
44
+
45
+ ## Tools
46
+
47
+ ### `prepare-screenshot-brief`
48
+
49
+ Get a research checklist and strategy guide before generating. Returns file patterns to search for across tech stacks, story flow recommendations per app category, headline tips, and the `codebase_context` schema to fill in.
50
+
51
+ **Free — no API call or credits.**
52
+
53
+ ### `generate-screenshots`
54
+
55
+ Create a complete set of App Store screenshots. The agent researches your codebase first, then passes rich context for accurate, app-specific designs.
56
+
57
+ | Parameter | Type | Required | Description |
58
+ |---|---|---|---|
59
+ | `app_name` | string | Yes | App name |
60
+ | `app_description` | string | Yes | What the app does (1-3 sentences) |
61
+ | `features` | string[] | No | Key features, ordered by importance (max 10) |
62
+ | `brand_colors` | object | No | `{ primary, secondary?, accent? }` as hex |
63
+ | `mood` | string | No | "energetic", "calm", "minimal", "bold", etc. |
64
+ | `device_id` | string | No | Target device (default: `iphone-6.9`) |
65
+ | `count` | number | No | Number of cards, 3-10 (default: 5) |
66
+ | `story_flow` | string | No | Narrative structure (default: `auto`) |
67
+ | `codebase_context` | object | No | App context from codebase research (see below) |
68
+
69
+ **Costs 5 credits.**
70
+
71
+ #### `codebase_context`
72
+
73
+ Pass this for dramatically better screenshots. The context is persisted on the project and used in all subsequent chats.
74
+
75
+ | Field | Description |
76
+ |---|---|
77
+ | `readme_summary` | App overview from README or docs |
78
+ | `key_screens` | Main screens/views (e.g. "Dashboard", "Settings") |
79
+ | `color_tokens` | Brand colors from theme files (e.g. `{ "primary": "#7C3AED" }`) |
80
+ | `target_audience` | Who the app is for |
81
+ | `app_category` | fitness, finance, social, productivity, etc. |
82
+ | `competitive_edge` | What makes it unique |
83
+ | `app_store_description` | Existing store listing if found |
84
+ | `tech_stack` | React Native, SwiftUI, Flutter, etc. |
85
+ | `ui_style` | "dark mode with neon accents", "clean minimal", etc. |
86
+ | `primary_user_flow` | Main user journey through the app |
87
+
88
+ ### `edit-screenshots`
89
+
90
+ Make changes to an existing project with natural language. Optionally target specific cards.
91
+
92
+ | Parameter | Type | Required | Description |
93
+ |---|---|---|---|
94
+ | `project_id` | string | Yes | From a previous `generate-screenshots` call |
95
+ | `message` | string | Yes | What to change |
96
+ | `card_indices` | number[] | No | Target specific cards by index (0-based). Omit to edit all. |
97
+ | `codebase_context` | object | No | App context to enrich the edit (same schema as above) |
98
+
99
+ **Costs 5 credits.**
100
+
101
+ ### `upload-screenshots`
102
+
103
+ Upload local app screenshots (from Simulator, emulator, or screen captures) into the device mockups of an existing project. Reads files from your local filesystem and places them into the device frames.
104
+
105
+ | Parameter | Type | Required | Description |
106
+ |---|---|---|---|
107
+ | `project_id` | string | Yes | From a previous `generate-screenshots` call |
108
+ | `screenshots` | array | Yes | Array of `{ file_path, card_index }` — maps local files to cards |
109
+
110
+ Each item in `screenshots`:
111
+
112
+ | Field | Type | Description |
113
+ |---|---|---|
114
+ | `file_path` | string | Absolute path to a local PNG, JPG, or WEBP file |
115
+ | `card_index` | number | Which card to place this screenshot on (0-based) |
116
+
117
+ **Free.**
118
+
119
+ ### `render-screenshots`
120
+
121
+ Export to high-resolution PNGs. Returns download URLs.
122
+
123
+ | Parameter | Type | Required | Description |
124
+ |---|---|---|---|
125
+ | `project_id` | string | Yes | Project to render |
126
+
127
+ **Free.**
128
+
129
+ ### `get-project`
130
+
131
+ Retrieve a project's current state — cards, elements, backgrounds, and metadata.
132
+
133
+ | Parameter | Type | Required | Description |
134
+ |---|---|---|---|
135
+ | `project_id` | string | Yes | Project ID to retrieve |
136
+
137
+ **Free.**
138
+
139
+ ### `generate-background`
140
+
141
+ Generate an AI background for a specific card. Uses project metadata (brand colors, mood, theme) for contextual results.
142
+
143
+ | Parameter | Type | Required | Description |
144
+ |---|---|---|---|
145
+ | `project_id` | string | Yes | Project containing the card |
146
+ | `card_index` | number | Yes | Which card (0-based) |
147
+ | `prompt` | string | Yes | Description of the background |
148
+
149
+ **Costs 6 credits.**
150
+
151
+ ### `generate-panoramic-background`
152
+
153
+ Generate one wide image and slice it across multiple cards so they read as a continuous scene in the App Store gallery. Use after a panoramic chat edit ("pano the background across cards 1-3") to fulfill the pending panoramic, or pass an explicit `prompt` / `pexels_query`.
154
+
155
+ | Parameter | Type | Required | Description |
156
+ |---|---|---|---|
157
+ | `project_id` | string | Yes | Project containing the cards |
158
+ | `prompt` | string | No | AI scene description (Gemini). Costs 6 credits. |
159
+ | `pexels_query` | string | No | Stock photo search query (Pexels). Free. |
160
+ | `card_indices` | number[] | No | Cards sharing the panoramic (0-based, min 2). Default: first 3. |
161
+
162
+ Omit both `prompt` and `pexels_query` to fulfill a panoramic already set up by `generate-screenshots` / `edit-screenshots`.
163
+
164
+ **Costs 6 credits (AI prompt) or free (Pexels query).**
165
+
166
+ ### `list-devices`
167
+
168
+ Show all supported device specs. No API call needed.
169
+
170
+ **Free.**
171
+
172
+ ## Claude Code Skill
173
+
174
+ The MCP server auto-installs a Claude Code skill on first startup. The skill teaches Claude a structured research-first workflow for better screenshot results. You can also install it manually:
175
+
176
+ ```bash
177
+ npx @appscreenshotstudio/mcp install-skill
178
+ ```
179
+
180
+ Once installed, use `/appscreenshotstudio` in Claude Code or just ask "generate App Store screenshots for my app".
181
+
182
+ ## Supported Devices
183
+
184
+ | ID | Name | Size | Required |
185
+ |---|---|---|---|
186
+ | `iphone-6.9` | iPhone 16 Pro Max | 1260x2736 | App Store |
187
+ | `iphone-6.3` | iPhone 17 Pro | 1206x2622 | Optional |
188
+ | `ipad-13` | iPad Pro 13" | 2064x2752 | App Store |
189
+ | `android-phone` | Android Phone | 1080x2340 | Play Store |
190
+ | `pixel-11-pro` | Google Pixel 11 Pro | 1280x2856 | Play Store |
191
+ | `android-tablet-10` | Android Tablet 7" | 1200x1920 | Play Store |
192
+ | `android-tablet-large` | Android Tablet 10" | 1600x2560 | Play Store |
193
+ | `apple-watch-ultra` | Apple Watch Ultra 2 | 410x502 | App Store |
194
+
195
+ ## Design Features
196
+
197
+ The AI generates professional screenshots using:
198
+
199
+ - **94 shape types** (17 core + 77 decorative across 13 categories): nature (leaf, flower, tree), weather (cloud, sun, snowflake), celebration (sparkle, trophy, crown, confetti), social (chat-bubble, music-note), tech (rocket, code-bracket), health (dumbbell, flame), food (coffee-cup, pizza), travel (airplane, compass), finance (dollar-sign, piggy-bank), education (graduation-cap, lightbulb), pets (paw-print, cat-face), emoji (smiley, fire-emoji), abstract (swirl, infinity, gem)
200
+ - **Rich text**: per-word color, bold, italic, underline, highlight pills (colored backgrounds behind words), gradient fills, text stroke outlines, emoji
201
+ - **Compound trust signals**: statRow, laurelStat, starRating, quote, pressBanner, credential, guarantee. Auto-positioned per layout, and opt-in: supply the real figure or the card ships clean
202
+ - **Background textures**: diagonal-stripe, crosshatch, checkerboard, zigzag, hairline-grid, dot-grid, waves, grain, radial-rays, concentric-circles. Ask for one explicitly; they are subtle by design and run continuously across the set.
203
+ - **Frame color**: recolor the device frame `natural` (default), `black`, `white`, `gold`. Requires Growth plan or higher.
204
+ - **Panoramics**: slice one wide image across cards (chat tags the cards, then `generate-panoramic-background` creates and slices the image) or stretch a foreground element across adjacent cards (`apply_element_span`). Gallery gutters are accounted for.
205
+ - **9 device perspectives**: flat, left-15, left-30, right-15, right-30, isometric, top-down, landscape-left, landscape-right
206
+ - **10 layouts**: `text-top-device-bottom`, `text-top-device-tilted`, `device-hero`, `social-proof`, `review-clip`, `screen-hero`, `lifestyle-hero`, `stats-hero`, `metric-badge`, `annotated-feature`. The AI varies `deviceScale`, `deviceSide`, `textPosition`, and `textAlign` per card so a set never looks like duplicates.
207
+
208
+ ## Workflow
209
+
210
+ 1. **Research** — Agent calls `prepare-screenshot-brief`, then searches your codebase for app name, features, colors, screens, and audience
211
+ 2. **Generate** — Agent calls `generate-screenshots` with `codebase_context` for app-specific designs
212
+ 3. **Iterate** — Agent calls `edit-screenshots` to refine (codebase context carries over automatically)
213
+ 4. **Upload** — Agent calls `upload-screenshots` with local file paths to fill device mockups
214
+ 5. **Export** — Agent calls `render-screenshots` or click "Download All" in the web app
215
+
216
+ ## Security
217
+
218
+ - API key stays on your machine (environment variable)
219
+ - All API calls over HTTPS
220
+ - stdio transport no network ports opened
221
+ - Revoke keys anytime in Settings
222
+
223
+ ## Links
224
+
225
+ - [Screenshot API + MCP overview](https://appscreenshotstudio.com/api)
226
+ - [Full docs](https://appscreenshotstudio.com/docs/mcp)
227
+ - [REST API reference](https://appscreenshotstudio.com/docs/api)
228
+ - [Pricing](https://appscreenshotstudio.com/pricing)
package/dist/index.js CHANGED
@@ -29,12 +29,15 @@ const API_BASE = process.env.APPSCREENSHOTSTUDIO_URL || 'https://appscreenshotst
29
29
  const API_KEY = process.env.APPSCREENSHOTSTUDIO_API_KEY;
30
30
  // ─── Devices (mirrors lib/device-specs.ts) ─────────────────────────────────────
31
31
  // ⚠️ Keep in sync: lib/device-specs.ts, mcp-server/README.md, docs/api page, docs/mcp page,
32
- // mcp-server/skills/appscreenshotstudio/SKILL.md (ships in the npm package, so it drifts unseen)
32
+ // mcp-server/skills/appscreenshotstudio/SKILL.md (ships in the npm package, so it drifts unseen),
33
+ // public/api-docs.md (served raw at /api-docs.md, linked from nowhere, so it drifts unseen too)
34
+ // Enforced by `npm run test:device-specs`, which reads all six files.
33
35
  const DEVICES = [
34
36
  { id: 'iphone-6.9', name: 'iPhone 16 Pro Max', width: 1260, height: 2736, category: 'iphone', required: true },
35
37
  { id: 'iphone-6.3', name: 'iPhone 17 Pro', width: 1206, height: 2622, category: 'iphone', required: false },
36
38
  { id: 'ipad-13', name: 'iPad Pro 13"', width: 2064, height: 2752, category: 'ipad', required: true },
37
39
  { id: 'android-phone', name: 'Android Phone', width: 1080, height: 2340, category: 'android-phone', required: true },
40
+ { id: 'pixel-11-pro', name: 'Google Pixel 11 Pro', width: 1280, height: 2856, category: 'android-phone', required: false },
38
41
  { id: 'android-tablet-10', name: 'Android Tablet 7"', width: 1200, height: 1920, category: 'android-tablet', required: true },
39
42
  { id: 'android-tablet-large', name: 'Android Tablet 10"', width: 1600, height: 2560, category: 'android-tablet', required: false },
40
43
  { id: 'apple-watch-ultra', name: 'Apple Watch Ultra 2', width: 410, height: 502, category: 'apple-watch', required: true },
@@ -194,41 +197,43 @@ const chatImagesSchema = z.array(z.object({
194
197
  // ─── MCP Server ─────────────────────────────────────────────────────────────────
195
198
  const server = new McpServer({
196
199
  name: 'appscreenshotstudio',
197
- version: '0.6.1',
200
+ // Keep in step with package.json: this is the version a client sees in the
201
+ // MCP handshake, and it silently sat at 0.6.1 through the 0.6.2 release.
202
+ version: '0.6.3',
198
203
  });
199
204
  // Tool 1: generate-screenshots
200
205
  server.registerTool('generate-screenshots', {
201
206
  title: 'Generate App Store Screenshots',
202
- description: `Create a complete set of App Store screenshot designs for an app. Attach real app screenshots via the images param and they are placed inside the device frames automatically; attach a mascot/character image (kind: "mascot", transparent PNG) and it gets placed around the phones. Returns a project URL where the developer can preview, refine, and export final PNGs.
203
-
204
- IMPORTANT: Before calling this tool, research the user's codebase to populate the codebase_context parameter. Search for: package.json/README (app name & description), theme/color config files (brand colors), route definitions (key screens), marketing copy (value proposition), and App Store metadata. The more context you provide, the better the screenshots will be. Call prepare-screenshot-brief first if you need a research checklist.
205
-
206
- The AI picks a narrative arc that fits the app's sell angle (trust-first for finance/health, visual-first for creative/lifestyle, problem-first for pain-relief apps, numbers-led for SaaS/analytics, community-first for social, feature-forward for multi-mode apps) and assigns a job to each card: HOOK → EDUCATE → PROVE → CONVERT.
207
-
208
- 13 layout types available per card:
209
- - text-top-device-bottom: headline top, flat device bottom (feature/educate)
210
- - text-top-device-tilted: headline left, tilted device right (or mirrored)
211
- - device-hero: headline + large centered device, product-forward
212
- - social-proof: stars + quote + laurel stat, no device (testimonial-led)
213
- - review-clip: rating-statement headline + stars + quote + bottom-clipped device
214
- - screen-hero: top-clipped device + centered headline + optional trust stat
215
- - lifestyle-hero: full-bleed photo background + text overlay (no device)
216
- - stats-hero: giant centered stat(s), no device, numbers-led
217
- - metric-badge: centered device + chunky "achievement card" floating over its screen
218
- - annotated-feature: tilted device + side callout chip linked by a connector line
219
-
220
- Each card can carry auto-positioned compound fields: statRow, laurelStat, pressBanner, starRating, quote. Trust signals are opt-in: supply the real number, quote or press name, or the card ships clean rather than inventing one.
221
-
222
- Panoramic backgrounds slice one wide AI-generated or Pexels image across multiple cards for cohesion. Panoramic element spans stretch a foreground image or device across adjacent cards. Note: if the design comes back with a panoramic background, the chat only tags the cards; call generate-panoramic-background afterwards to actually create and slice the wide image.
223
-
224
- Design features:
225
- - Rich text with per-word color, weight, italic, underline, highlight pills, gradient fills, stroke outlines, and emoji
226
- - Device perspective variants: flat, left-15/30, right-15/30, isometric, top-down, landscape
227
- - 77 decorative shapes across 13 categories (nature, weather, celebration, social, tech, health, food, travel, abstract, finance, education, pets, emoji), plus 17 core geometric shapes
228
- - Laurel stats: wing-left + wing-right shapes flanking a hero number
229
-
230
- App Store 60/40 rule enforced: minimum 60% of cards must show a device mockup, maximum 40% can be marketing-only.
231
-
207
+ description: `Create a complete set of App Store screenshot designs for an app. Attach real app screenshots via the images param and they are placed inside the device frames automatically; attach a mascot/character image (kind: "mascot", transparent PNG) and it gets placed around the phones. Returns a project URL where the developer can preview, refine, and export final PNGs.
208
+
209
+ IMPORTANT: Before calling this tool, research the user's codebase to populate the codebase_context parameter. Search for: package.json/README (app name & description), theme/color config files (brand colors), route definitions (key screens), marketing copy (value proposition), and App Store metadata. The more context you provide, the better the screenshots will be. Call prepare-screenshot-brief first if you need a research checklist.
210
+
211
+ The AI picks a narrative arc that fits the app's sell angle (trust-first for finance/health, visual-first for creative/lifestyle, problem-first for pain-relief apps, numbers-led for SaaS/analytics, community-first for social, feature-forward for multi-mode apps) and assigns a job to each card: HOOK → EDUCATE → PROVE → CONVERT.
212
+
213
+ 10 layout types available per card:
214
+ - text-top-device-bottom: headline top, flat device bottom (feature/educate)
215
+ - text-top-device-tilted: headline left, tilted device right (or mirrored)
216
+ - device-hero: headline + large centered device, product-forward
217
+ - social-proof: stars + quote + laurel stat, no device (testimonial-led)
218
+ - review-clip: rating-statement headline + stars + quote + bottom-clipped device
219
+ - screen-hero: top-clipped device + centered headline + optional trust stat
220
+ - lifestyle-hero: full-bleed photo background + text overlay (no device)
221
+ - stats-hero: giant centered stat(s), no device, numbers-led
222
+ - metric-badge: centered device + chunky "achievement card" floating over its screen
223
+ - annotated-feature: tilted device + side callout chip linked by a connector line
224
+
225
+ Each card can carry auto-positioned compound fields: statRow, laurelStat, pressBanner, starRating, quote, credential ("FDIC insured"-style trust pills), guarantee ("Cancel anytime"-style risk-reversal pills). Trust signals are opt-in: supply the real number, quote or press name, or the card ships clean rather than inventing one.
226
+
227
+ Panoramic backgrounds slice one wide AI-generated or Pexels image across multiple cards for cohesion. Panoramic element spans stretch a foreground image or device across adjacent cards. Note: if the design comes back with a panoramic background, the chat only tags the cards; call generate-panoramic-background afterwards to actually create and slice the wide image.
228
+
229
+ Design features:
230
+ - Rich text with per-word color, weight, italic, underline, highlight pills, gradient fills, stroke outlines, and emoji
231
+ - Device perspective variants: flat, left-15/30, right-15/30, isometric, top-down, landscape
232
+ - 77 decorative shapes across 13 categories (nature, weather, celebration, social, tech, health, food, travel, abstract, finance, education, pets, emoji), plus 17 core geometric shapes
233
+ - Laurel stats: wing-left + wing-right shapes flanking a hero number
234
+
235
+ App Store 60/40 rule enforced: minimum 60% of cards must show a device mockup, maximum 40% can be marketing-only.
236
+
232
237
  Costs 5 credits per generation.`,
233
238
  inputSchema: z.object({
234
239
  app_name: z.string().describe('Name of the app'),
@@ -345,44 +350,44 @@ Costs 5 credits per generation.`,
345
350
  // Tool 2: edit-screenshots
346
351
  server.registerTool('edit-screenshots', {
347
352
  title: 'Edit Screenshot Designs',
348
- description: `Make changes to an existing screenshot project. Use natural language to describe what you want to change. Costs 5 credits per edit. You can also attach images: app screenshots fill the device frames of regenerated cards, a mascot (kind: "mascot") gets placed around the phones.
349
-
350
- What you can change:
351
- - Text: headlines, subtitles, badge text, font size, font family (Inter, Poppins, Montserrat, DM Sans, Space Grotesk, etc.)
352
- - Text styling: per-word color, bold, italic, underline, highlight pills (colored background behind words), gradient text, text stroke outlines
353
- - Colors: brand palette, gradient backgrounds, accent colors, text colors. A set can rotate MULTIPLE accents card by card ("pink, then coral, then brick") and each card keeps its own highlight colour.
354
- - Background textures (ask for one explicitly, they are never added on their own): diagonal-stripe, crosshatch, checkerboard, zigzag, hairline-grid, dot-grid, waves, grain, radial-rays, concentric-circles. Kept subtle by design so they cannot affect headline contrast. Tiled textures run continuously across the whole set; radial-rays and concentric-circles can be centred on the middle of the set so the pattern fans out across every card.
355
- - Layouts (10 types): text-top-device-bottom, text-top-device-tilted, device-hero, social-proof, review-clip, screen-hero, lifestyle-hero, stats-hero, metric-badge, annotated-feature. The AI picks a narrative arc (HOOK → EDUCATE → PROVE → CONVERT) across the set.
356
- - Layout params: deviceScale (small/medium/large), deviceSide (left/right), textPosition (above/below), textAlign (left/center)
357
- - Device mockups: perspective variants (flat, left-15, right-15, left-30, right-30, isometric, top-down, landscape-left, landscape-right), 2D rotation, resize, reposition
358
- - Frame color: recolor the device frame — "natural" (default), "black", "white", "gold". Examples: "make the iPhone gold", "black titanium finish", "white iPhone". Requires Growth plan or higher.
359
- - Switch devices: "make this for Apple Watch" / "duplicate for Android tablet" clones the project at the target device's canvas size
360
- - Add/remove cards: add a social proof card, remove card 3, add a marketing title card
361
- - Compound fields (auto-positioned): statRow, laurelStat, pressBanner, starRating, quote, featureGrid, beforeAfterSplit, stepList
362
- - Panoramic backgrounds: one wide AI or Pexels image sliced across multiple cards ("pano the background across cards 1-3"). The edit only tags the cards; call generate-panoramic-background afterwards to create and slice the wide image.
363
- - Panoramic element spans: stretch a foreground image, device-mockup, or shape across adjacent cards ("pano the device across cards 1-2")
364
- - Floating elements: add/edit badges, star ratings
365
- - Shapes: glow orbs, waves, blobs, rounded rectangles, circles, custom SVG paths
366
- - Decorative shapes: 77 library shapes — leaf, flower, cloud, sparkle, heart, rocket, trophy, crown, coffee-cup, airplane, dollar-sign, paw-print, wing-left/wing-right (for laurels), and many more
367
- - Backgrounds: solid, subtle-gradient, rich-gradient, photo (Pexels), or ai-generated; change gradient colors/angle; set a backgroundPrompt for AI-generated
368
- - Style: shadows, opacity, border radius, rotation, blur
369
-
370
- What isn't supported (the AI will flag these in unsupportedAsks):
371
- - Multiple devices side-by-side in a single card (e.g. iPhone + Watch in one scene) — each card renders one device. Use the duplicate-for-device workflow instead, or split across cards.
372
- - Uploading a specific user-supplied screenshot into a mockup — use upload-screenshots tool first, then reference the uploaded project.
373
-
374
- Example edit messages:
375
- - "Make the headlines larger and use Bebas Neue font"
376
- - "Change the color scheme to blue (#2563EB) across all cards"
377
- - "Add a social proof card with 5 stars and a testimonial quote"
378
- - "Tilt the phone on card 2 to the left"
379
- - "Pano the background photo across cards 1-3"
380
- - "Stretch the device on card 1 across into card 2"
381
- - "Make this project for Apple Watch"
382
- - "Recolor the iPhone frame to gold across all cards"
383
- - "Replace card 3 with a CTA card saying Download Free"
384
- - "Switch card 2 to device-hero layout with statRow showing our three key metrics"
385
- - "Add decorative leaf and sparkle shapes scattered in the background"
353
+ description: `Make changes to an existing screenshot project. Use natural language to describe what you want to change. Costs 5 credits per edit. You can also attach images: app screenshots fill the device frames of regenerated cards, a mascot (kind: "mascot") gets placed around the phones.
354
+
355
+ What you can change:
356
+ - Text: headlines, subtitles, badge text, font size, font family (Inter, Poppins, Montserrat, DM Sans, Space Grotesk, etc.)
357
+ - Text styling: per-word color, bold, italic, underline, highlight pills (colored background behind words), gradient text, text stroke outlines
358
+ - Colors: brand palette, gradient backgrounds, accent colors, text colors. A set can rotate MULTIPLE accents card by card ("pink, then coral, then brick") and each card keeps its own highlight colour.
359
+ - Background textures (ask for one explicitly, they are never added on their own): diagonal-stripe, crosshatch, checkerboard, zigzag, hairline-grid, dot-grid, waves, grain, radial-rays, concentric-circles. Kept subtle by design so they cannot affect headline contrast. Tiled textures run continuously across the whole set; radial-rays and concentric-circles can be centred on the middle of the set so the pattern fans out across every card.
360
+ - Layouts (10 types): text-top-device-bottom, text-top-device-tilted, device-hero, social-proof, review-clip, screen-hero, lifestyle-hero, stats-hero, metric-badge, annotated-feature. The AI picks a narrative arc (HOOK → EDUCATE → PROVE → CONVERT) across the set.
361
+ - Layout params: deviceScale (small/medium/large), deviceSide (left/right), textPosition (above/below), textAlign (left/center)
362
+ - Device mockups: perspective variants (flat, left-15, right-15, left-30, right-30, isometric, top-down, landscape-left, landscape-right), 2D rotation, resize, reposition
363
+ - Frame color: recolor the device frame — "natural" (default), "black", "white", "gold". Examples: "make the iPhone gold", "black titanium finish", "white iPhone". Requires Growth plan or higher.
364
+ - Switch devices: "make this for Apple Watch" / "duplicate for Android tablet" clones the project at the target device's canvas size
365
+ - Add/remove cards: add a social proof card, remove card 3, add a marketing title card
366
+ - Compound fields (auto-positioned): statRow, laurelStat, pressBanner, starRating, quote, credential, guarantee
367
+ - Panoramic backgrounds: one wide AI or Pexels image sliced across multiple cards ("pano the background across cards 1-3"). The edit only tags the cards; call generate-panoramic-background afterwards to create and slice the wide image.
368
+ - Panoramic element spans: stretch a foreground image, device-mockup, or shape across adjacent cards ("pano the device across cards 1-2")
369
+ - Floating elements: add/edit badges, star ratings
370
+ - Shapes: glow orbs, waves, blobs, rounded rectangles, circles, custom SVG paths
371
+ - Decorative shapes: 77 library shapes — leaf, flower, cloud, sparkle, heart, rocket, trophy, crown, coffee-cup, airplane, dollar-sign, paw-print, wing-left/wing-right (for laurels), and many more
372
+ - Backgrounds: solid, subtle-gradient, rich-gradient, photo (Pexels), or ai-generated; change gradient colors/angle; set a backgroundPrompt for AI-generated
373
+ - Style: shadows, opacity, border radius, rotation, blur
374
+
375
+ What isn't supported (the AI will flag these in unsupportedAsks):
376
+ - Multiple devices side-by-side in a single card (e.g. iPhone + Watch in one scene) — each card renders one device. Use the duplicate-for-device workflow instead, or split across cards.
377
+ - Uploading a specific user-supplied screenshot into a mockup — use upload-screenshots tool first, then reference the uploaded project.
378
+
379
+ Example edit messages:
380
+ - "Make the headlines larger and use Bebas Neue font"
381
+ - "Change the color scheme to blue (#2563EB) across all cards"
382
+ - "Add a social proof card with 5 stars and a testimonial quote"
383
+ - "Tilt the phone on card 2 to the left"
384
+ - "Pano the background photo across cards 1-3"
385
+ - "Stretch the device on card 1 across into card 2"
386
+ - "Make this project for Apple Watch"
387
+ - "Recolor the iPhone frame to gold across all cards"
388
+ - "Replace card 3 with a CTA card saying Download Free"
389
+ - "Switch card 2 to device-hero layout with statRow showing our three key metrics"
390
+ - "Add decorative leaf and sparkle shapes scattered in the background"
386
391
  - "Make 'Every' underlined and italic in the headline"`,
387
392
  inputSchema: z.object({
388
393
  project_id: z.string().describe('Project ID from a previous generate-screenshots call'),
@@ -531,14 +536,14 @@ server.registerTool('list-devices', {
531
536
  // Tool 5: get-project
532
537
  server.registerTool('get-project', {
533
538
  title: 'Get Project Details',
534
- description: `Retrieve the full state of a screenshot project, including all cards and their elements. Use this to inspect what was generated before making edits. Free — no credit cost.
535
-
536
- Returns the canvas state with:
537
- - cards[]: each card has an id, elements array, and optional background settings
538
- - Each element has: type (text, device-mockup, shape, badge, image, star-rating), position (x, y), size (width, height), zIndex, and type-specific properties
539
- - Text elements: fontFamily, fontSize, fontWeight, color, segments (for multi-color text with per-word color, bold, italic, underline, highlightColor)
540
- - Device mockups: perspectiveVariant (flat, left-15, right-15, left-30, right-30, isometric, top-down, landscape-left, landscape-right), screenshotImage (null if no upload), frameStyle (realistic | none), showIsland (false hides the Dynamic Island pill; Apple accepts screenshots either way)
541
- - Shapes: 94 shape types (17 core + 77 decorative across 13 categories) — core shapes (circle, rectangle, rounded-rect, blob, wave, triangle, diamond, hexagon, ring, star, wing-left, wing-right, etc.) plus decorative library shapes (leaf, flower, cloud, sparkle, heart, rocket, trophy, crown, coffee-cup, airplane, dollar-sign, paw-print, and many more)
539
+ description: `Retrieve the full state of a screenshot project, including all cards and their elements. Use this to inspect what was generated before making edits. Free — no credit cost.
540
+
541
+ Returns the canvas state with:
542
+ - cards[]: each card has an id, elements array, and optional background settings
543
+ - Each element has: type (text, device-mockup, shape, badge, image, star-rating), position (x, y), size (width, height), zIndex, and type-specific properties
544
+ - Text elements: fontFamily, fontSize, fontWeight, color, segments (for multi-color text with per-word color, bold, italic, underline, highlightColor)
545
+ - Device mockups: perspectiveVariant (flat, left-15, right-15, left-30, right-30, isometric, top-down, landscape-left, landscape-right), screenshotImage (null if no upload), frameStyle (realistic | none), showIsland (false hides the Dynamic Island pill; Apple accepts screenshots either way)
546
+ - Shapes: 94 shape types (17 core + 77 decorative across 13 categories) — core shapes (circle, rectangle, rounded-rect, blob, wave, triangle, diamond, hexagon, ring, star, wing-left, wing-right, etc.) plus decorative library shapes (leaf, flower, cloud, sparkle, heart, rocket, trophy, crown, coffee-cup, airplane, dollar-sign, paw-print, and many more)
542
547
  - projectMeta: globalVisualTheme, brandColors, mood, appCategory`,
543
548
  inputSchema: z.object({
544
549
  project_id: z.string().describe('Project ID to inspect'),
@@ -583,14 +588,14 @@ Returns the canvas state with:
583
588
  // Tool 6: generate-background
584
589
  server.registerTool('generate-background', {
585
590
  title: 'Generate AI Background',
586
- description: `Generate an AI background image for a specific card using Gemini. The background is generated based on a text prompt and applied directly to the card. Costs 6 credits.
587
-
588
- Good prompts describe mood, lighting, and color — not objects or text:
589
- - "Deep purple nebula with soft pink and blue light rays"
590
- - "Warm sunset gradient with golden bokeh particles"
591
- - "Dark moody atmosphere with teal and emerald glow"
592
- - "Clean minimal white-to-light-gray gradient with subtle noise texture"
593
-
591
+ description: `Generate an AI background image for a specific card using Gemini. The background is generated based on a text prompt and applied directly to the card. Costs 6 credits.
592
+
593
+ Good prompts describe mood, lighting, and color — not objects or text:
594
+ - "Deep purple nebula with soft pink and blue light rays"
595
+ - "Warm sunset gradient with golden bokeh particles"
596
+ - "Dark moody atmosphere with teal and emerald glow"
597
+ - "Clean minimal white-to-light-gray gradient with subtle noise texture"
598
+
594
599
  The generated image is cropped to exact device dimensions and set as the card's background.`,
595
600
  inputSchema: z.object({
596
601
  project_id: z.string().describe('Project ID'),
@@ -622,17 +627,17 @@ The generated image is cropped to exact device dimensions and set as the card's
622
627
  // Tool 7: generate-panoramic-background
623
628
  server.registerTool('generate-panoramic-background', {
624
629
  title: 'Generate Panoramic Background',
625
- description: `Generate one wide background image and slice it across multiple cards so they read as a continuous scene when the App Store gallery scrolls. The store gallery gap is accounted for, so slices line up after Apple's gutter.
626
-
627
- Two image sources:
628
- - prompt: AI-generated via Gemini. Costs 6 credits.
629
- - pexels_query: stock landscape photo from Pexels. Free.
630
-
631
- If you omit both, the tool fulfills a panoramic the chat already set up: when generate-screenshots or edit-screenshots returns a design with a panoramic background (e.g. after "pano the background across cards 1-3"), the cards are tagged but the wide image isn't created yet. Calling this tool with just the project_id picks up that pending panoramic and generates it.
632
-
633
- Good prompts describe a continuous scene, not objects or text:
634
- - "Misty mountain range at dawn, soft pink-to-blue gradient sky"
635
- - "Calm ocean horizon at golden hour with gentle waves"
630
+ description: `Generate one wide background image and slice it across multiple cards so they read as a continuous scene when the App Store gallery scrolls. The store gallery gap is accounted for, so slices line up after Apple's gutter.
631
+
632
+ Two image sources:
633
+ - prompt: AI-generated via Gemini. Costs 6 credits.
634
+ - pexels_query: stock landscape photo from Pexels. Free.
635
+
636
+ If you omit both, the tool fulfills a panoramic the chat already set up: when generate-screenshots or edit-screenshots returns a design with a panoramic background (e.g. after "pano the background across cards 1-3"), the cards are tagged but the wide image isn't created yet. Calling this tool with just the project_id picks up that pending panoramic and generates it.
637
+
638
+ Good prompts describe a continuous scene, not objects or text:
639
+ - "Misty mountain range at dawn, soft pink-to-blue gradient sky"
640
+ - "Calm ocean horizon at golden hour with gentle waves"
636
641
  - "Abstract flowing emerald and teal silk waves"`,
637
642
  inputSchema: z.object({
638
643
  project_id: z.string().describe('Project ID'),
@@ -670,16 +675,16 @@ Good prompts describe a continuous scene, not objects or text:
670
675
  // Tool 8: prepare-screenshot-brief
671
676
  server.registerTool('prepare-screenshot-brief', {
672
677
  title: 'Prepare Screenshot Brief',
673
- description: `Get a category playbook and repo-research checklist to prepare for screenshot generation. Call this BEFORE generate-screenshots. Free (no credits).
674
-
675
- Pass app_category to get category-specific guidance pulled live from AppScreenshotStudio: the frame-1 hook playbook (default layout, what to avoid, caption patterns), the recommended story_flow and mood, and the exact facts to dig out of THIS app's repo for its category (e.g. security and compliance signals for finance, real gameplay art for games, the outcome for fitness).
676
-
677
- Returns:
678
- - A category playbook (frame-1 hooks + layout + arc + mood) for the app_category
679
- - A category-specific repo research focus (what to grep this app for)
680
- - A generic codebase research checklist (file patterns per tech stack)
681
- - Headline tips + the codebase_context schema to fill in
682
-
678
+ description: `Get a category playbook and repo-research checklist to prepare for screenshot generation. Call this BEFORE generate-screenshots. Free (no credits).
679
+
680
+ Pass app_category to get category-specific guidance pulled live from AppScreenshotStudio: the frame-1 hook playbook (default layout, what to avoid, caption patterns), the recommended story_flow and mood, and the exact facts to dig out of THIS app's repo for its category (e.g. security and compliance signals for finance, real gameplay art for games, the outcome for fitness).
681
+
682
+ Returns:
683
+ - A category playbook (frame-1 hooks + layout + arc + mood) for the app_category
684
+ - A category-specific repo research focus (what to grep this app for)
685
+ - A generic codebase research checklist (file patterns per tech stack)
686
+ - Headline tips + the codebase_context schema to fill in
687
+
683
688
  The more you gather here, the better generate-screenshots does on the first try.`,
684
689
  inputSchema: z.object({
685
690
  app_category: z.string().optional()
@@ -860,21 +865,21 @@ The more you gather here, the better generate-screenshots does on the first try.
860
865
  // Tool 9: upload-screenshots
861
866
  server.registerTool('upload-screenshots', {
862
867
  title: 'Upload App Screenshots',
863
- description: `Upload local app screenshots (from Simulator, emulator, or screen captures) into the device mockups of an existing project. This lets you add real app UI into the device frames without leaving the terminal.
864
-
865
- Reads files from your local filesystem, converts them to base64, and sets them on the device mockup elements in the specified cards.
866
-
867
- Free — no credit cost. The screenshots are placed into the device frames that were created by generate-screenshots.
868
-
869
- Workflow:
870
- 1. generate-screenshots → creates project with empty device frames
871
- 2. upload-screenshots → fills the device frames with your actual app UI
872
- 3. render-screenshots → exports final PNGs at App Store dimensions
873
-
874
- Tips:
875
- - Take screenshots from the iOS Simulator (Cmd+S) or Android emulator
876
- - Use PNG format for best quality
877
- - Screenshots are automatically fitted into the device frame
868
+ description: `Upload local app screenshots (from Simulator, emulator, or screen captures) into the device mockups of an existing project. This lets you add real app UI into the device frames without leaving the terminal.
869
+
870
+ Reads files from your local filesystem, converts them to base64, and sets them on the device mockup elements in the specified cards.
871
+
872
+ Free — no credit cost. The screenshots are placed into the device frames that were created by generate-screenshots.
873
+
874
+ Workflow:
875
+ 1. generate-screenshots → creates project with empty device frames
876
+ 2. upload-screenshots → fills the device frames with your actual app UI
877
+ 3. render-screenshots → exports final PNGs at App Store dimensions
878
+
879
+ Tips:
880
+ - Take screenshots from the iOS Simulator (Cmd+S) or Android emulator
881
+ - Use PNG format for best quality
882
+ - Screenshots are automatically fitted into the device frame
878
883
  - You can upload different screenshots to different cards`,
879
884
  inputSchema: z.object({
880
885
  project_id: z.string().describe('Project ID from a previous generate-screenshots call'),
package/package.json CHANGED
@@ -1,48 +1,49 @@
1
- {
2
- "name": "@appscreenshotstudio/mcp",
3
- "version": "0.6.2",
4
- "description": "MCP server for generating App Store screenshots via AppScreenshotStudio",
5
- "type": "module",
6
- "license": "MIT",
7
- "homepage": "https://appscreenshotstudio.com/docs/mcp",
8
- "repository": {
9
- "type": "git",
10
- "url": "https://github.com/TWWorks-org/mcp-server"
11
- },
12
- "bugs": {
13
- "url": "https://github.com/TWWorks-org/mcp-server/issues"
14
- },
15
- "keywords": [
16
- "mcp",
17
- "model-context-protocol",
18
- "app-store-screenshots",
19
- "screenshot-generator",
20
- "appscreenshotstudio",
21
- "ai-tools"
22
- ],
23
- "bin": {
24
- "appscreenshotstudio-mcp": "dist/index.js"
25
- },
26
- "scripts": {
27
- "build": "tsc",
28
- "start": "node dist/index.js",
29
- "dev": "tsc --watch",
30
- "prepublishOnly": "npm run build"
31
- },
32
- "dependencies": {
33
- "@modelcontextprotocol/sdk": "^1.27.1",
34
- "zod": "^3.25.67"
35
- },
36
- "devDependencies": {
37
- "@types/node": "^22.0.0",
38
- "typescript": "^5.8.0"
39
- },
40
- "engines": {
41
- "node": ">=18"
42
- },
43
- "files": [
44
- "dist",
45
- "skills",
46
- "README.md"
47
- ]
48
- }
1
+ {
2
+ "name": "@appscreenshotstudio/mcp",
3
+ "version": "0.7.0",
4
+ "mcpName": "com.appscreenshotstudio/mcp",
5
+ "description": "MCP server for generating App Store screenshots via AppScreenshotStudio",
6
+ "type": "module",
7
+ "license": "MIT",
8
+ "homepage": "https://appscreenshotstudio.com/docs/mcp",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/TWWorks-org/mcp-server"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/TWWorks-org/mcp-server/issues"
15
+ },
16
+ "keywords": [
17
+ "mcp",
18
+ "model-context-protocol",
19
+ "app-store-screenshots",
20
+ "screenshot-generator",
21
+ "appscreenshotstudio",
22
+ "ai-tools"
23
+ ],
24
+ "bin": {
25
+ "appscreenshotstudio-mcp": "dist/index.js"
26
+ },
27
+ "scripts": {
28
+ "build": "tsc",
29
+ "start": "node dist/index.js",
30
+ "dev": "tsc --watch",
31
+ "prepublishOnly": "npm run build"
32
+ },
33
+ "dependencies": {
34
+ "@modelcontextprotocol/sdk": "^1.27.1",
35
+ "zod": "^3.25.67"
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "^22.0.0",
39
+ "typescript": "^5.8.0"
40
+ },
41
+ "engines": {
42
+ "node": ">=18"
43
+ },
44
+ "files": [
45
+ "dist",
46
+ "skills",
47
+ "README.md"
48
+ ]
49
+ }
@@ -64,7 +64,7 @@ Call the `generate-screenshots` MCP tool with:
64
64
  - `features`: top 3-5 features as array
65
65
  - `brand_colors`: `{ primary, secondary?, accent? }` from theme files
66
66
  - `mood`: user's chosen mood
67
- - `device_id`: `"iphone-6.9"` (default), `"iphone-6.3"`, `"ipad-13"`, `"android-phone"`, `"android-tablet-10"` (7"), `"android-tablet-large"` (10"), `"apple-watch-ultra"`
67
+ - `device_id`: `"iphone-6.9"` (default), `"iphone-6.3"`, `"ipad-13"`, `"android-phone"`, `"pixel-11-pro"`, `"android-tablet-10"` (7"), `"android-tablet-large"` (10"), `"apple-watch-ultra"`
68
68
  - `count`: number of cards (3-10)
69
69
  - `story_flow`: `"auto"` (default), `"hero-intro"`, `"problem-solution"`, `"benefit-first"`, etc.
70
70
  - `codebase_context`: the full context object from Step 1