@appscreenshotstudio/mcp 0.4.3 → 0.4.4

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
@@ -148,6 +148,21 @@ Generate an AI background for a specific card. Uses project metadata (brand colo
148
148
 
149
149
  **Costs 6 credits.**
150
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
+
151
166
  ### `list-devices`
152
167
 
153
168
  Show all supported device specs. No API call needed.
@@ -169,6 +184,7 @@ Once installed, use `/appscreenshotstudio` in Claude Code or just ask "generate
169
184
  | ID | Name | Size | Required |
170
185
  |---|---|---|---|
171
186
  | `iphone-6.9` | iPhone 16 Pro Max | 1260x2736 | App Store |
187
+ | `iphone-6.3` | iPhone 17 Pro | 1206x2622 | Optional |
172
188
  | `ipad-13` | iPad Pro 13" | 2064x2752 | App Store |
173
189
  | `android-phone` | Android Phone | 1080x2340 | Play Store |
174
190
  | `android-tablet-10` | Android Tablet 7" | 1200x1920 | Play Store |
@@ -178,12 +194,13 @@ Once installed, use `/appscreenshotstudio` in Claude Code or just ask "generate
178
194
 
179
195
  The AI generates professional screenshots using:
180
196
 
181
- - **78+ decorative shapes** 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)
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)
182
198
  - **Rich text**: per-word color, bold, italic, underline, highlight pills (colored backgrounds behind words), gradient fills, text stroke outlines, emoji
183
- - **Laurel stats**: wing-left + wing-right shapes flanking stats like "4.9 Rating" or "1M+ Users"
184
- - **Floating UI snippets**: rounded-rect panels with text overlapping device edges
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.
185
202
  - **9 device perspectives**: flat, left-15, left-30, right-15, right-30, isometric, top-down, landscape-left, landscape-right
