Skip to main content
Glama

STEM — Persistent AI Memory

Read a private STEM file

read_file
Read-onlyIdempotent

Return original bytes of an existing private file to this connected AI on user request, at most 1 MiB. Show the returned image when your host supports it; otherwise give the authenticated viewUrl or downloadUrl. Larger files use those links. A host display limitation does not mean the file was not saved. Never claim a local copy without evidence. Reading discloses bytes to this AI; no public sharing URL is created.

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": {
      "file_id": "<file_id>"
    },
    "name": "read_file"
  }
}

Input Schema

NameRequiredDescriptionDefault
file_idYesExisting private STEM file ID returned by upload_file or list_files.

Output Schema

NameRequiredDescriptionDefault
fileNo
reasonNo
statusNo
viewUrlNo
libraryUrlNo
downloadUrlNo
contentAvailableNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedOutput schema / properties / downloadUrl
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / file / properties / downloadUrl
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / file / properties / viewUrl
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / status
      Added value: +{
      +  "enum": [
      +    "bytes_returned",
      +    "view_available"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / viewUrl
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
  2. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description still adds genuinely new behavior: the 1 MiB ceiling, the disclosure that reading exposes bytes to the AI, the guarantee that no public sharing URL is created, and the caveat that a host display failure does not mean the file wasn't saved. That is exactly the kind of consequence-level detail annotations cannot convey.

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 with the core action and size cap, then output-handling guidance, then guardrails; no sentence is pure filler. Some phrasing ('A host display limitation does not mean the file was not saved. Never claim a local copy without evidence.') is assistant-behavior coaching rather than tool semantics, which slightly dilutes density.

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 one-parameter read tool with an output schema and full annotation coverage, the description supplies everything an agent needs: the size ceiling, the fallback links, the host-display caveat, and the privacy implication. Return-value structure is owned by the output schema, so no gap remains.

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?

There is a single parameter, and the schema already documents it at 100% coverage including its origin ('returned by upload_file or list_files'). The description only reinforces 'existing private file', adding little beyond the schema, so the baseline of 3 is appropriate.

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 ('Return original bytes of an existing private file'), plus scope (only for this connected AI, on user request) and a hard limit (1 MiB). The 'existing private file' framing separates it implicitly from upload_file/list_files, which appear in the sibling set and are even referenced via the schema's file_id origin.

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

Usage Guidelines4/5

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

Gives clear conditional routing: when the host supports images show them, otherwise hand back the authenticated viewUrl/downloadUrl, and files over 1 MiB go through the links instead. It lacks an explicit 'do not use this to X' exclusion or a named alternative tool for the oversized-file path, so it falls short of full when/when-not guidance.

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