Sume remote MCP upload URL is redacted: use a public HTTPS URL

On Sume's hosted MCP the upload.url from assets_upload_url comes back redacted, so a remote agent cannot PUT. Pass a public HTTPS URL, or upload over REST.

5 min readSume
All posts

A remote MCP agent cannot upload bytes to Sume: the assets_upload_url tool returns upload.url redacted on hosted MCP, so there is nothing to PUT to. If the media is already public, pass its HTTPS URL straight to the generator. If the bytes are local, upload them through the REST API with a key, outside MCP, then call assets_complete.

The tool behavior is from the Sume MCP tool contracts; the general flow is from MCP tools and gates. Both were read on 2026-10-03. Note that the docs page describes the flow in general terms and the tool contract adds the remote-MCP redaction.

Why remote MCP cannot PUT

Hosted MCP runs on Sume's side and the agent talks to it over HTTP. It cannot read files on your laptop, and the tool contract states that remote MCP agents cannot PUT: the short-lived upload URL is hidden in the response. The docs summary of the flow is: create an upload URL, have a client PUT the bytes, then call assets_complete. The client that does the PUT must be able to reach the URL, which the remote agent cannot.

Getting an input into a Sume generation from a hosted MCP agent (read 2026-10-03)
Where the media isWhat to doTools involved
Already at a public HTTPS URLPass the URL to the generatorThe generator tool itself
Local bytes you holdUpload over REST, PUT, then completeassets_upload_url, a PUT, assets_complete
A URL you only want recordedRegister it as metadata; not a mirrorassets_create
A ready first-party upload you want backMint a short-lived GET URLassets_download_url

What assets_create does and does not do

assets_create registers a public URL as unverified metadata. The status is registered, which is not generation-ready first-party media and not a server-side mirror. So registering a URL does not make Sume fetch and store it, and it does not give you an id to pass to generators in place of the URL.

The tool contract also warns against inventing a media_id from an upload response for generator inputs. Pass public HTTPS URLs or handles from results, per the API reference.

Required fields when you do upload

assets_upload_url is a write tool, so it needs an idempotency_key, plus content_type and size_bytes, where size is between 1 byte and 2 GB. Optional fields are filename, media_type and checksum_sha256. It writes Sume metadata only and does not call paid providers.

Treat the signed URL like a credential: do not paste it into chat or logs, and never include it in a report an agent sends to a user.

A short decision rule

Ask one question first: is the media already reachable at a public HTTPS address? If yes, hand the URL to the generator and skip assets entirely. If no, and the bytes sit on a machine you control, upload from that machine with a REST client and your API key, then confirm with assets_get that the asset is ready. The API reference prefers public HTTPS media URLs in generation requests, and the tool contract says not to invent a media_id from an upload response, so do not pass the asset id to a generator in place of a URL. If the media is a social video you only have a link to, media-imports_create is the tool that fetches and mirrors it.

Only a ready first-party upload can be retrieved later with assets_download_url. Remote URL registrations made with assets_create are not proxied, so asking for a download URL on one of those will not give you bytes.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume