Skip to main content
Glama
erayendes

Heimdall App Store Connect MCP

listing__upload_asset

Upload an image or video to an app's asset library and optionally place it on a store page in one call, handling Apple's reserve/upload/commit sequence.

Instructions

Upload an image or video file into an app’s asset library in one step, and optionally place it on a store page in the same call. Give the app, the file path and the category; to place it, add a placement type and either a locale (the version page) or the id of a custom product page, experiment or in-app event localization. Handles Apple’s reserve/upload/commit sequence, which the raw library tools cannot finish. PUBLIC-level write when it places the file; the upload alone shows nowhere.

Input Schema

NameRequiredDescriptionDefault
appYesApp name, bundle ID (com.example.app) or numeric Apple ID.
localeNoPlace on this locale of the version page, e.g. en-US or tr.
versionNoWith locale: version string, e.g. "2.4". Defaults to the most recent version.
categoryYesWhat the file is for in the library.
file_pathYesAbsolute path to a PNG or JPEG image, or an MP4 or MOV video, on this machine.
placement_typeNoOptional. Place the uploaded file as this. Leave out to upload without placing.
reference_nameNoOptional name to find the file by in the library. Defaults to the file name.
placement_groupNoOptional placement group, e.g. a device class. The allowed groups per type come from the asset library reference data.
preview_frame_time_codeNoVideos only, optional: the frame shown before playback, e.g. "00:00:05:00".
app_event_localization_idNoPlace on this in-app event localization instead.
custom_product_page_localization_idNoPlace on this custom product page localization instead.
experiment_treatment_localization_idNoPlace on this product page optimization treatment localization instead.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.8.0

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-read-only, non-idempotent write, and the description adds real context beyond that: it discloses the internal Apple reserve/upload/commit sequence, notes raw library tools cannot complete it, and states that placement yields a PUBLIC-level write while an unplaced upload 'shows nowhere' — a visibility consequence that matters for a mutating tool. It stops short of saying what a repeat call does (duplicate assets vs. replacement), which is the main residual gap given idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the action, followed by the placement recipe and then the behavioral note. No repetition of schema field descriptions and nothing extraneous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, non-idempotent write with no output schema, the description covers the required inputs, the optional placement routing and the public-visibility consequence. It leaves the caller without any indication of what the call returns (e.g. an asset or placement ID needed for follow-up calls like listing__delete_assets).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so individual parameters are already documented. The description still adds cross-parameter meaning the schema cannot express: the 'either a locale or one of the custom product page / experiment / event localization IDs' exclusivity, and that placement_type is the switch between upload-only and upload-and-place.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: uploading an image or video into an app's asset library, with an optional secondary effect (placing it on a store page). It is clearly distinguishable from sibling listing__upload_screenshot (single screenshot) and apps__asset_library__get (read) by naming the one-step upload-and-place behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditions for the placement path: add a placement_type plus either a locale (version page) or one of the three localization IDs, and it notes the file is uploaded without placement if you omit them. It does not explicitly say when to prefer listing__upload_screenshot or the raw library tools instead, so the routing is clear for this tool but not against its closest sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools