Have more questions? Join our Discord
Upload local files
Use create_upload for local source files, artwork, sounds, and marketing images that are too large to pass inline.
Compute each file's SHA-256 and byte length from the same file you will upload:
shasum -a 256 AbyssalPredator.png
wc -c < AbyssalPredator.png
Call create_upload with the game's gameDefinitionId, sha256, byteLength, and
target: { type: "art", key: "AbyssalPredator" }.
Read the returned uploadUrl, then upload the unchanged file:
curl --data-binary @AbyssalPredator.png \
-H 'Content-Type: application/octet-stream' "$UPLOAD_URL"
Follow create_upload's description for limits, expiration, retries, and the other destinations.
Each file needs its own URL. Keep signed URLs out of logs.
The answer uses the same MCP envelope as upload_art: read content[0].text and check isError.