Skip to main content
Glama

ds_read_file

Read a portion of an iRODS data-object by path and offset; if the file is too large for inline output, access it via WebDAV URI.

Instructions

Read the partial content of a file (data-object) with the specified path and offset. The specified path must be an iRODS path. If the file is too large to be displayed inline, use the WebDAV URI to access it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYesThe path to the file (data-object) to read.
lengthNoThe maximum length of the file to read. Default value is 1048576. Length must be greater than or equal to 65536. Length must not be too large, otherwise the output may be too large. Maximum value is 1048576.
offsetNoThe offset to start reading the file from. Default is 0.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'Read' plus 'partial content' reasonably conveys a non-destructive, bounded read, and the WebDAV note hints at inline-size limits, but the description never says what happens when the requested length is exceeded (silent truncation vs. error) or what permissions are needed on the iRODS path.

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?

Three short sentences, front-loaded with the core action, with no filler. The third sentence is a somewhat tangential fallback hint rather than core semantics, keeping it just under a 5.

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

Completeness3/5

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

With no output schema, the description should explain the return shape (raw content string, truncation indicator, encoding), and it does not. For a 3-parameter read tool with a size-limited payload, the omission of truncation/return semantics is the main gap.

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?

Schema description coverage is 100%, so the baseline is 3. The description does add one genuinely useful fact beyond the schema: that 'path' must be an iRODS path. It says nothing about 'length' or 'offset' beyond the schema's own text, so it stays at baseline.

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?

States a specific verb and resource ('Read the partial content of a file (data-object)') and adds the offset-based partial-read scope, which separates it from a full-file tool like ds_download_file. It does not, however, explicitly name or contrast itself with the closest siblings (ds_get_file_info, ds_download_file, ds_read_file-adjacent tools).

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 line 'If the file is too large to be displayed inline, use the WebDAV URI to access it' gives a conditional fallback, but the fallback is an external URI rather than a sibling tool, and there is no guidance on when to prefer this over ds_download_file or ds_get_file_info. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.