Skip to main content
Glama

storage_publish

Publish a Storage object and return a presigned bucket GET URL.

Idempotent: returns the existing token if already published. Does not re-upload bytes (they already live in the bucket). Agents should use signed_url (TTL TEAMSHARED_STORAGE_SIGNED_URL_TTL_SECONDS, default 3600s) plus signed_url_expires_in / signed_url_expires_at. share_url / public_url remain the durable /d/{share_token} fallback for console/humans — not /s/{slug} (shared-file HTML). Fails closed if the object-storage bucket is unconfigured (cannot mint a signed URL).

Agent seats (org tsk_ / agent_run) are refused — call request_gated_approval(gate="publish") instead. Console humans (ts_session) still publish. After the approval child is done, a human seat calls this tool (same completion path as file_publish).

Input Schema

NameRequiredDescriptionDefault
file_idYesStorage object UUID to publish

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full burden and does so: it discloses idempotent behavior (returns existing token), that bytes are not re-uploaded, the signed-URL TTL env var and default 3600s, and that the call fails closed when the object-storage bucket is unconfigured. It also states the authorization boundary (agent seats refused), which is exactly the kind of behavior an agent cannot infer from the schema.

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?

Purpose and return value are front-loaded, then idempotency, then the agent-vs-human routing rule, which is good ordering. It is dense with backticked implementation identifiers and parenthetical asides (share_token routes, seat prefixes), so a few phrases could be tightened without losing meaning.

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?

For a single-parameter publish tool with an output schema, the description covers everything an agent needs: what it returns, idempotency, which URL field to use and its TTL, failure mode when storage is unconfigured, and the approval path for agent seats. No material gap remains for correct invocation.

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

Parameters5/5

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

Only one parameter (file_id) with 100% schema description coverage, so the schema already defines it as the storage object UUID to publish. The description adds practical meaning by clarifying the object already lives in the bucket and publishing does not re-upload bytes, which is useful semantic context beyond the schema's type description.

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?

The first sentence states a specific verb and resource ('Publish a Storage object') plus the return value ('presigned bucket GET URL'). It is clearly differentiated from the nearest sibling by noting the 'same completion path as file_publish' and by contrasting storage-publish URLs with the /s/{slug} shared-file HTML route.

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: agent seats (org tsk_ / agent_run) are refused and must call request_gated_approval(gate="publish") instead, while console humans (ts_session) publish directly, and a human seat calls this tool after the approval child completes. It also tells the agent which URL field to prefer (signed_url with its TTL) versus the durable share_url fallback.

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.