File Relay
Server Details
Temporary file relay for AI agents: upload a generated file, get an expiring download link.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
The CRUD-style tools (delete_file, get_file_info, read_file) are clearly separated by resource and action. The only real overlap is between create_upload_link and relay_attached_file, since both produce a downloadable relayed file, but the descriptions sharply distinguish the local-path vs host-attached-file input channels.
All five names follow a consistent snake_case verb_noun pattern (create_upload_link, delete_file, get_file_info, read_file, relay_attached_file). Each name starts with an action verb that matches what the tool does.
Five tools is tightly scoped to a single purpose: move a file in, inspect it, read it, remove it. Each tool has a distinct role and nothing feels padded or missing at the surface level.
The lifecycle is covered: create/upload, inspect metadata, read content, and delete before expiry. The main gap is the absence of a list operation, so an agent cannot discover previously relayed files and must already have an id or URL.
Available Tools
5 toolscreate_upload_linkCreate upload linkAInspect
Relay a file of any size up to 100 MB. Save the file to local disk first, call this with its path, then run the returned curl command in your shell to upload it. The download link works as soon as the upload finishes. Requires outbound network access to code.easyllms.com; if curl is blocked, ask the user to allow that domain in their sandbox network settings (on claude.ai: Settings > Capabilities > Code execution).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Local path of the file you saved, e.g. /tmp/report.pdf. Used to build the curl command. | |
| filename | No | Optional name shown to the downloader; defaults to the file name in path. | |
| ttl_hours | No | Hours until the download link expires. Default 24, maximum 168 (7 days). | |
| content_type | No | Optional MIME type; guessed from the extension otherwise. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (openWorldHint=true, non-idempotent, non-destructive), the description discloses a hard 100 MB size limit, a required outbound network dependency on code.easyllms.com, the correct remediation if curl is blocked, and the timing guarantee that the download link works once the upload finishes. That is exactly the operational context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The workflow is front-loaded and each sentence carries actionable information: size limit, sequence, network requirement, and failure remediation. The sandbox-settings parenthetical is slightly long but is genuinely load-bearing for recovering from a blocked-curl failure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what comes back (a curl command and a download link) and when it becomes usable. Combined with the network prerequisites and size cap, an agent could invoke this tool correctly and handle the common failure mode without further information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (path, filename, ttl_hours, content_type) are already documented in the schema. The description reinforces that `path` must point to a file already saved locally, but adds no format or boundary detail beyond what the schema states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Relay a file of any size up to 100 MB') and outlines the concrete outcome: an upload link plus a curl command. It does not, however, distinguish itself from the similar sibling `relay_attached_file`, so an agent comparing the two must infer the difference from the names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The workflow is spelled out explicitly — save to local disk, call with the path, then run the returned curl command — which tells the agent exactly when and how to use this tool. The missing piece is exclusions: nothing says when to prefer `relay_attached_file` or the other file siblings instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fileDelete fileADestructiveIdempotentInspect
Delete a relayed file before it expires. Requires the delete_token returned at upload.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | File id or download URL. | |
| delete_token | Yes | delete_token returned at upload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds useful context — an authorization requirement (delete_token from upload) and a time-bounded window before expiry — but doesn't state what happens after deletion (e.g., whether the download URL stops resolving), which is the main behavioral question an agent would have.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste, and the destructive action plus its precondition are front-loaded. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter destructive tool with full schema coverage and annotations covering safety, the description is essentially sufficient. The only real gap is post-deletion behavior and what the expiry window means if it has already passed, which would help an agent decide whether to attempt the call at all.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, and the description restates only delete_token without adding format or sourcing detail. Baseline 3 applies since the schema carries the load; notably the description doesn't clarify that 'id' may be a full download URL rather than a bare id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a relayed file') and adds a scope qualifier ('before it expires') that distinguishes it from generic file deletion. It doesn't explicitly distinguish itself from siblings like read_file or get_file_info, but the destructive nature makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: you delete a relayed file only while it is still live and only if you hold the delete_token from upload. There is no explicit guidance on when to prefer this over other cleanup paths or what to do if the token is lost or the file already expired.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_infoGet file infoARead-onlyInspect
Look up a relayed file by id or download URL: name, size, type, expiry and download link.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | File id or download URL returned by an upload tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds value by enumerating exactly what is returned (name, size, type, expiry, download link) — meaningful given no output schema — and clarifies that expiry is exposed, hinting at expired-file behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the verb, resource, accepted inputs, and return fields. Nothing is padded and nothing is missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden and covers the sole parameter's dual input form. Only minor gaps remain — behavior for an expired or unknown id — which matter little for a read-only lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already explains that id may be a file id or download URL, so the description matches rather than extends it. The single-parameter surface keeps this adequate, but no extra meaning (format, validation, what happens on a bad id) is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (look up) plus resource (relayed file) and an enumerated field list, so the agent knows this is metadata retrieval rather than content retrieval. It never names read_file, the sibling that returns content, so the distinction is inferred from the field list rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call it with an id or download URL from an upload tool to get metadata. There is no explicit when-to-use/when-not guidance and no routing to read_file for actual file contents, which is the most likely sibling confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileRead fileARead-onlyInspect
Read a relayed file's content (up to 1 MB) so an agent can pick up a file someone else relayed. Text comes back as text, images as images, other files as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | File id or download URL from this relay. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint=false), and the description adds real value beyond them: the 1 MB cap and the fact that text returns as text, images as images, and other files as base64. It does not discuss failure modes for invalid/expired ids, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, then the size constraint, then the return-type behavior. No redundant restatement of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the return shapes and size limit, which is what an agent most needs. It omits error/expiry behavior, a minor gap for a one-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single required 'id' already documented as 'File id or download URL from this relay'; the description adds no further syntax or format guidance. Baseline 3 is appropriate when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (read) plus resource (relayed file's content) with an explicit size bound (up to 1 MB). It implicitly distinguishes itself from get_file_info by emphasizing content retrieval and from delete_file/create_upload_link, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'so an agent can pick up a file someone else relayed' implies the use case, but there are no explicit when/when-not conditions and no named alternatives (e.g., get_file_info for metadata only) to route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
relay_attached_fileRelay attached fileAInspect
ChatGPT only: relay a file from the conversation (the host passes it as a file reference) and get a temporary download link.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | File reference provided by the host. | |
| filename | No | Optional file name override. | |
| ttl_hours | No | Hours until the download link expires. Default 24, maximum 168 (7 days). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, so safety is already covered; the description usefully adds that the result is a temporary link and that the file arrives as a host reference. It does not say that relaying stores a hosted copy, who can access the link, or that the link expires per ttl_hours, which are the meaningful behavioral facts beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the platform restriction, then the action and the return value. Nothing is redundant and no sentence fails to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The nested file object is conceptually explained and the return is described as a temporary link, which is the key fact in the absence of an output schema. However, a non-read-only, open-world tool that materializes a shareable copy should also say where the copy lives and that expiry is governed by ttl_hours.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, including a documented ttl_hours range and default, so the schema carries parameter meaning. The description only clarifies the origin of the 'file' object (host-provided reference) and adds nothing about ttl_hours or the filename override, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('relay a file from the conversation') plus the concrete outcome ('get a temporary download link'), which is clearly distinct from the upload/read siblings. It stops short of naming an actual sibling, so the differentiation is inferable rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'ChatGPT only' is an explicit applicability constraint, and 'the host passes it as a file reference' tells the agent exactly what input context must exist. No when-not conditions or alternative tools are given, but the positive context is unusually clear for a gateway-style tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
create_upload_link - First observed
delete_file - First observed
get_file_info - First observed
read_file - First observed
relay_attached_file
Related MCP Connectors
File uploads for AI agents. Upload, list, and manage files. No signup required.
Private, expiring artifact hosting for AI agents. Upload via API or MCP; links die on their own.
Upload any file, get a tracked shareable link. DocSend for AI agents.
Share documents privately from an AI agent. The agent gets a link; it cannot read the file.
Related MCP Servers
- AlicenseAqualityDmaintenanceStore and retrieve data objects for free. Temporary cloud storage for agents. Two hour expiry. Works with any format and flow. Example use cases include: * Manage large datasets across different sessions * Generate shareable links for intermediate results * Streamline complex workflows by bridging information between multiple contexts239 npm1MIT

@putput/mcpofficial
AlicenseNot gradedqualityDmaintenanceFile uploads for AI agents. Upload, list, and manage files from AI coding assistants like Claude, Cursor, Windsurf, and VS Code Copilot with no signup required.1MIT- AlicenseAqualityBmaintenanceEnables AI agents and users to upload and download files via MCP, generating shareable links and identifier codes. Files are automatically deleted after 24 hours.9MIT

YAFL MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceEnables AI agents to securely transfer files between machines via encrypted, expiring share links, with tools for upload, download, status checks, and link management.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.