Reference
request_screenshot_upload
Signed upload URLs for screenshots that live only on the user’s machine.
What it does
- Writes
- Account required
How a full-resolution screenshot on somebody’s disk reaches a render without its bytes transiting the conversation. It mints one signed upload URL per slot; you or the user’s shell PUT each raw PNG to its URL, and you pass the returned refs into the render tools. Use it in MCP clients that are not ChatGPT, and in automation, instead of inline base64 for anything real.
You can ask: “Create upload slots for these three Tidebook screenshots.”
Input
countintegerrequiredmin 1max 10How many upload slots, one per screenshot.
namesarrayoptionalOriginal filenames, one per slot, e.g. ["01_home.png"].
each item
string
familystringoptionalat least 1 characterat most 80 charactersScreenshot family these slots belong to, e.g. "android". Omit for the base family.
localestringoptionalat least 1 characterat most 80 charactersLocale these slots belong to, e.g. "de-DE". Omit for the base locale.
Result
okbooleanrequiredslotsarrayoptionalrefanduploadUrlper screenshot.each item
object
instructionsstringoptional
Example
That request maps to this call:
{
"name": "request_screenshot_upload",
"arguments": {
"count": 3,
"names": [
"01-today.png",
"02-forecast.png",
"03-spots.png"
],
"locale": "en-US"
}
}One entry per slot: the signed upload URL to PUT to, and the ref to pass to a render.
Access and cost
- Needs an account, because the refs are account-scoped storage. Not available to an anonymous hosted caller.
- Free. Minting upload URLs spends no cloud credits.
- The reply discloses what the upload moves, why, how long an unretained upload is kept, and the one action that retains it: saving a project that references it. Say that before the bytes move.
- In ChatGPT, attachments go through import_screenshot instead. A user with a project can skip file transfer entirely and render the project.
When it refuses
- A PUT to the signed URL fails.
- The URL is short-lived. Mint a fresh batch rather than retrying an expired one.
- A ref renders as a missing shot.
- The slot was minted but never uploaded to. Every ref you pass has to have had its PNG PUT to the matching URL first.
Where this fits
What the agent is told
The title and description the server publishes on tools/list — this is the copy a model chooses between, reproduced verbatim.
Upload full-size screenshots
Mint signed upload URLs for screenshots on the user's machine. PUT each PNG to its URL, then pass the returned `ref`s to render or save_project.