@appscreenshotstudio/mcp 0.5.5 → 0.6.1

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.
Files changed (3) hide show
  1. package/README.md +226 -225
  2. package/dist/index.js +38 -92
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,225 +1,226 @@
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
- | `apple-watch-ultra` | Apple Watch Ultra 2 | 410x502 | App Store |
192
-
193
- ## Design Features
194
-
195
- The AI generates professional screenshots using:
196
-
197
- - **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)
198
- - **Rich text**: per-word color, bold, italic, underline, highlight pills (colored backgrounds behind words), gradient fills, text stroke outlines, emoji
199
- - **Compound trust signals**: statRow, laurelStat, starRating, quote, pressBanner, featureGrid, beforeAfterSplit, stepList — auto-positioned per layout
200
- - **Frame color**: recolor the device frame `natural` (default), `black`, `white`, `gold`. Requires Growth plan or higher.
201
- - **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.
202
- - **9 device perspectives**: flat, left-15, left-30, right-15, right-30, isometric, top-down, landscape-left, landscape-right
203
- - **13 layouts**: `text-top-device-bottom`, `text-top-device-tilted`, `device-hero`, `social-proof`, `review-clip`, `screen-hero`, `lifestyle-hero`, `feature-grid`, `before-after`, `stats-hero`, `metric-badge`, `annotated-feature`, `step-flow`. The AI varies `deviceScale`, `deviceSide`, `textPosition`, and `textAlign` per card so a set never looks like duplicates.
204
-
205
- ## Workflow
206
-
207
- 1. **Research** — Agent calls `prepare-screenshot-brief`, then searches your codebase for app name, features, colors, screens, and audience
208
- 2. **Generate** — Agent calls `generate-screenshots` with `codebase_context` for app-specific designs
209
- 3. **Iterate** — Agent calls `edit-screenshots` to refine (codebase context carries over automatically)
210
- 4. **Upload** — Agent calls `upload-screenshots` with local file paths to fill device mockups
211
- 5. **Export** — Agent calls `render-screenshots` or click "Download All" in the web app
212
-
213
- ## Security
214
-
215
- - API key stays on your machine (environment variable)
216
- - All API calls over HTTPS
217
- - stdio transport no network ports opened
218
- - Revoke keys anytime in Settings
219
-
220
- ## Links
221
-
222
- - [Screenshot API + MCP overview](https://appscreenshotstudio.com/api)
223
- - [Full docs](https://appscreenshotstudio.com/docs/mcp)
224
- - [REST API reference](https://appscreenshotstudio.com/docs/api)
225
- - [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
+ | `android-tablet-10` | Android Tablet 7" | 1200x1920 | Play Store |
191
+ | `apple-watch-ultra` | Apple Watch Ultra 2 | 410x502 | App Store |
192
+
193
+ ## Design Features
194
+
195
+ The AI generates professional screenshots using:
196
+
197
+ - **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)
198
+ - **Rich text**: per-word color, bold, italic, underline, highlight pills (colored backgrounds behind words), gradient fills, text stroke outlines, emoji
199
+ - **Compound trust signals**: statRow, laurelStat, starRating, quote, pressBanner. Auto-positioned per layout, and opt-in: supply the real figure or the card ships clean
200
+ - **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.
201
+ - **Frame color**: recolor the device frame `natural` (default), `black`, `white`, `gold`. Requires Growth plan or higher.
202
+ - **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.
203
+ - **9 device perspectives**: flat, left-15, left-30, right-15, right-30, isometric, top-down, landscape-left, landscape-right
204
+ - **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.
205
+
206
+ ## Workflow
207
+
208
+ 1. **Research** — Agent calls `prepare-screenshot-brief`, then searches your codebase for app name, features, colors, screens, and audience
209
+ 2. **Generate** — Agent calls `generate-screenshots` with `codebase_context` for app-specific designs
210
+ 3. **Iterate** — Agent calls `edit-screenshots` to refine (codebase context carries over automatically)
211
+ 4. **Upload** — Agent calls `upload-screenshots` with local file paths to fill device mockups
212
+ 5. **Export** — Agent calls `render-screenshots` or click "Download All" in the web app
213
+
214
+ ## Security
215
+
216
+ - API key stays on your machine (environment variable)
217
+ - All API calls over HTTPS
218
+ - stdio transport no network ports opened
219
+ - Revoke keys anytime in Settings
220
+
221
+ ## Links
222
+
223
+ - [Screenshot API + MCP overview](https://appscreenshotstudio.com/api)
224
+ - [Full docs](https://appscreenshotstudio.com/docs/mcp)
225
+ - [REST API reference](https://appscreenshotstudio.com/docs/api)
226
+ - [Pricing](https://appscreenshotstudio.com/pricing)
package/dist/index.js CHANGED
@@ -192,7 +192,7 @@ const chatImagesSchema = z.array(z.object({
192
192
  // ─── MCP Server ─────────────────────────────────────────────────────────────────
193
193
  const server = new McpServer({
194
194
  name: 'appscreenshotstudio',
195
- version: '0.5.5',
195
+ version: '0.6.1',
196
196
  });
197
197
  // Tool 1: generate-screenshots
198
198
  server.registerTool('generate-screenshots', {
@@ -211,14 +211,11 @@ The AI picks a narrative arc that fits the app's sell angle (trust-first for fin
211
211
  - review-clip: rating-statement headline + stars + quote + bottom-clipped device
212
212
  - screen-hero: top-clipped device + centered headline + optional trust stat
213
213
  - lifestyle-hero: full-bleed photo background + text overlay (no device)
214
- - feature-grid: headline + 2×2 or 2×3 icon+label grid, no device
215
- - before-after: dark before-half + bright after-half (transformation apps)
216
214
  - stats-hero: giant centered stat(s), no device, numbers-led
217
215
  - metric-badge: centered device + chunky "achievement card" floating over its screen
218
216
  - annotated-feature: tilted device + side callout chip linked by a connector line
219
- - step-flow: headline + 2-4 numbered step rows ("how it works"), no device
220
217
 
221
- Each card can carry auto-positioned compound fields: statRow, laurelStat, pressBanner, starRating, quote, featureGrid, beforeAfterSplit, stepList.
218
+ 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.
222
219
 
223
220
  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.
224
221
 
@@ -351,8 +348,9 @@ server.registerTool('edit-screenshots', {
351
348
  What you can change:
352
349
  - Text: headlines, subtitles, badge text, font size, font family (Inter, Poppins, Montserrat, DM Sans, Space Grotesk, etc.)
353
350
  - Text styling: per-word color, bold, italic, underline, highlight pills (colored background behind words), gradient text, text stroke outlines
354
- - Colors: brand palette, gradient backgrounds, accent colors, text colors
355
- - Layouts (13 types): text-top-device-bottom, text-top-device-tilted, device-hero, social-proof, review-clip, screen-hero, lifestyle-hero, feature-grid, before-after, stats-hero, metric-badge, annotated-feature, step-flow. The AI picks a narrative arc (HOOK EDUCATE PROVE CONVERT) across the set.
351
+ - 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.
352
+ - 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.
353
+ - 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
354
  - Layout params: deviceScale (small/medium/large), deviceSide (left/right), textPosition (above/below), textAlign (left/center)
357
355
  - 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
356
  - 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.
@@ -382,7 +380,6 @@ Example edit messages:
382
380
  - "Recolor the iPhone frame to gold across all cards"
383
381
  - "Replace card 3 with a CTA card saying Download Free"
384
382
  - "Switch card 2 to device-hero layout with statRow showing our three key metrics"
385
- - "Add a before-after card showing the transformation"
386
383
  - "Add decorative leaf and sparkle shapes scattered in the background"
387
384
  - "Make 'Every' underlined and italic in the headline"`,
388
385
  inputSchema: z.object({
@@ -671,18 +668,20 @@ Good prompts describe a continuous scene, not objects or text:
671
668
  // Tool 8: prepare-screenshot-brief
672
669
  server.registerTool('prepare-screenshot-brief', {
673
670
  title: 'Prepare Screenshot Brief',
674
- description: `Get a research checklist and strategy guide to prepare for screenshot generation. Call this BEFORE generate-screenshots to know what to look for in the codebase. Free no API call or credits needed.
671
+ description: `Get a category playbook and repo-research checklist to prepare for screenshot generation. Call this BEFORE generate-screenshots. Free (no credits).
672
+
673
+ 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).
675
674
 
676
675
  Returns:
677
- - A codebase research checklist (file patterns to search for each tech stack)
678
- - Story flow recommendations by app category
679
- - Tips for writing compelling screenshot headlines
680
- - The codebase_context schema to fill in
676
+ - A category playbook (frame-1 hooks + layout + arc + mood) for the app_category
677
+ - A category-specific repo research focus (what to grep this app for)
678
+ - A generic codebase research checklist (file patterns per tech stack)
679
+ - Headline tips + the codebase_context schema to fill in
681
680
 
682
- This tool helps you gather the right information so generate-screenshots produces the best possible output on the first try.`,
681
+ The more you gather here, the better generate-screenshots does on the first try.`,
683
682
  inputSchema: z.object({
684
683
  app_category: z.string().optional()
685
- .describe('App category if known — e.g. fitness, finance, social, productivity, developer-tools'),
684
+ .describe('App category, e.g. fitness, finance, gaming, social, productivity, health, travel, wellness. Drives the category playbook this tool returns; synonyms are normalized server-side.'),
686
685
  platform: z.enum(['ios', 'android', 'both']).default('ios')
687
686
  .describe('Target platform'),
688
687
  }),
@@ -758,84 +757,31 @@ This tool helps you gather the right information so generate-screenshots produce
758
757
  '- Main navigation → what users do most',
759
758
  '- Key interactions → what makes the app satisfying to use',
760
759
  ];
761
- // Story flow recommendations
762
- const storyFlows = [
763
- '',
764
- '---',
765
- '',
766
- '# Story Flow Recommendations',
767
- '',
768
- ];
769
- const categoryRecommendations = {
770
- 'fitness': [
771
- '**Fitness apps → `journey` or `benefit-first`**',
772
- '- Lead with transformation: "Before → After" or "Track → Improve → Achieve"',
773
- '- Highlight: workout tracking, progress charts, streaks, community challenges',
774
- '- Mood: energetic or bold',
775
- ],
776
- 'finance': [
777
- '**Finance apps → `benefit-first` or `problem-solution`**',
778
- '- Lead with outcomes: "Save $X/month" or "See all accounts in one place"',
779
- '- Highlight: dashboards, charts, budgets, alerts, security',
780
- '- Mood: professional or calm',
781
- ],
782
- 'social': [
783
- '**Social apps → `social-proof-bookend` or `hero-intro`**',
784
- '- Lead with community: "Join 1M+ users" or show vibrant UI',
785
- '- Highlight: feed, messaging, profiles, discovery, sharing',
786
- '- Mood: playful or energetic',
787
- ],
788
- 'productivity': [
789
- '**Productivity apps → `problem-solution` or `standard`**',
790
- '- Lead with pain point: "Stop juggling 5 apps" → "One place for everything"',
791
- '- Highlight: task management, collaboration, integrations, speed',
792
- '- Mood: minimal or professional',
793
- ],
794
- 'food': [
795
- '**Food/recipe apps → `hero-intro` or `journey`**',
796
- '- Lead with beautiful imagery or the discovery experience',
797
- '- Highlight: recipe browsing, meal planning, grocery lists, cooking mode',
798
- '- Mood: warm or playful',
799
- ],
800
- 'travel': [
801
- '**Travel apps → `journey` or `hero-intro`**',
802
- '- Lead with destination discovery or trip planning flow',
803
- '- Highlight: search, booking, itinerary, maps, offline access',
804
- '- Mood: energetic or calm',
805
- ],
806
- 'health': [
807
- '**Health/wellness apps → `benefit-first` or `journey`**',
808
- '- Lead with outcomes: "Sleep better", "Feel calmer", "Know your body"',
809
- '- Highlight: tracking, insights, reminders, progress, professional guidance',
810
- '- Mood: calm or professional',
811
- ],
812
- 'education': [
813
- '**Education apps → `journey` or `hero-intro`**',
814
- '- Lead with learning progression or "learn anything" hero',
815
- '- Highlight: courses, progress tracking, quizzes, certificates, offline',
816
- '- Mood: playful or professional',
817
- ],
818
- 'developer-tools': [
819
- '**Developer tools → `problem-solution` or `benefit-first`**',
820
- '- Lead with workflow pain: "Stop copy-pasting" → "One command and done"',
821
- '- Highlight: CLI, integrations, speed, DX, code examples',
822
- '- Mood: minimal or bold',
823
- ],
824
- 'shopping': [
825
- '**Shopping/e-commerce → `social-proof-bookend` or `benefit-first`**',
826
- '- Lead with deals or trust: "Trusted by 500K+ shoppers"',
827
- '- Highlight: discovery, search, wishlists, checkout, tracking',
828
- '- Mood: bold or energetic',
829
- ],
830
- };
831
- if (app_category && categoryRecommendations[app_category]) {
832
- storyFlows.push(...categoryRecommendations[app_category]);
760
+ let playbook = null;
761
+ try {
762
+ const res = await fetch(`${API_BASE}/api/v1/playbook?category=${encodeURIComponent(app_category ?? '')}`);
763
+ if (res.ok) {
764
+ const json = (await res.json());
765
+ if (json?.data)
766
+ playbook = json.data;
767
+ }
833
768
  }
834
- else {
835
- storyFlows.push('**General recommendations by app type:**', '');
836
- for (const [, lines] of Object.entries(categoryRecommendations)) {
837
- storyFlows.push(...lines, '');
769
+ catch {
770
+ // offline or endpoint unavailable: the generic checklist still stands
771
+ }
772
+ const categoryBlock = [];
773
+ if (playbook && playbook.depth !== 'general') {
774
+ categoryBlock.push(`# Category Playbook: ${playbook.label}`, '', `Recommended \`story_flow\`: \`${playbook.arc}\` | \`mood\`: \`${playbook.mood}\``, '', '## Research this app for its category', `These are what a ${playbook.label.toLowerCase()} frame 1 lives or dies on. Dig them out of the repo before generating:`, ...playbook.researchFocus.map((r) => `- ${r}`), '');
775
+ if (playbook.frame1) {
776
+ categoryBlock.push('## Frame 1 (the hook) for this category', `Default layout: \`${playbook.frame1.defaultLayout}\`. Avoid: ${playbook.frame1.avoidLayouts.map((l) => `\`${l}\``).join(', ')}.`, `Why: ${playbook.frame1.rationale}`, '', 'Pick the hook that fits the app, then write the headline from its caption pattern:', ...playbook.frame1.hooks.map((h) => `- **${h.name}** (${h.layout}): ${h.shows}. Caption: ${h.captionPattern}`), '');
777
+ }
778
+ if (playbook.patternsToAvoid && playbook.patternsToAvoid.length) {
779
+ categoryBlock.push('## Avoid for this category', ...playbook.patternsToAvoid.map((p) => `- ${p}`), '');
780
+ }
781
+ if (playbook.highlights && playbook.highlights.length) {
782
+ categoryBlock.push(`Highlights worth surfacing: ${playbook.highlights.join(', ')}.`, '');
838
783
  }
784
+ categoryBlock.push('---', '');
839
785
  }
840
786
  // Headline tips
841
787
  const headlineTips = [
@@ -904,7 +850,7 @@ This tool helps you gather the right information so generate-screenshots produce
904
850
  return {
905
851
  content: [{
906
852
  type: 'text',
907
- text: [...checklist, ...storyFlows, ...headlineTips, ...deviceTips, ...schemaReminder].join('\n'),
853
+ text: [...categoryBlock, ...checklist, ...headlineTips, ...deviceTips, ...schemaReminder].join('\n'),
908
854
  }],
909
855
  };
910
856
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appscreenshotstudio/mcp",
3
- "version": "0.5.5",
3
+ "version": "0.6.1",
4
4
  "description": "MCP server for generating App Store screenshots via AppScreenshotStudio",
5
5
  "type": "module",
6
6
  "license": "MIT",