Skip to main content
Glama

Get upload

get_upload
Read-onlyIdempotent

Read one upload by id: its file, kind, status and freshly signed links (url, and thumbnail_url for a video's poster). Links expire; read again rather than keeping one.

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": {
      "upload_id": "<upload_id>"
    },
    "name": "get_upload"
  }
}

Input Schema

NameRequiredDescriptionDefault
upload_idYes

Output Schema

NameRequiredDescriptionDefault
uploadYesA file you brought into Kuro.
messageYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changed
    • addedOutput schema / properties / upload / description
      Added value: +"A file you brought into Kuro."
    • changedOutput schema / properties / upload / properties / bytes / type
      Previous value: -"number"New value: +"integer"
    • addedOutput schema / properties / upload / properties / created_at
      Added value: +{
      +  "format": "date-time",
      +  "type": "string"
      +}
    • addedOutput schema / properties / upload / properties / id
      Added value: +{
      +  "format": "uuid",
      +  "type": "string"
      +}
    • removedOutput schema / properties / upload / properties / kind
      Removed value: -{
      -  "enum": [
      -    "image",
      -    "audio",
      -    "video"
      -  ],
      -  "type": "string"
      -}
    • addedOutput schema / properties / upload / properties / object
      Added value: +{
      +  "const": "upload",
      +  "type": "string"
      +}
    • changedOutput schema / properties / upload / properties / reference / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "type": {
      -        "const": "upload",
      -        "type": "string"
      -      },
      -      "upload_id": {
      -        "format": "uuid",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "upload_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "generation_id": {
      -        "format": "uuid",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "generation",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "generation_id"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "const": "upload",
      +        "type": "string"
      +      },
      +      "upload_id": {
      +        "$ref": "#/properties/upload/properties/id"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "upload_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "generation_id": {
      +        "$ref": "#/properties/upload/properties/id"
      +      },
      +      "type": {
      +        "const": "generation",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "generation_id"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedOutput schema / properties / upload / properties / reference / description
      Added value: +"Pass this where a request takes media."
    • addedOutput schema / properties / upload / properties / status / description
      Added value: +"Only a `verified` upload can be used in a generation."
    • addedOutput schema / properties / upload / properties / status / enum
      Added value: +[
      +  "pending",
      +  "verified",
      +  "rejected",
      +  "expired"
      +]
    • addedOutput schema / properties / upload / properties / type
      Added value: +{
      +  "enum": [
      +    "image",
      +    "video",
      +    "audio"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / upload / properties / upload_id
      Removed value: -{
      -  "format": "uuid",
      -  "type": "string"
      -}
    • addedOutput schema / properties / upload / properties / url / description
      Added value: +"A signed link to the file, for about an hour."
    • changedOutput schema / properties / upload / required
      Previous value: -[
      -  "upload_id",
      -  "filename",
      -  "kind",
      -  "mime_type",
      -  "bytes",
      -  "status",
      -  "url",
      -  "thumbnail_url",
      -  "reference"
      -]New value: +[
      +  "object",
      +  "id",
      +  "filename",
      +  "type",
      +  "mime_type",
      +  "bytes",
      +  "status",
      +  "url",
      +  "thumbnail_url",
      +  "reference",
      +  "created_at"
      +]
  2. Added

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the bar is low; the description still adds real value by warning that signed links expire and that callers should re-read instead of retaining URLs. It also indicates the returned shape (file, kind, status, url, thumbnail_url), though that overlaps with the existing output schema.

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

Conciseness5/5

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

Two short sentences, the core action front-loaded, and the expiry caveat placed after the primary statement. Every clause carries information; nothing is padding.

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

Completeness4/5

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

For a single-parameter read tool with a full annotation set and an output schema, this is close to sufficient: purpose, return fields and the link-expiry caveat are all present. The remaining omission is practical guidance on sourcing the upload_id.

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

Parameters3/5

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

The single parameter is undocumented in the schema (0% coverage), and the description only says "by id", which adds little beyond the parameter name upload_id and the uuid format already in the schema. It does not say where the id is obtained (create_upload/list_uploads), leaving the only real gap unaddressed.

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

Purpose4/5

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

"Read one upload by id" gives a specific verb, singular resource and lookup key, which separates it cleanly from list_uploads and from the link-oriented siblings get_upload_link/get_download_url. It never names those siblings explicitly, so the differentiation is implicit rather than stated.

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

Usage Guidelines3/5

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

The phrase "Read one upload by id" implies the use case (fetch a known upload), and the expiry note implies re-invocation instead of caching. There is no explicit statement of when to prefer this over get_upload_link or get_download_url, nor any prerequisite about where the upload_id comes from.

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