Skip to main content
Glama

ado_read_attachment

Read-only

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

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses format-specific return behavior (markdown tables for Excel, extracted text for DOCX, base64 data URI for images), size limits (25 MB, 4 MB for images), and unsupported-format fallback behavior. It also names required environment variables. This substantially exceeds the annotation's minimal safety signal.

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?

The description is long, but it front-loads the core purpose and then covers usage context, triggers, format behavior, and constraints. Every sentence carries relevant information, though the trigger list is somewhat expansive and could be trimmed. Overall it is appropriately sized for a tool with this much format-specific behavior.

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?

Given there is no output schema and annotations are minimal, the description carries the full burden and delivers: it explains what each input format returns, what happens for unsupported formats, size limits, authentication prerequisites, and the recommended discovery workflow. An agent has enough information to invoke this tool correctly in the supported scenarios.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds meaningful value above that by explaining that fileName must be exact as shown by ado_analyze_workitem and case-insensitive, and by tying supported extensions and sheet behavior to sheetName. This helps the agent use the parameters correctly without contradicting 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 names a specific verb and resource: "Reads the ACTUAL CONTENT of a file attached to a work item," immediately distinguishing it from sibling tools that analyze work items or query them. It also enumerates supported file types and the kind of content returned, so an agent can tell this from ado_analyze_workitem and ado_query_workitems without opening schemas.

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?

It provides explicit WHEN guidance, concrete trigger phrases, and sequencing instructions: "Call ado_analyze_workitem first (or ado_query_workitems) to discover attachment file names if you don't already know the exact fileName." It also states what will NOT be parsed (PDF, .pptx, .zip) and what happens instead, giving clear boundaries for when this tool is or is not appropriate.

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

A4.1/5.0
Disambiguation4/5

Most tools have distinct purposes and clear triggers, reducing ambiguity. For example, PR-related tools are separated into analysis, listing, commenting, and dependency mapping. However, some overlap exists between find_references, find_extensions, and find_callers, which could confuse an agent without careful descriptions.

Naming Consistency4/5

Tool names follow a consistent snake_case pattern with verb_noun structure within subgroups (e.g., ado_*, find_*, search_*, generate_*). There is no mixing of camelCase or other styles, though the variety of prefixes slightly reduces predictability.

Tool Count3/5

With 38 tools, the server feels slightly over-scoped for its domain. While each tool has a specific function, the number is high compared to typical well-scoped servers (10-15 tools). Some tools like find_references and find_callers could be consolidated.

Completeness4/5

The tool set covers a broad range of D365 F&O development and DevOps tasks, including code search, analysis, security, performance, upgrades, and work item management. Minor gaps exist, such as the absence of direct object modification or batch job management, but the core workflows are well covered.