Reference

request_screenshot_upload

Signed upload URLs for screenshots that live only on the user’s machine.

View as Markdown

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 10

    How many upload slots, one per screenshot.

  • namesarrayoptional

    Original filenames, one per slot, e.g. ["01_home.png"].

    each item

    string

  • familystringoptionalat least 1 characterat most 80 characters

    Screenshot family these slots belong to, e.g. "android". Omit for the base family.

  • localestringoptionalat least 1 characterat most 80 characters

    Locale these slots belong to, e.g. "de-DE". Omit for the base locale.

Result

  • okbooleanrequired

  • slotsarrayoptional

    ref and uploadUrl per 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.