186
- - **7 layouts**: Text Top + Device Center (A), Text Top + Device Offset (B), Social Proof (C), Marketing Title (M1), Feature Callout (M2), CTA (M3), Testimonial (M4)
203
+ - **14 layouts**: `text-top-device-bottom`, `text-top-device-tilted`, `device-hero`, `social-proof`, `review-clip`, `screen-hero`, `lifestyle-hero`, `photo-device-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.
187
204
 
188
205
  ## Workflow
189
206
 
package/dist/index.js CHANGED
@@ -31,6 +31,7 @@ const API_KEY = process.env.APPSCREENSHOTSTUDIO_API_KEY;
31
31
  // ⚠️ Keep in sync: lib/device-specs.ts, mcp-server/README.md, docs/api page, docs/mcp page
32
32
  const DEVICES = [
33
33
  { id: 'iphone-6.9', name: 'iPhone 16 Pro Max', width: 1260, height: 2736, category: 'iphone', required: true },
34
+ { id: 'iphone-6.3', name: 'iPhone 17 Pro', width: 1206, height: 2622, category: 'iphone', required: false },
34
35
  { id: 'ipad-13', name: 'iPad Pro 13"', width: 2064, height: 2752, category: 'ipad', required: true },
35
36
  { id: 'android-phone', name: 'Android Phone', width: 1080, height: 2340, category: 'android-phone', required: true },
36
37
  { id: 'android-tablet-10', name: 'Android Tablet 7"', width: 1200, height: 1920, category: 'android-tablet', required: true },
@@ -126,7 +127,7 @@ function buildDesignMessage(input) {
126
127
  // ─── MCP Server ─────────────────────────────────────────────────────────────────
127
128
  const server = new McpServer({
128
129
  name: 'appscreenshotstudio',
129
- version: '0.4.3',
130
+ version: '0.4.4',
130
131
  });
131
132
  // Tool 1: generate-screenshots
132
133
  server.registerTool('generate-screenshots', {
@@ -137,20 +138,25 @@ IMPORTANT: Before calling this tool, research the user's codebase to populate th
137
138
 
138
139
  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.
139
140
 
140
- 9 layout types available per card:
141
+ 14 layout types available per card:
141
142
  - text-top-device-bottom: headline top, flat device bottom (feature/educate)
142
143
  - text-top-device-tilted: headline left, tilted device right (or mirrored)
143
144
  - device-hero: headline + large centered device, product-forward
144
- - social-proof: stars + quote + laurel stat, device optional
145
- - feature-callout: headline + features list, no device
146
- - lifestyle-hero: full-bleed photo background + text overlay
145
+ - social-proof: stars + quote + laurel stat, no device (testimonial-led)
146
+ - review-clip: rating-statement headline + stars + quote + bottom-clipped device
147
+ - screen-hero: top-clipped device + centered headline + optional trust stat
148
+ - lifestyle-hero: full-bleed photo background + text overlay (no device)
149
+ - photo-device-hero: full-bleed photo background + headline overlay + flat device
150
+ - feature-grid: headline + 2×2 or 2×3 icon+label grid, no device
147
151
  - before-after: dark before-half + bright after-half (transformation apps)
148
- - text-bottom: headline anchored to lower third, cinematic
149
152
  - stats-hero: giant centered stat(s), no device, numbers-led
153
+ - metric-badge: centered device + chunky "achievement card" floating over its screen
154
+ - annotated-feature: tilted device + side callout chip linked by a connector line
155
+ - step-flow: headline + 2-4 numbered step rows ("how it works"), no device
150
156
 
151
- Each card can carry auto-positioned compound fields: statRow, laurelStat, pressBanner, starRating, quote, featureGrid, beforeAfterSplit.
157
+ Each card can carry auto-positioned compound fields: statRow, laurelStat, pressBanner, starRating, quote, featureGrid, beforeAfterSplit, stepList.
152
158
 
153
- 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.
159
+ 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.
154
160
 
155
161
  Design features:
156
162
  - Rich text with per-word color, weight, italic, underline, highlight pills, gradient fills, stroke outlines, and emoji
@@ -268,14 +274,14 @@ What you can change:
268
274
  - Text: headlines, subtitles, badge text, font size, font family (Inter, Poppins, Montserrat, DM Sans, Space Grotesk, etc.)
269
275
  - Text styling: per-word color, bold, italic, underline, highlight pills (colored background behind words), gradient text, text stroke outlines
270
276
  - Colors: brand palette, gradient backgrounds, accent colors, text colors
271
- - Layouts (9 types): text-top-device-bottom, text-top-device-tilted, device-hero, social-proof, feature-callout, lifestyle-hero, before-after, text-bottom, stats-hero. The AI picks a narrative arc (HOOK → EDUCATE → PROVE → CONVERT) across the set.
272
- - Layout params: deviceScale (small/medium/large), deviceSide (left/right), textPosition (above/below), compoundPlacement (below-text/below-device)
277
+ - Layouts (14 types): text-top-device-bottom, text-top-device-tilted, device-hero, social-proof, review-clip, screen-hero, lifestyle-hero, photo-device-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.
278
+ - Layout params: deviceScale (small/medium/large), deviceSide (left/right), textPosition (above/below), textAlign (left/center)
273
279
  - Device mockups: perspective variants (flat, left-15, right-15, left-30, right-30, isometric, top-down, landscape-left, landscape-right), 2D rotation, resize, reposition
274
280
  - 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.
275
281
  - Switch devices: "make this for Apple Watch" / "duplicate for Android tablet" clones the project at the target device's canvas size
276
282
  - Add/remove cards: add a social proof card, remove card 3, add a marketing title card
277
283
  - Compound fields (auto-positioned): statRow, laurelStat, pressBanner, starRating, quote, featureGrid, beforeAfterSplit
278
- - Panoramic backgrounds: one wide AI or Pexels image sliced across multiple cards ("pano the background across cards 1-3")
284
+ - 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.
279
285
  - Panoramic element spans: stretch a foreground image, device-mockup, or shape across adjacent cards ("pano the device across cards 1-2")
280
286
  - Floating elements: add/edit badges, star ratings
281
287
  - Shapes: glow orbs, waves, blobs, rounded rectangles, circles, custom SVG paths
@@ -506,7 +512,55 @@ The generated image is cropped to exact device dimensions and set as the card's
506
512
  }],
507
513
  };
508
514
  });
509
- // Tool 7: prepare-screenshot-brief
515
+ // Tool 7: generate-panoramic-background
516
+ server.registerTool('generate-panoramic-background', {
517
+ title: 'Generate Panoramic Background',
518
+ 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.
519
+
520
+ Two image sources:
521
+ - prompt: AI-generated via Gemini. Costs 6 credits.
522
+ - pexels_query: stock landscape photo from Pexels. Free.
523
+
524
+ 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.
525
+
526
+ Good prompts describe a continuous scene, not objects or text:
527
+ - "Misty mountain range at dawn, soft pink-to-blue gradient sky"
528
+ - "Calm ocean horizon at golden hour with gentle waves"
529
+ - "Abstract flowing emerald and teal silk waves"`,
530
+ inputSchema: z.object({
531
+ project_id: z.string().describe('Project ID'),
532
+ prompt: z.string().optional()
533
+ .describe('AI scene description (Gemini, 6 credits). Describe one continuous landscape scene: no text, devices, or UI.'),
534
+ pexels_query: z.string().optional()
535
+ .describe('Stock photo search query (Pexels, free). e.g. "mountain sunrise", "ocean horizon". Provide either this or prompt, not both.'),
536
+ card_indices: z.array(z.number().int().min(0)).max(10).optional()
537
+ .describe('Which cards share the panoramic (0-based, min 2). Default: first 3 cards (the ones visible in the App Store gallery without scrolling).'),
538
+ }),
539
+ }, async ({ project_id, prompt, pexels_query, card_indices }) => {
540
+ const res = await apiCall('POST', `/api/v1/projects/${project_id}/generate-panoramic-background`, {
541
+ ...(prompt ? { prompt } : {}),
542
+ ...(pexels_query ? { pexels_query } : {}),
543
+ ...(card_indices ? { card_indices } : {}),
544
+ });
545
+ if (!res.ok) {
546
+ return {
547
+ content: [{ type: 'text', text: `Panoramic background generation failed: ${JSON.stringify(res.data)}` }],
548
+ };
549
+ }
550
+ const data = res.data.data;
551
+ const creditsRemaining = res.data.credits_remaining;
552
+ return {
553
+ content: [{
554
+ type: 'text',
555
+ text: [
556
+ `Panoramic background generated and sliced across cards ${data.card_indices.map(i => i + 1).join(', ')}.`,
557
+ `Credits remaining: ${creditsRemaining}`,
558
+ `Project URL: ${API_BASE}/builder/${project_id}`,
559
+ ].join('\n'),
560
+ }],
561
+ };
562
+ });
563
+ // Tool 8: prepare-screenshot-brief
510
564
  server.registerTool('prepare-screenshot-brief', {
511
565
  title: 'Prepare Screenshot Brief',
512
566
  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.
@@ -746,7 +800,7 @@ This tool helps you gather the right information so generate-screenshots produce
746
800
  }],
747
801
  };
748
802
  });
749
- // Tool 8: upload-screenshots
803
+ // Tool 9: upload-screenshots
750
804
  server.registerTool('upload-screenshots', {
751
805
  title: 'Upload App Screenshots',
752
806
  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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appscreenshotstudio/mcp",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "MCP server for generating App Store screenshots via AppScreenshotStudio",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -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), `"ipad-13"`, `"android-phone"`, `"android-tablet-10"`
67
+ - `device_id`: `"iphone-6.9"` (default), `"ipad-13"`, `"android-phone"`, `"android-tablet-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