Skip to main content
Glama
MyAtriumHealth MCP Server

MyAtriumHealth MCP Server

by chrischall

mah_upload_slots

Read-only

Get signed upload URLs for files to attach to a MyChart portal reply, so file bytes never travel inside a tool call. Then pass the returned blobKeys to the reply tool.

Instructions

Hosted deployments: get signed upload URLs for files to attach to a mah_reply_message reply, one per file, so the bytes never ride inside a tool call. Sends nothing and touches nothing in the portal. PUT each file to its uploadUrl with the slot's Content-Type (each slot carries a ready curl command), then pass the returned blobKeys to mah_reply_message. Use this for anything but a tiny file. Accepts the portal's file types (PDF, image, Word, video); the portal's per-reply count and size limits are applied when the reply reads the files back. At most 10 files per call. Refused on a local install (no upload store) — pass base64 attachments there instead.

Input Schema

NameRequiredDescriptionDefault
filesYesOne entry per file to upload: {filename, mimeType?}. The extension must be one the portal accepts.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.5.0

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, it discloses the no-side-effect guarantee ('sends nothing and touches nothing'), the 10-file-per-call cap, that limits are applied later at reply read-back, the supported file types, and that the tool is refused on local installs. This is context the annotations could not 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 purpose and the no-side-effect guarantee, then sequencing, then limits and constraints. Dense with em-dash asides but every clause carries operational information; only the parenthetical about curl commands borders on incidental.

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?

A single-parameter tool with no output schema, yet the description covers invocation, sequencing, size/count limits, type constraints, and the failure mode on local installs. Nothing needed to call it correctly is missing.

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?

Schema coverage is 100%, so the baseline is a 3, but the description adds workflow meaning the schema cannot: one slot per file, the requirement to PUT with the slot's Content-Type, and that returned blobKeys feed mah_reply_message. That materially changes how the parameter is used.

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 ('get signed upload URLs for files') and ties it to a named sibling consumer (mah_reply_message). The 'bytes never ride inside a tool call' clause makes the distinction from the reply tool unambiguous.

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 says when to use it ('anything but a tiny file'), names the alternative path ('pass base64 attachments there instead' for local installs), and gives the required ordering with mah_reply_message. No inference required from the agent.

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