Skip to main content
Glama

document_presigned_url

Read-onlyIdempotent

Returns a temporary signed URL to the original source file (PDF or other stored file) for one document. The URL expires. This tool does not return the document body or a citation bundle.

When to use: When you need to open or download the original file. Examples: 'give me the PDF for uuid …', 'link to the source file so I can download it'. Use the uuid from list_documents, search, or horizon_scan. When not: For plain text of the body, use list_full_text (example: 'quote the operative wording'). For structured Markdown, use list_markdown (example: 'keep the article headings'). For a complete citation bundle — metadata, permanent legal link, citation template, body, and this temporary URL together — use evidence_pull (example: 'show me the source'). For a permanent citation link without a file download, use the legal_link from evidence_pull or list_documents. Do not call without a uuid. Skip if you already have an unexpired URL for that uuid.

Parameters: uuid (required) is the document UUID. There is no iso parameter. The response includes expires_at; fetch the URL before it expires. A missing file or an archived document returns an error rather than a URL.

Behavior: Read-only. Looks up the stored file and signs a temporary URL. Does not create, update, or delete records, files, or credentials. Auth: tools/call requires OAuth 2.0 or a Bearer token (401 if missing, invalid, revoked, or no active subscription). Rate limits: none at the MCP layer; safe to retry. Not cached. Each call signs a new URL. expires_at is when that URL stops working. The URL is not a permanent legal link.

Returns: One object: uuid, url (temporary source-file URL), and expires_at. url is empty when no file could be signed.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "uuid": "<uuid>"
    },
    "name": "document_presigned_url"
  }
}

Input Schema

NameRequiredDescriptionDefault
uuidYesUUID

Output Schema

NameRequiredDescriptionDefault
dataYesPresigned URL for the requested document
messageYesResult message

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the annotations: OAuth 2.0/Bearer requirement with the exact 401 conditions, no MCP-layer rate limits and retry safety, explicitly not cached, new URL signed per call, and error behavior for missing or archived files ('returns an error rather than a URL'). The one nuance is the mild tension between 'Each call signs a new URL' and idempotentHint=true, though that is idempotency of server state rather than of the response, and the description discloses it rather than hiding it.

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?

Labeled sections (When to use / When not / Parameters / Behavior / Returns) with the core purpose front-loaded make it fast to scan despite its length. There is some restatement: 'Read-only' and 'Does not create, update, or delete records, files, or credentials' duplicate readOnlyHint/destructiveHint, and the 'not a permanent legal link' point appears twice.

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?

Complete for the task: expiry semantics, error cases, auth, retry behavior, and the fact that url can be empty are all covered, and the Returns block is consistent with the existing output schema. Nothing an agent needs in order to call this correctly and interpret the 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% and the single parameter already carries format and pattern, so the schema does most of the work. The description still adds real value by saying where the uuid comes from ('Use the uuid from list_documents, search, or horizon_scan') and by pre-empting a likely error ('There is no iso parameter').

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?

Opens with a specific verb and resource: 'Returns a temporary signed URL to the original source file ... for one document,' and immediately scopes it against adjacent outputs ('does not return the document body or a citation bundle'). An agent can separate it from list_full_text, list_markdown, and evidence_pull without reading any 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-to-use with example utterances ('give me the PDF for uuid …'), explicit when-not for four named alternatives each with its own example ('quote the operative wording' → list_full_text, 'keep the article headings' → list_markdown, 'show me the source' → evidence_pull). It also adds preconditions ('Do not call without a uuid') and a dedupe rule ('Skip if you already have an unexpired URL').

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.