File downloads (MCP resources)
Wire containers expose every uploaded file as an MCP resource. Connected agents can fetch the original bytes of a file, not just the entries that come out of analysis. This is how your agent pulls a raw PDF, reads a CSV start to finish, or grabs an image that lives alongside your structured context. Each download costs 2 credits.
The URI scheme
Section titled “The URI scheme”Every file in a container is addressable under:
wire://container/{containerId}/file/{fileId}This is not a fetchable URL on its own. It’s an opaque identifier that only has meaning inside an authenticated MCP session with your container. Clients resolve it by calling the MCP resources/read method, and Wire answers with a short-lived signed download URL.
How resolution works
Section titled “How resolution works”A resources/read on a wire:// URI returns a download link, and the client fetches the bytes from that link.
┌──────────┐ resources/read ┌──────────────────┐│ Agent │────────────────────────→ │ Wire MCP server ││ client │ { uri: "wire://..." } │ │└──────────┘ └─────────┬────────┘ ▲ │ check the credential, │ │ charge the download, │ { contents: [{ │ sign a URL │ uri, mimeType: │ │ "text/uri-list", │ │ text: "https://…" }] } │ └───────────────────────────────────────────┘ │ │ HTTPS GET (out of band) ▼ ┌─────────────────────────────┐ │ The file's original bytes │ └─────────────────────────────┘- The agent’s MCP client calls
resources/readon awire://URI. - Wire checks that the request carries a credential with access to this container, and that the URI names this container and a file in it. A URI for another container is refused.
- Wire charges the download, then returns a
text/uri-listresource with a single entry: a signed HTTPS URL for that one file. - The client follows the URL over ordinary HTTPS and gets the file’s original bytes.
Downloads need a credential. An anonymous visitor to a public container can use its read tools, but can’t list or download its files.
How agents find files
Section titled “How agents find files”resources/list returns the container’s files, each with its wire:// URI, its name, and its MIME type. Any valid wire:// URI the agent already has can be passed to resources/read directly, without listing first.
If an agent is installed on the container with a skill, resources/list also includes that skill’s skill:// file. Reading it is free. See Skills and instructions.
If the installed agent ships interactive views, resources/list also includes each view’s ui:// URI, served as text/html;profile=mcp-app to clients that support MCP Apps. Reading a view is free. See Interactive views (MCP Apps).
Credits
Section titled “Credits”- 2 credits each time
resources/readreturns a download URL for awire://file. - The charge happens at
resources/read, not when a file is listed. If an agent lists 50 files and downloads 3, you pay for 3. A read that fails, such as one for a file that doesn’t exist, costs nothing. - The balance floor that applies to tool calls applies here too: when an organization’s balance is too low,
resources/readis refused with an insufficient-credits error and no URL. - Listing files, and listing or reading an agent’s
skill://files andui://views, are free. Only awire://file download is charged.
See Limits for every price.
URL lifetime
Section titled “URL lifetime”- About a minute. After that the URL stops working and the agent calls
resources/readagain, which is charged again. Fetch the file as soon as the URL arrives. - The URL is signed for one file. It can’t be used to fetch a different file, even while it’s valid.
Client support
Section titled “Client support”- Claude Desktop, Claude web, MCP Inspector, Continue, Zed: support MCP resources and follow
text/uri-listresponses. - Claude Code (today): agents can call
resources/readon awire://URI explicitly and follow the returned URL.
Wire stays spec-compliant, so agents on any conforming client can resolve resources as soon as the client supports them.