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, use the method and path returned by search:
From a deployed server
@korve-dev/sdk uses the injected runtime capability to mint the same short-lived upload and
download grants without an organization key:
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. Direct signed-download bytes are not yet exposed as a separate customer
usage line. Read the current public amounts and available meters from billing.get;
see budgets and usage.