Skip to main content
Glama

Get a download URL for one artifact

get_artifact_download
Read-onlyIdempotent

Mints a short-lived signed URL for one sealed artifact. Fetch it yourself with a plain GET and no headers; it expires. Example: {"run_id": "…", "artifact_id": "…"}. Returns {url, expires_at, media_type, digest, size_bytes, kind}. Cite the digest. Artifact ids come from run_artifacts. Do not use this to read a few rows — query_run is the cheaper answer. Reads past the free sample (the first 500 rows of a table in stored order) count against the workspace's shared free monthly allowance of 100,000 rows and 1,000 queries (the workspace of the key or grant in use) unless it is subscribed. A download counts the rows it contains, plus one query per table. At the limit the tool answers usage_limit_exceeded with the reset time and an upgrade URL.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
run_idYes
artifact_idYes

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?

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds behavior they cannot express: the URL expires, must be fetched with a plain headerless GET, the download is metered (one query per table plus rows contained, against a 100k row / 1k query allowance), the 500-row free sample boundary, and the exact usage_limit_exceeded failure mode with reset time and upgrade URL.

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?

Dense but front-loaded: purpose first, then fetch mechanics, then return shape, then the sibling redirect, then metering. Every sentence earns its place, though the metering paragraph is long enough that it slightly dilutes the core instruction.

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?

No output schema exists, so the description enumerates the return fields ({url, expires_at, media_type, digest, size_bytes, kind}) and adds quota limits, the 500-row sample boundary, and the error behavior. For a two-param read tool this leaves nothing an agent needs to call it correctly 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 description coverage is 0%, so the description carries the burden: it supplies a concrete example payload and, more usefully, states where artifact_id values originate (run_artifacts). run_id is left to inference, but the provenance guidance is the meaningful semantic gap the schema does not fill.

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 a specific verb and resource: 'Mints a short-lived signed URL for one sealed artifact.' It also implicitly differentiates from siblings by pointing at query_run and run_artifacts for adjacent tasks, so an agent can place this tool correctly without opening a 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 when-not guidance ('Do not use this to read a few rows — query_run is the cheaper answer') names the alternative and the selecting condition. It also tells the agent where artifact ids come from (run_artifacts), which is the prerequisite for calling this tool.

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