# AppScreenStudio (remote · www.appscreenstudio.com)

Design App Store and Google Play screenshots with your AI agent in the AppScreenStudio editor.

- Trust score: 70/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-23

## Components

- remote · `www.appscreenstudio.com`: 70/100 (this document), [markdown](https://verifymcp.io/servers/com-appscreenstudio-app-screen-studio/api-mcp.md), [page](https://verifymcp.io/servers/com-appscreenstudio-app-screen-studio/api-mcp)

## Channel facts

- Endpoint: `https://www.appscreenstudio.com/api/mcp`
- Transports: `streamable-http`
- Auth: `required (not validated)`
- Version: `0.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-23.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 54/100
  - AI-judged instruction clarity (fair).
  - Context-footprint check failed: tool/resource definitions use about 6830 tokens (~139/item across 49 items; 49 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 78/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 35% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "remove_text" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 50 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 40/100
  - Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28.

## Install

### How do I install the AppScreenStudio MCP server?

AppScreenStudio is a hosted endpoint at https://www.appscreenstudio.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-appscreenstudio-app-screen-studio 'https://www.appscreenstudio.com/api/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-appscreenstudio-app-screen-studio": {
      "url": "https://www.appscreenstudio.com/api/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-appscreenstudio-app-screen-studio": {
      "type": "http",
      "url": "https://www.appscreenstudio.com/api/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-appscreenstudio-app-screen-studio]
url = "https://www.appscreenstudio.com/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-appscreenstudio-app-screen-studio": {
      "type": "remote",
      "url": "https://www.appscreenstudio.com/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-appscreenstudio-app-screen-studio --url 'https://www.appscreenstudio.com/api/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-appscreenstudio-app-screen-studio:
    url: "https://www.appscreenstudio.com/api/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-appscreenstudio-app-screen-studio": {
      "Transport": "http",
      "Url": "https://www.appscreenstudio.com/api/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-appscreenstudio-app-screen-studio -t streamable-http -u 'https://www.appscreenstudio.com/api/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-appscreenstudio-app-screen-studio": {
      "type": "http",
      "url": "https://www.appscreenstudio.com/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-23 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-20 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-19 (score 68, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-18 (score 68)

First indexed and scored.

## MCP tools (49)

### `get_editor_snapshot` (~123 tokens)

Read one platform of the open editor. Pass platform or platformSetId to include that set's screenshots. With no argument, a project with one platform set returns that set. A project with more than one set returns the set directory and screenshotsOmitted, without screenshot bodies. Call again with platform or an id from that directory.

Input parameters:

- `platform` (string): Open every set of this platform. Use this when you know the store and not the set id.
- `platformSetId` (string): Open this set. Ids come from a snapshot that omitted screenshots.

### `update_text` (~271 tokens)

Update a text layer on a screenshot in the open editor.

Input parameters:

- `align` (string)
- `backgroundColor` (string)
- `borderColor` (string)
- `borderRadius` (number)
- `color` (string): CSS color, such as #ffffff
- `content` (string)
- `fontFamily` (string): Font for the whole layer, such as Nunito: a built-in editor font or one added with add_project_font.
- `fontSize` (number): Font size in CSS pixels on the 500px-tall editor canvas.
- `fontWeight` (string)
- `lineHeight` (number): Multiplier of the font size
- `rotation` (number)
- `screenshotId` (string, required)
- `textId` (string, required)
- `textShadowBlur` (number)
- `textShadowColor` (string)
- `textShadowEnabled` (boolean)
- `textShadowOffsetX` (number)
- `textShadowOffsetY` (number)
- `x` (number): Layer center, in percent of the card width from the card center. 50 is the right edge.
- `y` (number): Layer center, in percent of the card height from the card center. 50 is the bottom edge.

### `add_text` (~263 tokens)

Add a text layer to a screenshot in the open editor.

Input parameters:

- `align` (string)
- `backgroundColor` (string)
- `borderColor` (string)
- `borderRadius` (number)
- `color` (string): CSS color, such as #ffffff
- `content` (string, required)
- `fontFamily` (string): Font for the whole layer, such as Nunito: a built-in editor font or one added with add_project_font.
- `fontSize` (number): Font size in CSS pixels on the 500px-tall editor canvas.
- `fontWeight` (string)
- `lineHeight` (number): Multiplier of the font size
- `rotation` (number)
- `screenshotId` (string, required)
- `textShadowBlur` (number)
- `textShadowColor` (string)
- `textShadowEnabled` (boolean)
- `textShadowOffsetX` (number)
- `textShadowOffsetY` (number)
- `x` (number): Layer center, in percent of the card width from the card center. 50 is the right edge.
- `y` (number): Layer center, in percent of the card height from the card center. 50 is the bottom edge.

### `remove_text` (~36 tokens)

Remove a text layer from a screenshot in the open editor.

Input parameters:

- `screenshotId` (string, required)
- `textId` (string, required)

### `add_screenshot` (~89 tokens)

Add a card to the end of a platform set. The card is not blank: the set's first three cards get the template's sample texts and phone placement (sometimes a hidden or tilted phone), and later cards copy every layer of the set's last card without its phone image. Returns the ids of those layers so you can update or remove them.

Input parameters:

- `platformSetId` (string, required)

### `update_screenshot` (~793 tokens)

Update a card and its main phone: background, phone placement and app screen, pattern, fade, or shadow. imageUrl is the app screen inside the phone (upload_image with type screenshot). The phone model is chosen per platform set with set_device.

Input parameters:

- `backgroundColor` (string)
- `backgroundImage` (string)
- `backgroundImageBlur` (number)
- `backgroundPatternColor` (string)
- `backgroundPatternId` (string)
- `bottomFadeColor` (string): Ignored. The fade always goes to transparent, so whatever is behind the phone shows through.
- `bottomFadeEnabled` (boolean)
- `bottomFadeHeight` (number)
- `bottomFadePosition` (string)
- `deviceId` (string): This phone's own device, any set_device id. Empty string follows the platform set's device.
- `deviceModelColor` (string): HyperRealistic (threeDFrame): this phone's own real finish, a deviceColors id of its device. Empty string clears it.
- `focusOverlayBlurBackground` (boolean)
- `focusOverlayBorderColor` (string)
- `focusOverlayBorderRadius` (number)
- `focusOverlayBorderWidth` (number)
- `focusOverlayCropBottom` (number)
- `focusOverlayCropTop` (number)
- `focusOverlayEnabled` (boolean)
- `focusOverlayOffsetY` (number): Vertical offset of the focus overlay, as a percent of its height. Negative moves it up. Range is -1000 to 1000.
- `focusOverlayShadowBlur` (number)
- `focusOverlayShadowColor` (string)
- `focusOverlayShadowEnabled` (boolean)
- `focusOverlayShadowOffsetX` (number)
- `focusOverlayShadowOffsetY` (number)
- `foldAmount` (number): Foldable devices and laptops only. iphone-duo: 0 is open flat, 1 is closed; imageUrl shows on the inner display. MacBooks (macbook-*): the lid, opening = 120 x (1 - foldAmount) degrees (0 fully open,…
- `hideCardOverflow` (boolean)
- `imageDisabled` (boolean)
- `imageRotation` (number): Old name of rotationZ; it sets rotationZ.
- `imageScale` (number)
- `imageUrl` (string)
- `imageX` (number): Phone center, in pixels from the card center on the 500px-tall card.
- `imageY` (number): Phone center, in pixels from the card center on the 500px-tall card. Positive moves down.
- `outerImageUrl` (string): Foldable devices (iphone-duo) only: the outer display's image URL (shows when folded). Empty string clears it.
- `phoneColor` (string): This phone's own generic color (black, white, orange, silver, space-gray, blue, purple, red, green). Empty string follows the platform set's color.
- `rotationX` (number): Tilt in degrees (top away from the viewer). 3D frames only.
- `rotationY` (number): Turn in degrees (right side away from the viewer). 3D frames only.
- `rotationZ` (number): The phone's rotation in degrees, on every frame (with no tilt it is a flat rotation).
- `screenshotId` (string, required)
- `shadowBlur` (number)
- `shadowColor` (string)
- `shadowEnabled` (boolean)
- `shadowOffsetX` (number)
- `shadowOffsetY` (number)

### `remove_screenshot` (~25 tokens)

Remove a screenshot from the open editor.

Input parameters:

- `screenshotId` (string, required)

### `add_asset` (~182 tokens)

Add an image layer to a card. src is an image URL, such as one from upload_image or list_library. Pass spriteCoordinate to crop one pose of a sprite sheet.

Input parameters:

- `height` (number): CSS pixels on the 500px-tall card.
- `rotation` (number): Degrees, clockwise.
- `screenshotId` (string, required)
- `spriteCoordinate` (object): Crop rectangle on the source image, in source pixels. Use a pose from list_library.
- `src` (string, required)
- `width` (number): CSS pixels on the 500px-tall card.
- `x` (number): Layer center, in percent of the card width from the card center. 50 is the right edge.
- `y` (number): Layer center, in percent of the card height from the card center. 50 is the bottom edge.

### `update_asset` (~138 tokens)

Update an image layer on a screenshot in the open editor.

Input parameters:

- `assetId` (string, required)
- `height` (number): CSS pixels on the 500px-tall card.
- `rotation` (number)
- `screenshotId` (string, required)
- `src` (string)
- `width` (number): CSS pixels on the 500px-tall card.
- `x` (number): Layer center, in percent of the card width from the card center. 50 is the right edge.
- `y` (number): Layer center, in percent of the card height from the card center. 50 is the bottom edge.

### `remove_asset` (~36 tokens)

Remove an image layer from a screenshot in the open editor.

Input parameters:

- `assetId` (string, required)
- `screenshotId` (string, required)

### `add_div` (~601 tokens)

Add a box layer to a card. Pass html to draw a custom card: width and height set its layout box, and every visible style goes in the html, since backgroundColor and borderRadius only style plain boxes without html. A style element stays inside the card.

Input parameters:

- `backgroundColor` (string)
- `borderRadius` (number)
- `height` (number, required): CSS pixels on the 500px-tall card.
- `html` (string): Custom card HTML, up to 8000 characters. Image src and CSS url() must be URLs from upload_image with type asset; data: URLs are rejected. font-family can use built-in editor fonts and fonts added wit…
- `layer` (string): front paints above the phone and image layers, back paints behind the phone. Text layers always paint above both. Defaults to front for html cards and back for plain boxes.
- `opacity` (number)
- `rotationX` (number): 3D tilt in degrees, -360 to 360, about the box center with the same perspective as phones. 0 is flat.
- `rotationY` (number): 3D tilt in degrees, -360 to 360, about the box center with the same perspective as phones. 0 is flat.
- `rotationZ` (number): 3D tilt in degrees, -360 to 360, about the box center with the same perspective as phones. 0 is flat.
- `scale` (number): Visual multiplier from the center, 0.1 to 4. The html keeps its layout size and does not reflow. 1 is natural size.
- `screenshotId` (string, required)
- `width` (number, required): CSS pixels on the 500px-tall card.
- `x` (number): Layer center, in percent of the card width from the card center. 50 is the right edge.
- `y` (number): Layer center, in percent of the card height from the card center. 50 is the bottom edge.

### `update_div` (~354 tokens)

Update a box layer on a card.

Input parameters:

- `backgroundColor` (string)
- `borderRadius` (number)
- `divId` (string, required)
- `height` (number): CSS pixels on the 500px-tall card.
- `html` (string): New card HTML, with the same rules as add_div html. Empty string clears the card.
- `layer` (string): front paints above the phone and image layers, back paints behind the phone. Text layers always paint above both. Defaults to front for html cards and back for plain boxes.
- `opacity` (number)
- `rotationX` (number): 3D tilt in degrees, -360 to 360, about the box center with the same perspective as phones. 0 is flat.
- `rotationY` (number): 3D tilt in degrees, -360 to 360, about the box center with the same perspective as phones. 0 is flat.
- `rotationZ` (number): 3D tilt in degrees, -360 to 360, about the box center with the same perspective as phones. 0 is flat.
- `scale` (number): Visual multiplier from the center, 0.1 to 4. The html keeps its layout size and does not reflow. 1 is natural size.
- `screenshotId` (string, required)
- `width` (number): CSS pixels on the 500px-tall card.
- `x` (number): Layer center, in percent of the card width from the card center. 50 is the right edge.
- `y` (number): Layer center, in percent of the card height from the card center. 50 is the bottom edge.

### `remove_div` (~36 tokens)

Remove a box layer from a screenshot in the open editor.

Input parameters:

- `divId` (string, required)
- `screenshotId` (string, required)

### `add_phone` (~750 tokens)

Add another phone to a screenshot card in the open editor. It uses the platform set's device frame and starts next to the main phone with its size, rotation, and shadow. Set imageUrl to an image URL (upload_image with type screenshot). Extra phones paint above the main phone, in the order they were added. Returns phoneId.

Input parameters:

- `bottomFadeColor` (string): Ignored. The fade always goes to transparent, so whatever is behind the phone shows through.
- `bottomFadeEnabled` (boolean)
- `bottomFadeHeight` (number)
- `bottomFadePosition` (string)
- `deviceId` (string): This phone's own device, any set_device id. Empty string follows the platform set's device.
- `deviceModelColor` (string): HyperRealistic (threeDFrame): this phone's own real finish, a deviceColors id of its device. Empty string clears it.
- `focusOverlayBlurBackground` (boolean)
- `focusOverlayBorderColor` (string)
- `focusOverlayBorderRadius` (number)
- `focusOverlayBorderWidth` (number)
- `focusOverlayCropBottom` (number)
- `focusOverlayCropTop` (number)
- `focusOverlayEnabled` (boolean)
- `focusOverlayOffsetY` (number): Vertical offset of the focus overlay, as a percent of its height. Negative moves it up. Range is -1000 to 1000.
- `focusOverlayShadowBlur` (number)
- `focusOverlayShadowColor` (string)
- `focusOverlayShadowEnabled` (boolean)
- `focusOverlayShadowOffsetX` (number)
- `focusOverlayShadowOffsetY` (number)
- `foldAmount` (number): Foldable devices and laptops only. iphone-duo: 0 is open flat, 1 is closed; imageUrl shows on the inner display. MacBooks (macbook-*): the lid, opening = 120 x (1 - foldAmount) degrees (0 fully open,…
- `imageRotation` (number): Old name of rotationZ; it sets rotationZ.
- `imageScale` (number)
- `imageUrl` (string)
- `imageX` (number): Phone center, in pixels from the card center on the 500px-tall card.
- `imageY` (number): Phone center, in pixels from the card center on the 500px-tall card. Positive moves down.
- `outerImageUrl` (string): Foldable devices (iphone-duo) only: the outer display's image URL (shows when folded). Empty string clears it.
- `phoneColor` (string): This phone's own generic color (black, white, orange, silver, space-gray, blue, purple, red, green). Empty string follows the platform set's color.
- `rotationX` (number): Tilt in degrees (top away from the viewer). 3D frames only.
- `rotationY` (number): Turn in degrees (right side away from the viewer). 3D frames only.
- `rotationZ` (number): The phone's rotation in degrees, on every frame (with no tilt it is a flat rotation).
- `screenshotId` (string, required)
- `shadowBlur` (number)
- `shadowColor` (string)
- `shadowEnabled` (boolean)
- `shadowOffsetX` (number)
- `shadowOffsetY` (number)

### `update_phone` (~718 tokens)

Update an extra phone added with add_phone. Takes the same phone fields as update_screenshot. The main phone is edited with update_screenshot.

Input parameters:

- `bottomFadeColor` (string): Ignored. The fade always goes to transparent, so whatever is behind the phone shows through.
- `bottomFadeEnabled` (boolean)
- `bottomFadeHeight` (number)
- `bottomFadePosition` (string)
- `deviceId` (string): This phone's own device, any set_device id. Empty string follows the platform set's device.
- `deviceModelColor` (string): HyperRealistic (threeDFrame): this phone's own real finish, a deviceColors id of its device. Empty string clears it.
- `focusOverlayBlurBackground` (boolean)
- `focusOverlayBorderColor` (string)
- `focusOverlayBorderRadius` (number)
- `focusOverlayBorderWidth` (number)
- `focusOverlayCropBottom` (number)
- `focusOverlayCropTop` (number)
- `focusOverlayEnabled` (boolean)
- `focusOverlayOffsetY` (number): Vertical offset of the focus overlay, as a percent of its height. Negative moves it up. Range is -1000 to 1000.
- `focusOverlayShadowBlur` (number)
- `focusOverlayShadowColor` (string)
- `focusOverlayShadowEnabled` (boolean)
- `focusOverlayShadowOffsetX` (number)
- `focusOverlayShadowOffsetY` (number)
- `foldAmount` (number): Foldable devices and laptops only. iphone-duo: 0 is open flat, 1 is closed; imageUrl shows on the inner display. MacBooks (macbook-*): the lid, opening = 120 x (1 - foldAmount) degrees (0 fully open,…
- `imageRotation` (number): Old name of rotationZ; it sets rotationZ.
- `imageScale` (number)
- `imageUrl` (string)
- `imageX` (number): Phone center, in pixels from the card center on the 500px-tall card.
- `imageY` (number): Phone center, in pixels from the card center on the 500px-tall card. Positive moves down.
- `outerImageUrl` (string): Foldable devices (iphone-duo) only: the outer display's image URL (shows when folded). Empty string clears it.
- `phoneColor` (string): This phone's own generic color (black, white, orange, silver, space-gray, blue, purple, red, green). Empty string follows the platform set's color.
- `phoneId` (string, required)
- `rotationX` (number): Tilt in degrees (top away from the viewer). 3D frames only.
- `rotationY` (number): Turn in degrees (right side away from the viewer). 3D frames only.
- `rotationZ` (number): The phone's rotation in degrees, on every frame (with no tilt it is a flat rotation).
- `screenshotId` (string, required)
- `shadowBlur` (number)
- `shadowColor` (string)
- `shadowEnabled` (boolean)
- `shadowOffsetX` (number)
- `shadowOffsetY` (number)

### `remove_phone` (~33 tokens)

Remove an extra phone added with add_phone.

Input parameters:

- `phoneId` (string, required)
- `screenshotId` (string, required)

### `reorder_element` (~84 tokens)

Move a layer one step forward or backward among layers of the same kind. It cannot move a layer across kinds: back to front, cards always paint back divs, phones, image layers, front divs, then texts.

Input parameters:

- `direction` (string, required)
- `elementId` (string, required)
- `kind` (string, required)
- `screenshotId` (string, required)

### `set_template` (~24 tokens)

Set the template of the open project.

Input parameters:

- `templateId` (string, required)

### `update_template_color` (~100 tokens)

Update one color of the open project's template. colorId must be one of the current template's colors: minimal (bg), gradient (from, via, to), geometric (bg, circle1, circle2), wave (from, to, wave), glass (from, to), connected (bg, dots). value is a CSS color such as #22c55e.

Input parameters:

- `colorId` (string, required)
- `value` (string, required)

### `set_resolution` (~40 tokens)

Set the pixel size of a platform set.

Input parameters:

- `height` (number, required)
- `platformSetId` (string, required)
- `width` (number, required)

### `set_device` (~240 tokens)

Set the device of a platform set. iOS sets take iphone-13-pro, iphone-13-pro-max, iphone-15-pro, iphone-15-pro-max, iphone-17-pro, iphone-17-pro-max, iphone-18-pro, iphone-18-pro-max, iphone-duo, borderless-frame, ipad-pro-12, ipad-pro-13, macbook-air-13, macbook-air-15, macbook-pro-14, macbook-pro-16. Android sets take pixel-8-pro, galaxy-s24-ultra, galaxy-s26-ultra, galaxy-tab-s10, android-borderless-frame. Social sets take any of them. borderless-frame and android-borderless-frame show the screenshot without a phone frame. macbook-air-13, macbook-air-15, macbook-pro-14, macbook-pro-16 are MacBooks: HyperRealistic 3D only, the screenshot fills the display (a 16:10 Mac screenshot loses a sliver at the sides), the lid is set with foldAmount.

Input parameters:

- `deviceId` (string, required)
- `platformSetId` (string, required)

### `set_phone_color` (~132 tokens)

Set the device color of a platform set. On a HyperRealistic (threeDFrame) set the device shows only its real finishes: pass one of the set's deviceColors ids (see the snapshot); a generic color (black, white, orange, silver, space-gray, blue, purple, red, green) picks the closest real finish.

Input parameters:

- `color` (string, required): A generic color (black, white, orange, silver, space-gray, blue, purple, red, green) or, on a HyperRealistic set, a deviceColors id.
- `platformSetId` (string, required)

### `set_show_notch` (~36 tokens)

Show or hide the notch on a platform set.

Input parameters:

- `platformSetId` (string, required)
- `show` (boolean, required)

### `set_squircle_frame` (~39 tokens)

Enable or disable the squircle frame on a platform set.

Input parameters:

- `enabled` (boolean, required)
- `platformSetId` (string, required)

### `set_link_texts` (~27 tokens)

Link or unlink matching text layers across platform sets.

Input parameters:

- `enabled` (boolean, required)

### `rename_project` (~20 tokens)

Rename the open project.

Input parameters:

- `name` (string, required)

### `undo` (~16 tokens)

Undo the last edit in the open editor.

### `redo` (~18 tokens)

Redo the last undone edit in the open editor.

### `search_google_fonts` (~89 tokens)

Search Google Fonts by family name, category, or both. usable is true when the project can already use the family: a built-in editor font or one added with add_project_font.

Input parameters:

- `category` (string)
- `limit` (number): 1 to 50. Defaults to 20.
- `query` (string): Part of a family name, such as caveat or mono.

### `add_project_font` (~63 tokens)

Add a Google Fonts family to the open project. Then use it as fontFamily on text layers or as font-family in card html. Built-in editor fonts need no adding.

Input parameters:

- `family` (string, required): Exact family name from search_google_fonts, such as Caveat.

### `list_library` (~110 tokens)

List assets or mascots saved on this account (not screenshots or backgrounds). Items with spriteSheet true have poses, crop rectangles for add_asset spriteCoordinate. Also returns one image of up to 10 items with each id beside its picture.

Input parameters:

- `kind` (string, required)
- `limit` (number): Page size, 1 to 50. Defaults to 20. Mascots are capped at 10.
- `page` (number): Page number, starting at 1. Defaults to 1.

### `get_sprite` (~52 tokens)

Return one saved asset or mascot in the same shape as a list_library item, including spriteSheet and poses. Also returns one image of each pose with its index drawn beside it.

Input parameters:

- `imageId` (string, required)

### `generate_asset` (~91 tokens)

Generate an asset sprite with AI and save it to the account library. Spends credits. Returns imageUrl and poses like get_sprite, with a preview of each pose. Does not place it on a card.

Input parameters:

- `prompt` (string): What to draw, up to 2000 characters.
- `quality` (string)
- `referenceUrl` (string): Optional https image URL used as a visual reference.

### `generate_mascot` (~108 tokens)

Generate a mascot sprite with AI and save it to the account library. Spends credits. Returns imageUrl and poses like get_sprite, with a preview of each pose. Does not place it on a card.

Input parameters:

- `presetId` (string)
- `prompt` (string): What to draw, up to 2000 characters. Optional when presetId is set.
- `quality` (string)
- `referenceUrl` (string): Optional https image URL used as a visual reference.

### `generate_background` (~35 tokens)

Generate an AI background for one card. Spends credits.

Input parameters:

- `prompt` (string)
- `screenshotId` (string, required)

### `update_store_listing` (~51 tokens)

Update App Store or Google Play listing fields for the current language. Does not generate copy. Returns the names of the fields written.

Input parameters:

- `appStore` (object)
- `googlePlay` (object)

### `capture_platform_strip` (~52 tokens)

Return one JPEG of every card in a platform set side by side, as the editor renders them. Use it to check your edits. Defaults to the first platform set.

Input parameters:

- `platformSetId` (string)

### `upload_image` (~188 tokens)

Prepare an image upload for the open project. Returns a one-time uploadUrl. POST the image as multipart form field "file" to that URL. The response JSON url is the stored image. Use it with update_screenshot imageUrl, add_asset src, set_project_background, or img src and CSS url() inside add_div or update_div html. For card images, use type asset. The link works once; if the POST fails, call this tool again. Pass base64 only when you cannot make that HTTP request.

Input parameters:

- `base64` (string): Optional raw base64 or data URL. Omit this and POST the file to uploadUrl.
- `filename` (string, required): File name, 1 to 120 characters, no path. Use a png, jpg, jpeg, or webp extension. For type asset, svg is also allowed.
- `type` (string, required)

### `duplicate_screenshot` (~28 tokens)

Duplicate a screenshot and insert the copy immediately after it.

Input parameters:

- `screenshotId` (string, required)

### `copy_screenshot` (~35 tokens)

Copy a screenshot onto another platform set.

Input parameters:

- `screenshotId` (string, required)
- `targetPlatformSetId` (string, required)

### `move_screenshot` (~35 tokens)

Move a screenshot left or right within its platform set.

Input parameters:

- `direction` (string, required)
- `screenshotId` (string, required)

### `set_language` (~29 tokens)

Switch the open editor to a language that already exists on the project.

Input parameters:

- `lang` (string, required)

### `ai_translate` (~121 tokens)

Add up to 5 languages by translating the open language with the same AI localize flow as the editor. Translates iOS and Android screenshot text and the store listing. Social screenshot text is copied unchanged. Spends credits. Does not switch the open language. Fails when the account cannot spend credits or a code is already on the project.

Input parameters:

- `languages` (array, required): Language codes to add, 1 to 5 unique codes. Examples: tr, de, ja, zh-Hans, pt-BR, es-419, en-GB.

### `add_platform_set` (~32 tokens)

Add a platform set to the open project.

Input parameters:

- `name` (string)
- `platform` (string, required)

### `remove_platform_set` (~32 tokens)

Remove an extra platform set. The first set of each platform stays.

Input parameters:

- `platformSetId` (string, required)

### `set_project_background` (~41 tokens)

Set or clear the project background image. Pass an empty imageUrl to clear it.

Input parameters:

- `blur` (number)
- `imageUrl` (string, required)

### `set_realistic_frame` (~109 tokens)

Enable or disable the realistic device frame on a platform set. With threeD true the frame is a 3D device model (HyperRealistic) that also takes rotationX, rotationY, and rotationZ. 3D works on every device except borderless-frame and android-borderless-frame.

Input parameters:

- `enabled` (boolean, required)
- `platformSetId` (string, required)
- `threeD` (boolean): 3D device model instead of the flat realistic frame. Requires enabled true.

### `report_mcp_feedback` (~54 tokens)

Report a bug, an unexpected tool result, or a suggestion about these MCP tools, when you notice one.

Input parameters:

- `kind` (string, required)
- `message` (string, required)
- `toolName` (string)

### `rate_this_mcp` (~52 tokens)

Rate how well these MCP tools worked for the task you just finished, from 1 to 5 stars. Call it once per task.

Input parameters:

- `comment` (string)
- `stars` (integer, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-appscreenstudio-app-screen-studio/api-mcp#diagnostics

## Score history

- 2026-10-23: 70
- 2026-10-22: 69
- 2026-10-21: 69
- 2026-10-20: 69
- 2026-10-19: 68
- 2026-10-18: 68

## Common questions

### What is the AppScreenStudio MCP server?

AppScreenStudio is an MCP server listed in the public MCP registry as com.appscreenstudio/app-screen-studio. Design App Store and Google Play screenshots with your AI agent in the AppScreenStudio editor. This page covers its hosted endpoint (https://www.appscreenstudio.com/api/mcp).

### Is the AppScreenStudio MCP server safe to use?

AppScreenStudio scores 70 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the AppScreenStudio MCP server expose?

AppScreenStudio exposes 49 tools: get_editor_snapshot, update_text, add_text, remove_text, add_screenshot, and 44 more. Their descriptions and schemas cost roughly 6,631 tokens of context every time the server is loaded.

### Does the AppScreenStudio MCP server require authentication?

Yes. AppScreenStudio asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the AppScreenStudio MCP server still maintained?

AppScreenStudio is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://www.appscreenstudio.com/api/mcp
- Authorisation metadata: https://www.appscreenstudio.com/.well-known/oauth-protected-resource/api/mcp
- Repository: https://github.com/appscreenstudio/appscreenstudio-mcp
- Website: https://www.appscreenstudio.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-appscreenstudio-app-screen-studio/api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-appscreenstudio-app-screen-studio/api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-appscreenstudio-app-screen-studio/api-mcp
