@appscreenshotstudio/mcp 0.6.1 → 0.6.3
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 +227 -226
- package/dist/index.js +129 -122
- package/package.json +49 -48
- package/skills/appscreenshotstudio/SKILL.md +1 -1
package/README.md
CHANGED
|
@@ -1,226 +1,227 @@
|
|
|
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
|
-
| `
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
- **
|
|
199
|
-
- **
|
|
200
|
-
- **
|
|
201
|
-
- **
|
|
202
|
-
- **
|
|
203
|
-
- **
|
|
204
|
-
- **
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
- [
|
|
225
|
-
- [
|
|
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
|
+
| `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, credential, guarantee. 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)
|
package/dist/index.js
CHANGED
|
@@ -28,13 +28,17 @@ if (args[0] === 'install-skill') {
|
|
|
28
28
|
const API_BASE = process.env.APPSCREENSHOTSTUDIO_URL || 'https://appscreenshotstudio.com';
|
|
29
29
|
const API_KEY = process.env.APPSCREENSHOTSTUDIO_API_KEY;
|
|
30
30
|
// ─── Devices (mirrors lib/device-specs.ts) ─────────────────────────────────────
|
|
31
|
-
// ⚠️ Keep in sync: lib/device-specs.ts, mcp-server/README.md, docs/api page, docs/mcp page
|
|
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),
|
|
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.
|
|
32
35
|
const DEVICES = [
|
|
33
36
|
{ id: 'iphone-6.9', name: 'iPhone 16 Pro Max', width: 1260, height: 2736, category: 'iphone', required: true },
|
|
34
37
|
{ id: 'iphone-6.3', name: 'iPhone 17 Pro', width: 1206, height: 2622, category: 'iphone', required: false },
|
|
35
38
|
{ id: 'ipad-13', name: 'iPad Pro 13"', width: 2064, height: 2752, category: 'ipad', required: true },
|
|
36
39
|
{ id: 'android-phone', name: 'Android Phone', width: 1080, height: 2340, category: 'android-phone', required: true },
|
|
37
40
|
{ id: 'android-tablet-10', name: 'Android Tablet 7"', width: 1200, height: 1920, category: 'android-tablet', required: true },
|
|
41
|
+
{ id: 'android-tablet-large', name: 'Android Tablet 10"', width: 1600, height: 2560, category: 'android-tablet', required: false },
|
|
38
42
|
{ id: 'apple-watch-ultra', name: 'Apple Watch Ultra 2', width: 410, height: 502, category: 'apple-watch', required: true },
|
|
39
43
|
];
|
|
40
44
|
const VALID_DEVICE_IDS = DEVICES.map(d => d.id);
|
|
@@ -192,41 +196,43 @@ const chatImagesSchema = z.array(z.object({
|
|
|
192
196
|
// ─── MCP Server ─────────────────────────────────────────────────────────────────
|
|
193
197
|
const server = new McpServer({
|
|
194
198
|
name: 'appscreenshotstudio',
|
|
195
|
-
|
|
199
|
+
// Keep in step with package.json: this is the version a client sees in the
|
|
200
|
+
// MCP handshake, and it silently sat at 0.6.1 through the 0.6.2 release.
|
|
201
|
+
version: '0.6.3',
|
|
196
202
|
});
|
|
197
203
|
// Tool 1: generate-screenshots
|
|
198
204
|
server.registerTool('generate-screenshots', {
|
|
199
205
|
title: 'Generate App Store Screenshots',
|
|
200
|
-
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.
|
|
201
|
-
|
|
202
|
-
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.
|
|
203
|
-
|
|
204
|
-
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.
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
- text-top-device-bottom: headline top, flat device bottom (feature/educate)
|
|
208
|
-
- text-top-device-tilted: headline left, tilted device right (or mirrored)
|
|
209
|
-
- device-hero: headline + large centered device, product-forward
|
|
210
|
-
- social-proof: stars + quote + laurel stat, no device (testimonial-led)
|
|
211
|
-
- review-clip: rating-statement headline + stars + quote + bottom-clipped device
|
|
212
|
-
- screen-hero: top-clipped device + centered headline + optional trust stat
|
|
213
|
-
- lifestyle-hero: full-bleed photo background + text overlay (no device)
|
|
214
|
-
- stats-hero: giant centered stat(s), no device, numbers-led
|
|
215
|
-
- metric-badge: centered device + chunky "achievement card" floating over its screen
|
|
216
|
-
- annotated-feature: tilted device + side callout chip linked by a connector line
|
|
217
|
-
|
|
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.
|
|
219
|
-
|
|
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.
|
|
221
|
-
|
|
222
|
-
Design features:
|
|
223
|
-
- Rich text with per-word color, weight, italic, underline, highlight pills, gradient fills, stroke outlines, and emoji
|
|
224
|
-
- Device perspective variants: flat, left-15/30, right-15/30, isometric, top-down, landscape
|
|
225
|
-
- 77 decorative shapes across 13 categories (nature, weather, celebration, social, tech, health, food, travel, abstract, finance, education, pets, emoji), plus 17 core geometric shapes
|
|
226
|
-
- Laurel stats: wing-left + wing-right shapes flanking a hero number
|
|
227
|
-
|
|
228
|
-
App Store 60/40 rule enforced: minimum 60% of cards must show a device mockup, maximum 40% can be marketing-only.
|
|
229
|
-
|
|
206
|
+
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.
|
|
207
|
+
|
|
208
|
+
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.
|
|
209
|
+
|
|
210
|
+
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.
|
|
211
|
+
|
|
212
|
+
10 layout types available per card:
|
|
213
|
+
- text-top-device-bottom: headline top, flat device bottom (feature/educate)
|
|
214
|
+
- text-top-device-tilted: headline left, tilted device right (or mirrored)
|
|
215
|
+
- device-hero: headline + large centered device, product-forward
|
|
216
|
+
- social-proof: stars + quote + laurel stat, no device (testimonial-led)
|
|
217
|
+
- review-clip: rating-statement headline + stars + quote + bottom-clipped device
|
|
218
|
+
- screen-hero: top-clipped device + centered headline + optional trust stat
|
|
219
|
+
- lifestyle-hero: full-bleed photo background + text overlay (no device)
|
|
220
|
+
- stats-hero: giant centered stat(s), no device, numbers-led
|
|
221
|
+
- metric-badge: centered device + chunky "achievement card" floating over its screen
|
|
222
|
+
- annotated-feature: tilted device + side callout chip linked by a connector line
|
|
223
|
+
|
|
224
|
+
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.
|
|
225
|
+
|
|
226
|
+
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.
|
|
227
|
+
|
|
228
|
+
Design features:
|
|
229
|
+
- Rich text with per-word color, weight, italic, underline, highlight pills, gradient fills, stroke outlines, and emoji
|
|
230
|
+
- Device perspective variants: flat, left-15/30, right-15/30, isometric, top-down, landscape
|
|
231
|
+
- 77 decorative shapes across 13 categories (nature, weather, celebration, social, tech, health, food, travel, abstract, finance, education, pets, emoji), plus 17 core geometric shapes
|
|
232
|
+
- Laurel stats: wing-left + wing-right shapes flanking a hero number
|
|
233
|
+
|
|
234
|
+
App Store 60/40 rule enforced: minimum 60% of cards must show a device mockup, maximum 40% can be marketing-only.
|
|
235
|
+
|
|
230
236
|
Costs 5 credits per generation.`,
|
|
231
237
|
inputSchema: z.object({
|
|
232
238
|
app_name: z.string().describe('Name of the app'),
|
|
@@ -343,44 +349,44 @@ Costs 5 credits per generation.`,
|
|
|
343
349
|
// Tool 2: edit-screenshots
|
|
344
350
|
server.registerTool('edit-screenshots', {
|
|
345
351
|
title: 'Edit Screenshot Designs',
|
|
346
|
-
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.
|
|
347
|
-
|
|
348
|
-
What you can change:
|
|
349
|
-
- Text: headlines, subtitles, badge text, font size, font family (Inter, Poppins, Montserrat, DM Sans, Space Grotesk, etc.)
|
|
350
|
-
- Text styling: per-word color, bold, italic, underline, highlight pills (colored background behind words), gradient text, text stroke outlines
|
|
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.
|
|
354
|
-
- Layout params: deviceScale (small/medium/large), deviceSide (left/right), textPosition (above/below), textAlign (left/center)
|
|
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
|
|
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.
|
|
357
|
-
- Switch devices: "make this for Apple Watch" / "duplicate for Android tablet" clones the project at the target device's canvas size
|
|
358
|
-
- Add/remove cards: add a social proof card, remove card 3, add a marketing title card
|
|
359
|
-
- Compound fields (auto-positioned): statRow, laurelStat, pressBanner, starRating, quote,
|
|
360
|
-
- 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.
|
|
361
|
-
- Panoramic element spans: stretch a foreground image, device-mockup, or shape across adjacent cards ("pano the device across cards 1-2")
|
|
362
|
-
- Floating elements: add/edit badges, star ratings
|
|
363
|
-
- Shapes: glow orbs, waves, blobs, rounded rectangles, circles, custom SVG paths
|
|
364
|
-
- 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
|
|
365
|
-
- Backgrounds: solid, subtle-gradient, rich-gradient, photo (Pexels), or ai-generated; change gradient colors/angle; set a backgroundPrompt for AI-generated
|
|
366
|
-
- Style: shadows, opacity, border radius, rotation, blur
|
|
367
|
-
|
|
368
|
-
What isn't supported (the AI will flag these in unsupportedAsks):
|
|
369
|
-
- 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.
|
|
370
|
-
- Uploading a specific user-supplied screenshot into a mockup — use upload-screenshots tool first, then reference the uploaded project.
|
|
371
|
-
|
|
372
|
-
Example edit messages:
|
|
373
|
-
- "Make the headlines larger and use Bebas Neue font"
|
|
374
|
-
- "Change the color scheme to blue (#2563EB) across all cards"
|
|
375
|
-
- "Add a social proof card with 5 stars and a testimonial quote"
|
|
376
|
-
- "Tilt the phone on card 2 to the left"
|
|
377
|
-
- "Pano the background photo across cards 1-3"
|
|
378
|
-
- "Stretch the device on card 1 across into card 2"
|
|
379
|
-
- "Make this project for Apple Watch"
|
|
380
|
-
- "Recolor the iPhone frame to gold across all cards"
|
|
381
|
-
- "Replace card 3 with a CTA card saying Download Free"
|
|
382
|
-
- "Switch card 2 to device-hero layout with statRow showing our three key metrics"
|
|
383
|
-
- "Add decorative leaf and sparkle shapes scattered in the background"
|
|
352
|
+
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.
|
|
353
|
+
|
|
354
|
+
What you can change:
|
|
355
|
+
- Text: headlines, subtitles, badge text, font size, font family (Inter, Poppins, Montserrat, DM Sans, Space Grotesk, etc.)
|
|
356
|
+
- Text styling: per-word color, bold, italic, underline, highlight pills (colored background behind words), gradient text, text stroke outlines
|
|
357
|
+
- 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.
|
|
358
|
+
- 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.
|
|
359
|
+
- 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.
|
|
360
|
+
- Layout params: deviceScale (small/medium/large), deviceSide (left/right), textPosition (above/below), textAlign (left/center)
|
|
361
|
+
- Device mockups: perspective variants (flat, left-15, right-15, left-30, right-30, isometric, top-down, landscape-left, landscape-right), 2D rotation, resize, reposition
|
|
362
|
+
- 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.
|
|
363
|
+
- Switch devices: "make this for Apple Watch" / "duplicate for Android tablet" clones the project at the target device's canvas size
|
|
364
|
+
- Add/remove cards: add a social proof card, remove card 3, add a marketing title card
|
|
365
|
+
- Compound fields (auto-positioned): statRow, laurelStat, pressBanner, starRating, quote, credential, guarantee
|
|
366
|
+
- 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.
|
|
367
|
+
- Panoramic element spans: stretch a foreground image, device-mockup, or shape across adjacent cards ("pano the device across cards 1-2")
|
|
368
|
+
- Floating elements: add/edit badges, star ratings
|
|
369
|
+
- Shapes: glow orbs, waves, blobs, rounded rectangles, circles, custom SVG paths
|
|
370
|
+
- 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
|
|
371
|
+
- Backgrounds: solid, subtle-gradient, rich-gradient, photo (Pexels), or ai-generated; change gradient colors/angle; set a backgroundPrompt for AI-generated
|
|
372
|
+
- Style: shadows, opacity, border radius, rotation, blur
|
|
373
|
+
|
|
374
|
+
What isn't supported (the AI will flag these in unsupportedAsks):
|
|
375
|
+
- 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.
|
|
376
|
+
- Uploading a specific user-supplied screenshot into a mockup — use upload-screenshots tool first, then reference the uploaded project.
|
|
377
|
+
|
|
378
|
+
Example edit messages:
|
|
379
|
+
- "Make the headlines larger and use Bebas Neue font"
|
|
380
|
+
- "Change the color scheme to blue (#2563EB) across all cards"
|
|
381
|
+
- "Add a social proof card with 5 stars and a testimonial quote"
|
|
382
|
+
- "Tilt the phone on card 2 to the left"
|
|
383
|
+
- "Pano the background photo across cards 1-3"
|
|
384
|
+
- "Stretch the device on card 1 across into card 2"
|
|
385
|
+
- "Make this project for Apple Watch"
|
|
386
|
+
- "Recolor the iPhone frame to gold across all cards"
|
|
387
|
+
- "Replace card 3 with a CTA card saying Download Free"
|
|
388
|
+
- "Switch card 2 to device-hero layout with statRow showing our three key metrics"
|
|
389
|
+
- "Add decorative leaf and sparkle shapes scattered in the background"
|
|
384
390
|
- "Make 'Every' underlined and italic in the headline"`,
|
|
385
391
|
inputSchema: z.object({
|
|
386
392
|
project_id: z.string().describe('Project ID from a previous generate-screenshots call'),
|
|
@@ -529,14 +535,14 @@ server.registerTool('list-devices', {
|
|
|
529
535
|
// Tool 5: get-project
|
|
530
536
|
server.registerTool('get-project', {
|
|
531
537
|
title: 'Get Project Details',
|
|
532
|
-
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.
|
|
533
|
-
|
|
534
|
-
Returns the canvas state with:
|
|
535
|
-
- cards[]: each card has an id, elements array, and optional background settings
|
|
536
|
-
- Each element has: type (text, device-mockup, shape, badge, image, star-rating), position (x, y), size (width, height), zIndex, and type-specific properties
|
|
537
|
-
- Text elements: fontFamily, fontSize, fontWeight, color, segments (for multi-color text with per-word color, bold, italic, underline, highlightColor)
|
|
538
|
-
- 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)
|
|
539
|
-
- 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)
|
|
538
|
+
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.
|
|
539
|
+
|
|
540
|
+
Returns the canvas state with:
|
|
541
|
+
- cards[]: each card has an id, elements array, and optional background settings
|
|
542
|
+
- Each element has: type (text, device-mockup, shape, badge, image, star-rating), position (x, y), size (width, height), zIndex, and type-specific properties
|
|
543
|
+
- Text elements: fontFamily, fontSize, fontWeight, color, segments (for multi-color text with per-word color, bold, italic, underline, highlightColor)
|
|
544
|
+
- 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)
|
|
545
|
+
- 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)
|
|
540
546
|
- projectMeta: globalVisualTheme, brandColors, mood, appCategory`,
|
|
541
547
|
inputSchema: z.object({
|
|
542
548
|
project_id: z.string().describe('Project ID to inspect'),
|
|
@@ -581,14 +587,14 @@ Returns the canvas state with:
|
|
|
581
587
|
// Tool 6: generate-background
|
|
582
588
|
server.registerTool('generate-background', {
|
|
583
589
|
title: 'Generate AI Background',
|
|
584
|
-
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.
|
|
585
|
-
|
|
586
|
-
Good prompts describe mood, lighting, and color — not objects or text:
|
|
587
|
-
- "Deep purple nebula with soft pink and blue light rays"
|
|
588
|
-
- "Warm sunset gradient with golden bokeh particles"
|
|
589
|
-
- "Dark moody atmosphere with teal and emerald glow"
|
|
590
|
-
- "Clean minimal white-to-light-gray gradient with subtle noise texture"
|
|
591
|
-
|
|
590
|
+
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.
|
|
591
|
+
|
|
592
|
+
Good prompts describe mood, lighting, and color — not objects or text:
|
|
593
|
+
- "Deep purple nebula with soft pink and blue light rays"
|
|
594
|
+
- "Warm sunset gradient with golden bokeh particles"
|
|
595
|
+
- "Dark moody atmosphere with teal and emerald glow"
|
|
596
|
+
- "Clean minimal white-to-light-gray gradient with subtle noise texture"
|
|
597
|
+
|
|
592
598
|
The generated image is cropped to exact device dimensions and set as the card's background.`,
|
|
593
599
|
inputSchema: z.object({
|
|
594
600
|
project_id: z.string().describe('Project ID'),
|
|
@@ -620,17 +626,17 @@ The generated image is cropped to exact device dimensions and set as the card's
|
|
|
620
626
|
// Tool 7: generate-panoramic-background
|
|
621
627
|
server.registerTool('generate-panoramic-background', {
|
|
622
628
|
title: 'Generate Panoramic Background',
|
|
623
|
-
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.
|
|
624
|
-
|
|
625
|
-
Two image sources:
|
|
626
|
-
- prompt: AI-generated via Gemini. Costs 6 credits.
|
|
627
|
-
- pexels_query: stock landscape photo from Pexels. Free.
|
|
628
|
-
|
|
629
|
-
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.
|
|
630
|
-
|
|
631
|
-
Good prompts describe a continuous scene, not objects or text:
|
|
632
|
-
- "Misty mountain range at dawn, soft pink-to-blue gradient sky"
|
|
633
|
-
- "Calm ocean horizon at golden hour with gentle waves"
|
|
629
|
+
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.
|
|
630
|
+
|
|
631
|
+
Two image sources:
|
|
632
|
+
- prompt: AI-generated via Gemini. Costs 6 credits.
|
|
633
|
+
- pexels_query: stock landscape photo from Pexels. Free.
|
|
634
|
+
|
|
635
|
+
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.
|
|
636
|
+
|
|
637
|
+
Good prompts describe a continuous scene, not objects or text:
|
|
638
|
+
- "Misty mountain range at dawn, soft pink-to-blue gradient sky"
|
|
639
|
+
- "Calm ocean horizon at golden hour with gentle waves"
|
|
634
640
|
- "Abstract flowing emerald and teal silk waves"`,
|
|
635
641
|
inputSchema: z.object({
|
|
636
642
|
project_id: z.string().describe('Project ID'),
|
|
@@ -668,16 +674,16 @@ Good prompts describe a continuous scene, not objects or text:
|
|
|
668
674
|
// Tool 8: prepare-screenshot-brief
|
|
669
675
|
server.registerTool('prepare-screenshot-brief', {
|
|
670
676
|
title: 'Prepare Screenshot Brief',
|
|
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).
|
|
674
|
-
|
|
675
|
-
Returns:
|
|
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
|
|
680
|
-
|
|
677
|
+
description: `Get a category playbook and repo-research checklist to prepare for screenshot generation. Call this BEFORE generate-screenshots. Free (no credits).
|
|
678
|
+
|
|
679
|
+
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).
|
|
680
|
+
|
|
681
|
+
Returns:
|
|
682
|
+
- A category playbook (frame-1 hooks + layout + arc + mood) for the app_category
|
|
683
|
+
- A category-specific repo research focus (what to grep this app for)
|
|
684
|
+
- A generic codebase research checklist (file patterns per tech stack)
|
|
685
|
+
- Headline tips + the codebase_context schema to fill in
|
|
686
|
+
|
|
681
687
|
The more you gather here, the better generate-screenshots does on the first try.`,
|
|
682
688
|
inputSchema: z.object({
|
|
683
689
|
app_category: z.string().optional()
|
|
@@ -815,6 +821,7 @@ The more you gather here, the better generate-screenshots does on the first try.
|
|
|
815
821
|
deviceTips.push('**Android (required for Play Store):**');
|
|
816
822
|
deviceTips.push('- Android Phone (android-phone): 1080×2340 — REQUIRED');
|
|
817
823
|
deviceTips.push('- Android Tablet 7" (android-tablet-10): 1200×1920 — REQUIRED');
|
|
824
|
+
deviceTips.push('- Android Tablet 10" (android-tablet-large): 1600×2560 — second large-screen slot');
|
|
818
825
|
deviceTips.push('');
|
|
819
826
|
}
|
|
820
827
|
// Schema reminder
|
|
@@ -857,21 +864,21 @@ The more you gather here, the better generate-screenshots does on the first try.
|
|
|
857
864
|
// Tool 9: upload-screenshots
|
|
858
865
|
server.registerTool('upload-screenshots', {
|
|
859
866
|
title: 'Upload App Screenshots',
|
|
860
|
-
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.
|
|
861
|
-
|
|
862
|
-
Reads files from your local filesystem, converts them to base64, and sets them on the device mockup elements in the specified cards.
|
|
863
|
-
|
|
864
|
-
Free — no credit cost. The screenshots are placed into the device frames that were created by generate-screenshots.
|
|
865
|
-
|
|
866
|
-
Workflow:
|
|
867
|
-
1. generate-screenshots → creates project with empty device frames
|
|
868
|
-
2. upload-screenshots → fills the device frames with your actual app UI
|
|
869
|
-
3. render-screenshots → exports final PNGs at App Store dimensions
|
|
870
|
-
|
|
871
|
-
Tips:
|
|
872
|
-
- Take screenshots from the iOS Simulator (Cmd+S) or Android emulator
|
|
873
|
-
- Use PNG format for best quality
|
|
874
|
-
- Screenshots are automatically fitted into the device frame
|
|
867
|
+
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.
|
|
868
|
+
|
|
869
|
+
Reads files from your local filesystem, converts them to base64, and sets them on the device mockup elements in the specified cards.
|
|
870
|
+
|
|
871
|
+
Free — no credit cost. The screenshots are placed into the device frames that were created by generate-screenshots.
|
|
872
|
+
|
|
873
|
+
Workflow:
|
|
874
|
+
1. generate-screenshots → creates project with empty device frames
|
|
875
|
+
2. upload-screenshots → fills the device frames with your actual app UI
|
|
876
|
+
3. render-screenshots → exports final PNGs at App Store dimensions
|
|
877
|
+
|
|
878
|
+
Tips:
|
|
879
|
+
- Take screenshots from the iOS Simulator (Cmd+S) or Android emulator
|
|
880
|
+
- Use PNG format for best quality
|
|
881
|
+
- Screenshots are automatically fitted into the device frame
|
|
875
882
|
- You can upload different screenshots to different cards`,
|
|
876
883
|
inputSchema: z.object({
|
|
877
884
|
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.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@appscreenshotstudio/mcp",
|
|
3
|
+
"version": "0.6.3",
|
|
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), `"ipad-13"`, `"android-phone"`, `"android-tablet-10"
|
|
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"`
|
|
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
|