Skip to main content
Glama

ado_read_attachment

Read-onlyIdempotent

AZURE DEVOPS ONLY -- Reads the ACTUAL CONTENT of a file attached to a work item (Excel spreadsheet, Word document, text/CSV/JSON/XML file, or image). WHEN: a work item (FDD/RDD/CR/Bug/Task/User Story) has an Excel/Word attachment with requirements, field mappings, mockups, or specs that need to be read to understand the ask. Triggers: 'read the attachment', 'open the excel file on the work item', 'what does the attached document say', 'lis le fichier joint', 'ouvre l'excel du ticket'. Call ado_analyze_workitem first (or ado_query_workitems) to discover attachment file names if you don't already know the exact fileName. Supported: .xlsx/.xlsm (returns sheet names + a markdown table of the requested/first sheet), .docx (returns extracted markdown text + tables), .txt/.csv/.json/.xml/.md/.log (returned as-is), images (.png/.jpg/.jpeg/.gif/.bmp/.webp, returned as a base64 data URI for visual analysis, max 4 MB). Other binary formats (PDF, .pptx, .zip, etc.) are NOT parsed -- returns metadata + a manual download link instead. Max attachment size read: 25 MB. Requires DEVOPS_ORG_URL + DEVOPS_PAT env vars.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectNoOptional: Azure DevOps project name. Falls back to DEVOPS_PROJECT env var.
fileNameYesExact attachment file name as shown by ado_analyze_workitem, e.g. 'Field Mapping.xlsx'. Case-insensitive.
sheetNameNoOptional: sheet name for .xlsx/.xlsm attachments. Defaults to the first sheet.
workItemIdYesWork item ID, e.g. 1234

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint annotations, the description discloses important behavioral details: supported formats and their exact return representations, max attachment size (25 MB), image size limit (4 MB), the fallback behavior for unsupported binary formats, and environment variable requirements. This richly supplements the annotation layer without contradicting it.

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 earns its place: purpose, trigger conditions, prerequisites, format-specific behavior, limits, and env vars. The critical purpose is front-loaded, and the dense format list replaces the need for an output schema. No filler or redundancy.

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?

Despite having no output schema, the description fully covers return behavior for every supported format, explicitly lists unsupported formats, states size limits, and notes the required environment variables. An agent has everything it needs to decide whether to call this tool and what to expect from the response.

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's parameter-related details (fileName case-insensitivity, sheetName default, project env fallback) largely repeat what the schema already states. It adds useful context for fileName ('as shown by ado_analyze_workitem') but does not significantly elevate understanding beyond 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 precise verb and resource: 'Reads the ACTUAL CONTENT of a file attached to a work item.' It enumerates supported formats and return behavior, making the tool's scope unmistakable and distinguishing it from sibling tools like ado_analyze_workitem, which is referenced only as a prerequisite for discovering filenames.

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?

The description explicitly provides a 'WHEN' clause, concrete trigger phrases, and a clear prerequisite ('Call ado_analyze_workitem first'). It also states what the tool does NOT parse, giving the agent an exclusion boundary for unsupported formats. This is as explicit as usage guidance gets.

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.