Skip to main content
Glama

Read an attachment's text

read_attachments
Read-onlyIdempotent

Read the text content of an attachment — markdown (.md) first and foremost, plus plain text, CSV, JSON, YAML, XML and HTML. Use this after list_attachments or retrieve_attachments: the url those return is a short-lived signed URL on a private bucket and cannot be fetched directly. Pass the attachment id in kwargs and company_id in the body. At most 256 KB are returned per call: when truncated is true, call again with offset set to the returned next_offset to get the next slice, and repeat until truncated is false — size in the response is metadata written at upload time, not a count of bytes actually read, so don't rely on it to decide you are done paging. PDF and Office files (.docx, .xlsx, .pptx) are NOT readable yet — that is a known gap, not a broken file; point the user at app_url instead. Each attachment carries app_url, a deep link to its project's attachments page — null for company-level attachments, which have no dedicated page.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYes
kwargsYes

TDQS

A5/5.0
Behavior5/5

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

Goes far beyond the readOnly/destructive annotations by detailing the 256 KB return limit, pagination via truncated and next_offset, the misleading nature of 'size' metadata, unreadable file types, and app_url behavior for company-level attachments. No contradiction with annotations.

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?

The description is long but every sentence adds necessary information—usage sequence, pagination mechanics, known limitations, and fallback. It is well-organized and front-loaded with the core purpose, making it valuable despite its length.

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?

With no output schema and limited annotations, the description covers all critical context: how to invoke, how to page, what to warn users about, and where to redirect for unsupported formats. It is fully self-sufficient for an agent to use correctly.

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?

Despite schema description coverage at 0%, the description thoroughly explains the purpose of each parameter: attachment id in kwargs, company_id in body, and offset for paging. It also explains how to use the response's next_offset to continue reading, adding meaning not present in the schema.

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 description opens with a specific verb and resource: 'Read the text content of an attachment'. It also distinguishes itself from list_attachments and retrieve_attachments by explaining that their returned URL is a short-lived signed URL that cannot be fetched directly, clarifying this tool's unique role.

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?

Explicitly states when to use this tool ('Use this after list_attachments or retrieve_attachments'), what to pass (attachment id in kwargs, company_id in body), and provides an explicit alternative for unsupported file types ('point the user at app_url instead'). This covers both use and non-use cases.

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.

TDQS

A3.6/5.0
Disambiguation4/5

Most tools are clearly scoped to a specific resource and action, but a few near-overlapping pairs (e.g., list_attachments vs list_taskattachments, create_tasktags vs add_tag_tasks) could cause misselection without close reading. Descriptions are detailed enough to resolve most ambiguity.

Naming Consistency4/5

The dominant verb_noun CRUD pattern (create_, list_, retrieve_, update_, partial_update_, destroy_) is consistent and predictable. However, non-standard pluralizations (companys, resumeentrys, taskdependencys) and a handful of irregular names (task_assign_user, move_relate_to_tasks) introduce minor inconsistencies.

Tool Count1/5

With 83 tools, this server is far beyond a well-scoped MCP surface, even for a feature-complete project management suite. The sheer volume will overwhelm agents and make selection inefficient, clearly falling into the extreme-mismatch range.

Completeness5/5

The toolset provides thorough lifecycle coverage across companies, projects, tasks, sprints, attachments, comments, dependencies, tags, reminders, resume entries, tickets, and users. Missing operations like company deletion or task-attachment creation appear intentional and are worked around via existing tools.

Resources