Skip to main content
Glama

Upload from URL

upload_from_url

Low-level upload from URL. Prefer the 'transfer' tool instead — it handles polling automatically. This tool returns immediately with PENDING_UPLOAD status; you must poll get_upload_status yourself. Max file size follows the account plan (Basic 500 MB / Pro 1 GB). Private/internal URLs are blocked. Use only when you need explicit control over the upload lifecycle.Over stdio no API key is required: without one you upload as a guest (100 MB, 24-hour link); a key raises the limits and lets you sell.

Input Schema

NameRequiredDescriptionDefault
urlYesPublic HTTPS URL of the file to upload
fileNameNoOptional filename override (derived from URL if omitted)
payoutAddressNoWallet that a priced download pays out to. Only for running without an API key — it is what lets you sell with no account. Ignored when a key is set, because that account's payout address is a dashboard setting. Payments are final: a mistyped address is unrecoverable, and an exchange deposit address usually will not credit a Base transfer from a contract.
idempotencyKeyNoUnique key for retry-safe uploads. Needs an API key; ignored without one.
pricePerDownloadNoPrice per download in USD (e.g. 0.50 or 0.00005). When set, downloaders pay this amount in USDC. Omit for free downloads.

Output Schema

NameRequiredDescriptionDefault
statusYesUpload status: PENDING_UPLOAD, UPLOADING, READY, or FAILED
uploadIdYesUnique upload identifier (e.g. up_a1b2c3d4e5f6g7h8)
expiresAtNoISO 8601 expiration timestamp
downloadUrlNoShareable download URL (works without auth, valid 24h)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) by disclosing the async PENDING_UPLOAD return, the plan-based size ceilings (Basic 500 MB / Pro 1 GB), that private/internal URLs are blocked, and the guest-mode limits without an API key (100 MB, 24-hour link). These are real constraints an agent cannot infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly — routing advice and the async warning come first, caveats last. However, the final clause ('a key raises the limits and lets you sell') is compressed into a run-on sentence with a missing space after 'lifecycle.', which slightly hurts readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an output schema existing, the description still explains the salient return state (PENDING_UPLOAD) and the polling obligation, plus auth-mode-dependent limits. Nothing an agent needs to invoke this correctly or interpret the immediate result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter context the schema does not: the no-key guest mode is what makes payoutAddress meaningful and idempotencyKey irrelevant. That clarifies the operating mode that governs two optional params, though it does not add anything beyond the schema for url/fileName/pricePerDownload.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific verb+resource ('Low-level upload from URL') and immediately distinguishes itself from siblings by naming 'transfer' as the preferred tool and 'get_upload_status' as the required follow-up. An agent knows exactly what this does and does not do without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing guidance: prefer 'transfer' because it polls automatically, and use this one 'only when you need explicit control over the upload lifecycle.' It also states the required follow-up action (poll get_upload_status yourself), so both when-to-use and what-happens-next are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources