uploads/report.pdf, never a shared global namespace — and one
project can never address another’s objects. Bytes move through
short-lived signed URLs, so large uploads and downloads never proxy
through the API.
CLI
The signed-URL flow (API / MCP)
Uploading is two steps — create the signed upload, then PUT the bytes:byteLength must match the upload exactly, and the URL expires quickly —
mint it right before sending. Downloads mirror the shape:
POST .../storage/downloads with {"key": "..."} returns
{ url, expiresAt }.
Over MCP:
Deleting objects
Deletes are idempotent. Over the raw API the key travels as a single URL-encoded path segment (/ becomes %2F):
Roles and billing
Listing and downloading needmember; creating uploads requires active
billing; deleting requires admin. Storage meters storage.objects per
GB-month plus network.egress per GB — see the
rate card.