Agent C — App Store Screenshots

AI-designed App Store screenshot sets from your app's screens, uploaded to App Store Connect.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
88%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,715Tokens (tool definitions)
~1.1 KBTypical response size
Moderate attention impact (1.34% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "app-store-screenshots": {
      "url": "https://api.theagentc.io/mcp"
    }
  }
}

Remote endpoints

https://api.theagentc.io/mcpstreamable-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_apps

The user's apps in Agent C, with how many screenshots each has uploaded.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
🟡add_app(app_store_url, name)

Add an app by its App Store link (imports name, icon, description), or by name if it isn't released yet. Importing a live app takes ~10-30s; poll list_apps until status is 'ready'.

Input Schema

{
  "type": "object",
  "properties": {
    "app_store_url": {
      "type": "string",
      "description": "e.g. https://apps.apple.com/us/app/…/id123456789"
    },
    "name": {
      "type": "string",
      "description": "Only for apps not on the App Store yet"
    }
  },
  "required": [],
  "additionalProperties": false
}
🟡get_upload_link(app_id, replace)

Best way to upload screenshots from files on disk: returns a one-time URL (valid 30 min) to POST the image files to with curl (multipart field 'files', up to 10 per request). Use this instead of upload_screenshots when you have a shell, so large images don't pass through the conversation.

Input Schema

{
  "type": "object",
  "properties": {
    "app_id": {
      "type": "string",
      "description": "app_id from list_apps / add_app"
    },
    "replace": {
      "type": "boolean",
      "default": true,
      "description": "First upload clears the app's old screenshots"
    }
  },
  "required": [
    "app_id"
  ],
  "additionalProperties": false
}
🟡upload_screenshots(app_id, images, replace)

Upload 1-10 raw screenshots of the app (plain captures of the real UI, ideally 4-10, in the order you'd like them considered). Each item is base64 image data (PNG/JPEG) or a public https URL. By default replaces the app's screenshot library.

Input Schema

{
  "type": "object",
  "properties": {
    "app_id": {
      "type": "string",
      "description": "app_id from list_apps / add_app"
    },
    "images": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 10
    },
    "replace": {
      "type": "boolean",
      "default": true
    }
  },
  "required": [
    "app_id",
    "images"
  ],
  "additionalProperties": false
}
🟡design_set(app_id, opener, focus, device, include)

Claude art-directs a full App Store screenshot set from the uploaded screenshots: opening shot, headline per slide, close-ups, palette. Returns watermarked preview images, the slide list and a link to open it in the Agent C studio. Takes ~40-60 seconds.

Input Schema

{
  "type": "object",
  "properties": {
    "app_id": {
      "type": "string",
      "description": "app_id from list_apps / add_app"
    },
    "opener": {
      "type": "string",
      "enum": [
        "auto",
        "hand",
        "icon",
        "photo",
        "phone"
      ],
      "default": "auto",
      "description": "Opening slide: hand holding the phone, big app icon, lifestyle photo, or a plain phone. auto lets Claude pick."
    },
    "focus": {
      "type": "string",
      "description": "Optional: what to emphasize (feature, audience, angle)."
    },
    "device": {
      "type": "string",
      "enum": [
        "iphone_69",
        "iphone_65",
        "ipad_13"
      ],
      "default": "iphone_69"
    },
    "include": {
      "type": "string",
      "enum": [
        "screenshots",
        "both",
        "header"
      ],
      "default": "screenshots",
      "description": "What to make: the screenshot set, screenshots + the App Store product page header (iOS 27), or only the header"
    }
  },
  "required": [
    "app_id"
  ],
  "additionalProperties": false
}
🟢get_set(set_id)

Current slides, unlock status and fresh preview images for a set.

Input Schema

{
  "type": "object",
  "properties": {
    "set_id": {
      "type": "string",
      "description": "set_id returned by design_set"
    }
  },
  "required": [
    "set_id"
  ],
  "additionalProperties": false
}
🔴edit_set(set_id, slide, headline, subline, screenshot, ...)

Change one slide (headline, subline, screenshot, layout, position, or remove it), the opening shot, the device size, or the App Store header (header_*). Re-renders previews. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "set_id": {
      "type": "string",
      "description": "set_id returned by design_set"
    },
    "slide": {
      "type": "integer",
      "minimum": 1,
      "description": "1-based slide number to change"
    },
    "headline": {
      "type": "string",
      "description": "Wrap words in *stars* to color them"
    },
    "subline": {
      "type": "string"
    },
    "screenshot": {
      "type": "integer",
      "minimum": 1,
      "description": "1-based screenshot to show on this slide"
    },
    "layout": {
      "type": "string",
      "enum": [
        "standard",
        "closeup",
        "tilt"
      ]
    },
    "move_to": {
      "type": "integer",
      "minimum": 1
    },
    "remove": {
      "type": "boolean"
    },
    "opener": {
      "type": "string",
      "enum": [
        "hand",
        "icon",
        "photo",
        "phone"
      ]
    },
    "device": {
      "type": "string",
      "enum": [
        "iphone_69",
        "iphone_65",
        "ipad_13"
      ]
    },
    "header_headline": {
      "type": "string",
      "description": "App Store header headline (*stars* color words). No prices, URLs, platform names or #1 claims."
    },
    "header_subline": {
      "type": "string"
    },
    "header_layout": {
      "type": "string",
      "enum": [
        "photo",
        "phones",
        "icon",
        "hand"
      ],
      "description": "Header visual: lifestyle photo, three phones, big icon, or a hand holding the phone"
    },
    "include": {
      "type": "string",
      "enum": [
        "screenshots",
        "both",
        "header"
      ],
      "default": "screenshots",
      "description": "What to make: the screenshot set, screenshots + the App Store product page header (iOS 27), or only the header"
    }
  },
  "required": [
    "set_id"
  ],
  "additionalProperties": false
}
🟡unlock_set(set_id)

Unlock clean, full-resolution files for a set. Uses a free unlock if the user has one; otherwise returns a $9.99 Stripe checkout link the USER must open and pay. Studio subscribers are already unlocked. Ask the user before calling.

Input Schema

{
  "type": "object",
  "properties": {
    "set_id": {
      "type": "string",
      "description": "set_id returned by design_set"
    }
  },
  "required": [
    "set_id"
  ],
  "additionalProperties": false
}
🟡export_set(set_id)

Render the unlocked set at exact App Store pixels without watermark and return download links (valid 7 days). Includes the product page header (3840x1646) and search-results image (3840x2560) when the set has a header.

Input Schema

{
  "type": "object",
  "properties": {
    "set_id": {
      "type": "string",
      "description": "set_id returned by design_set"
    }
  },
  "required": [
    "set_id"
  ],
  "additionalProperties": false
}
🔴send_to_app_store(set_id, create_version, locale)

Upload the unlocked set into the app's editable version in App Store Connect, replacing that language's screenshots for this device size. Never submits for review. Requires the user to have connected App Store Connect in Agent C. If the app has no editable version, ask the user, then call with create_version=true.

Input Schema

{
  "type": "object",
  "properties": {
    "set_id": {
      "type": "string",
      "description": "set_id returned by design_set"
    },
    "create_version": {
      "type": "boolean",
      "default": false
    },
    "locale": {
      "type": "string",
      "default": "en-US"
    }
  },
  "required": [
    "set_id"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools