@appscreen/mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| APPSCREEN_API_KEY | No | Optional. MCP key (mcm_live_…) from https://appscreen.co/account/keys. Works on every plan, Free included. Omit for anonymous use (5 lifetime renders). | |
| APPSCREEN_BASE_URL | No | Override API URL. Defaults to https://api.appscreen.co. | https://api.appscreen.co |
| APPSCREEN_MCP_CLIENT | No | Override client identifier (auto-detected from MCP initialize). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| render_screenshotsA | Queue a screenshot render; returns jobId, poll get_render_status until done, then fetch the bundle from the resource_link. BEFORE CALLING THIS: read the appscreen://options resource and present the user the FULL menu of background effects, frames, and presets — each has a preview URL they can open. Let the user pick; never choose a background or frame silently. blur+tint, mesh, and every frame are all valid choices they should see. IMAGES — put a local file path right on the element; the server reads the bytes off disk and wires up the binding for you. Never base64 real screenshots (a large base64 corrupts token-by-token → renders black):
• screenshot: screens[i].screenshot.path = " Geometry is automatic: omit screenshot.box and the server centers the device at the correct aspect ratio. screensMeta is auto-derived when you upload exactly one file per screen. Text overlays use the tiptap doc format and support rich, PARTIAL styling — per-run color, fontSize, fontWeight, fontFamily (~37 fonts), plus bold/italic/underline and per-paragraph align. See appscreen://schema/text + appscreen://catalog/fonts. Free anonymous tier: 5 lifetime renders. |
| get_render_statusA | Returns status (queued|running|done|failed), progress, and downloadUrl when ready. Only needed when render_screenshots returned a jobId with status=queued (the keyed/async path). Anonymous and small renders often complete inline — if render_screenshots already returned a downloadUrl, you do NOT need to poll. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| choose-style | Walk the user through the full option menu — backgrounds, effects, frames — with preview links, before any render. Use this when the user hasn't specified a look yet. |
| quick-start | Minimal one-screen render to verify the integration end-to-end. |
| localize | Reuse a previous job's screens against a fresh set of target locales. |
| from-app-icon | Sample colors from an app icon PNG and apply them to the screenshot background. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| options | The complete, self-describing menu of backgrounds, effects, frames, presets, sizes and layouts — each with a clickable preview URL. Show this to the user and let them choose; do not pick silently. |
| schema-text | The exact JSON shape + supported marks for text objects in screens[].objects. |
| catalog-sizes | Valid canvas sizes (App Store + Play Store). |
| catalog-langs | Supported locales. |
| catalog-frames | Valid frameId values for screen.screenshot.frameId. |
| catalog-backgrounds | Valid background kinds, presets, and effects. |
| catalog-layouts | Output bundle layouts (fastlane, flutter, etc.). |
| catalog-fonts | Font ids for textStyle.fontFamily + the full text mark vocabulary (color, size, weight, family, align, partial per-run styling). |
| account | Current plan, workspace, credit balance (1 credit = 1 exported image), and reset time. |
| upgrade | Plans, one-time credit packs and the pricing URL, for when credits run out. |
TDQS
Scored across 2 tools
The tools have perfectly distinct responsibilities: one initiates the asynchronous rendering job, and the other checks the status of that job. There is no functional overlap between the two endpoints.
Both tool names follow a highly consistent and predictable `verb_noun` pattern (`render_screenshots` and `get_render_status`). This clear convention aids immediate agent understanding.
For managing a multi-step asynchronous process like rendering, two tools are ideally scoped. They capture the essential start and check functions without introducing unnecessary complexity.
The tools successfully cover the core lifecycle of requesting and monitoring a render job. The only minor gap is the lack of an explicit 'cancel' or 'update' operation for an existing job.