quickS3
Server Details
Browse, upload, download, and share files in your S3-compatible buckets with delegated roles.
- Status
- Healthy
- Uptime
- 99.4% over 40 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool targets a distinct action: generating a private download link, generating a public share link, generating an upload URL, and listing at three hierarchy levels (connections, buckets, objects). The commonly-confused pair (download vs. share link) is explicitly disambiguated within the descriptions, leaving no real overlap.
All six tools follow a strict verb_noun snake_case pattern (create_download_link, create_share_link, create_upload_url, list_buckets, list_connections, list_objects). No deviation in style or verb choice.
Six tools is well-scoped for a focused S3 link-and-browse server; each tool earns its place with a distinct, non-redundant purpose.
The surface covers listing and link/URL generation, but lacks common object lifecycle operations like delete, copy/move, get metadata, or any bucket management. These gaps are notable for an S3-facing server, though the read+link core is coherent for its apparent scope.
Available Tools
6 toolscreate_download_linkCreate download linkARead-onlyIdempotentInspect
Create a short-lived download link (valid 5 minutes, up to 5 uses) for one object. You can then download the file by following the link, which redirects to a fresh download URL at your storage provider.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Object key, e.g. "reports/2026/q3.csv" | |
| bucket | Yes | Bucket name | |
| connectionId | Yes | Connection ID from list_connections |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| expiresAt | Yes | |
| transferId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior the annotations cannot convey: the 5-minute TTL, the 5-use cap, and that following the link redirects to a fresh provider URL.
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, zero waste, with the core action and the headline constraint (short-lived link) front-loaded before the mechanics of following the link.
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?
An output schema exists, so return values need not be explained, and the description covers the essential non-obvious behavior for an external-facing link. The only real gap is a lack of differentiation from the sibling link-creation tools.
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 the schema already documents all three required parameters, including the example key format and the list_connections pointer for connectionId. The description adds no parameter-level meaning beyond that, so 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 ('Create a short-lived download link ... for one object') plus the key constraint (valid 5 minutes, up to 5 uses). It is clear on its own, but it never contrasts with the near-identical sibling create_share_link, so an agent must infer which link type to pick.
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 only implied: it tells you the result is a link you follow to download, but gives no explicit when-to-use or when-not, and no routing against create_share_link or create_upload_url. The context is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_upload_urlCreate upload URLADestructiveIdempotentInspect
Create a short-lived presigned upload URL (valid 15 minutes) for one object. You can then upload the file with an HTTP PUT to the returned url. The PUT must include every header in the headers field of the result, or the upload is rejected. For Azure Blob, the headers include x-ms-blob-type: BlockBlob.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Object key to write, e.g. "reports/2026/q3.csv" | |
| size | Yes | File size in bytes | |
| bucket | Yes | Bucket name | |
| overwrite | No | Allow replacing an existing object (default false) | |
| contentType | No | Content type of the file, e.g. "text/csv" | |
| connectionId | Yes | Connection ID from list_connections |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| method | Yes | |
| headers | Yes | |
| maxBytes | Yes | |
| expiresAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is partly covered. The description adds real behavioral value beyond that: the 15-minute expiry, the hard requirement to send every returned header or the upload is rejected, and the Azure-specific x-ms-blob-type detail. It doesn't explain the overwrite/destructive consequence of replacing an existing object, which is a minor gap.
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?
Four sentences, front-loaded with the core purpose, then the upload procedure and the failure condition. Every sentence carries essential operational detail with no filler.
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?
An output schema exists, so return-value documentation isn't required, yet the description still explains the critical `headers` field the caller must echo back. The one omission is the destructive/overwrite behavior implied by overwrite and destructiveHint=true, which matters for a write 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 description coverage is 100%, so the schema already documents all six parameters, making 3 the baseline. The description adds no per-parameter meaning (e.g., it doesn't clarify the overwrite flag's effect on existing objects) and instead elaborates on the output-side `headers` field.
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+resource ('Create a short-lived presigned upload URL... for one object') and immediately distinguishes it from the download/link siblings by naming the opposite direction (upload vs. download). An agent can tell this apart from create_download_link and create_share_link without opening any schema.
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?
Gives clear workflow context: create the URL, then HTTP PUT the file to the returned `url`, including all returned headers. It doesn't name alternatives or state exclusions (e.g., when to use create_share_link instead), but the intended usage is unambiguous and operational.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bucketsList bucketsARead-onlyIdempotentInspect
List the buckets of one storage connection that this access grant can see. list_connections already includes the buckets. Use this tool to refresh the buckets of one connection.
| Name | Required | Description | Default |
|---|---|---|---|
| connectionId | Yes | Connection ID from list_connections |
Output Schema
| Name | Required | Description |
|---|---|---|
| stale | Yes | |
| buckets | Yes | |
| refreshedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds real context: the result is permission-scoped to the access grant and overlaps with what list_connections returns, so it is a refresh path rather than a new data source. It does not mention pagination or behavior on an invalid/stale connectionId, so it falls short of the richest disclosure.
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?
Three short sentences, front-loaded with the scope and the resource, then the relationship to list_connections, then the use case. No sentence is redundant and nothing is buried.
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?
An output schema exists, the single parameter is fully documented, and annotations carry the safety profile, so the description only needs scope and routing guidance — both of which it provides. Nothing an agent needs in order to call this correctly is missing.
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% and the single parameter already documents itself as 'Connection ID from list_connections'. The description only restates 'one storage connection' and adds no format, sourcing, or error semantics beyond the schema, 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 ('List the buckets') scoped to 'one storage connection' and further constrained to what 'this access grant can see'. It also implicitly distinguishes itself from list_connections, so an agent can tell the two apart without opening either schema.
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?
Names the alternative (list_connections) and states explicitly that it already includes buckets, then gives the single condition that selects this tool: 'Use this tool to refresh the buckets of one connection.' That is an explicit when-to-use plus an implicit when-not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_connectionsList storage connectionsARead-onlyIdempotentInspect
List the storage connections (S3, R2, Spaces, B2, and others) that this access grant can see. Each connection includes its cached list of buckets. If the buckets of a connection could not be listed, that connection has bucketsError instead of buckets.
| Name | Required | Description | Default |
|---|---|---|---|
| includeBuckets | No | Include the cached list of buckets for each connection (default true). Set to false to leave the buckets out. |
Output Schema
| Name | Required | Description |
|---|---|---|
| connections | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and open-world traits, so the bar is lower; the description still adds real value by explaining that each connection carries a cached bucket list and that failed listings surface as a bucketsError field instead of buckets.
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?
Three tight sentences with zero filler; the core purpose is front-loaded and the two follow-on sentences each add distinct return-shape detail.
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 an output schema present, return values needn't be explained, and the description adequately covers scope plus the bucketsError edge case. It could note the includeBuckets toggle to be fully self-contained, but nothing essential for correct invocation is missing.
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% and the single includeBuckets parameter is fully documented in the schema. The description never mentions the parameter, so it adds no semantic value beyond what the schema provides – baseline 3.
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 ('List the storage connections'), enumerates the concrete providers (S3, R2, Spaces, B2), and scopes it to 'this access grant can see'. This distinguishes it clearly from siblings like list_buckets and list_objects.
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 grant-scoping phrase implies context, but there is no explicit when-to-use or when-not-to-use guidance, and no alternative tool is named (e.g., list_buckets for drilling into a single connection's buckets). Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_objectsList objectsARead-onlyIdempotentInspect
List the objects and folders at one folder level of a bucket. The result shows only what this access grant can read. Folder names end with "/" and have kind "prefix".
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum objects per page (default 100) | |
| bucket | Yes | Bucket name | |
| prefix | No | Folder prefix to list, e.g. "reports/2026/". Omit for the bucket root. | |
| connectionId | Yes | Connection ID from list_connections | |
| continuationToken | No | Opaque token from a previous page |
Output Schema
| Name | Required | Description |
|---|---|---|
| objects | Yes | |
| continuationToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior, so the safety profile is covered. The description adds two genuinely useful behavioral facts beyond the annotations: results are permission-scoped ('only what this access grant can read') and folder entries are signalled by a trailing '/' with kind 'prefix'.
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, zero filler, with the scope constraint front-loaded and the result-shape convention in the second sentence. 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?
With rich annotations, a 100%-covered parameter schema, and an output schema present, the description only needs to add the non-obvious behavioral context — permission scoping and the prefix-kind convention — which it does. Nothing required to invoke the tool correctly is missing.
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 every parameter (limit, bucket, prefix, connectionId, continuationToken) is already documented in the schema. The description's 'one folder level' framing is consistent with the prefix parameter but adds no syntax or format detail beyond what the schema provides, 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 (List), resource (objects and folders), and a precise scope (one folder level of a bucket), which rules out recursive listing. It does not explicitly contrast itself with the sibling list_buckets, but the resource distinction is unambiguous from the name and description.
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?
There is no when-to-use or when-not-to-use guidance, and no mention of prerequisites or the relationship to siblings such as list_buckets or list_connections. The agent must infer that this is the tool for enumerating bucket contents rather than being told.
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.
1 tool update
- Changed
list_connections1 field changed- changed
Input schema / properties / includeBuckets / descriptionPrevious value: -"Also list the cached buckets of each connection (default true). Set false to omit bucket inventories."New value: +"Include the cached list of buckets for each connection (default true). Set to false to leave the buckets out."
2 tool updates
- Changed
list_buckets3 fields changed- added
Output schema / properties / refreshedAtAdded value: +{ + "type": "string" +} - added
Output schema / properties / staleAdded value: +{ + "type": "boolean" +} - changed
Output schema / requiredPrevious value: -[ - "buckets" -]New value: +[ + "buckets", + "refreshedAt", + "stale" +]
- Changed
list_connections3 fields changed- changed
Input schema / properties / includeBuckets / descriptionPrevious value: -"Also list the buckets of each connection (default true). Set false for a faster answer without contacting the storage providers."New value: +"Also list the cached buckets of each connection (default true). Set false to omit bucket inventories." - added
Output schema / properties / connections / items / properties / bucketsRefreshedAtAdded value: +{ + "type": "string" +} - added
Output schema / properties / connections / items / properties / bucketsStaleAdded value: +{ + "type": "boolean" +}
2 tool updates
- Changed
create_download_link2 fields changed- added
Output schema / properties / urlAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "transferId", - "expiresAt" -]New value: +[ + "url", + "transferId", + "expiresAt" +]
- Changed
list_connections3 fields changed- added
Input schema / properties / includeBucketsAdded value: +{ + "description": "Also list the buckets of each connection (default true). Set false for a faster answer without contacting the storage providers.", + "type": "boolean" +} - added
Output schema / properties / connections / items / properties / bucketsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / connections / items / properties / bucketsErrorAdded value: +{ + "type": "string" +}
6 tool updates
- Changed
create_download_link1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "expiresAt": { + "type": "string" + }, + "transferId": { + "type": "string" + } + }, + "required": [ + "transferId", + "expiresAt" + ], + "type": "object" +}
- Changed
create_share_link1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "expiresAt": { + "type": "string" + }, + "limitedByGrant": { + "type": "boolean" + }, + "shareLinkId": { + "type": "string" + }, + "shareUrl": { + "type": "string" + } + }, + "required": [ + "shareUrl", + "shareLinkId", + "expiresAt", + "limitedByGrant" + ], + "type": "object" +}
- Changed
create_upload_url1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "expiresAt": { + "type": "string" + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "maxBytes": { + "type": "number" + }, + "method": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "url", + "method", + "headers", + "expiresAt", + "maxBytes" + ], + "type": "object" +}
- Changed
list_buckets1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "buckets": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "buckets" + ], + "type": "object" +}
- Changed
list_connections1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "connections": { + "items": { + "additionalProperties": false, + "properties": { + "canRead": { + "type": "boolean" + }, + "canWrite": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "provider": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "provider", + "canRead", + "canWrite" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "connections" + ], + "type": "object" +}
- Changed
list_objects1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "continuationToken": { + "type": [ + "string", + "null" + ] + }, + "objects": { + "items": { + "additionalProperties": false, + "properties": { + "key": { + "type": "string" + }, + "kind": { + "enum": [ + "object", + "prefix" + ], + "type": "string" + }, + "lastModified": { + "type": "string" + }, + "size": { + "type": "number" + } + }, + "required": [ + "key", + "kind", + "size" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "objects" + ], + "type": "object" +}
6 tool updates
- First observed
create_download_link - First observed
create_share_link - First observed
create_upload_url - First observed
list_buckets - First observed
list_connections - First observed
list_objects
Publisher details
- Operator
- Gone Coding Ltd · Publisher source
- Operator website
- https://quickS3.com
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://quicks3.com/s3-mcp-server/
- Trust center
- https://quicks3.com/docs/security/model/
- Restrictions
- $19/month Includes 10 users, then $2/user/month · Publisher source
Related MCP Connectors
Browse, upload, download, copy, move and share files in your own S3-compatible buckets.
Cloud storage with email-receiving buckets. Store and share files with people and AI agents.
Create a free sandbox object storage bucket; upload, download, list, inspect, and delete objects.
Upload, find, organize and share files on your X02 account with scoped, revocable access.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides secure access to AWS S3 buckets through pre-signed URLs, enabling listing, downloading, uploading, and deleting objects.2MIT
- AlicenseAqualityDmaintenanceEnables interaction with S3-compatible storage services like AWS S3 and Cloudflare R2, supporting bucket management, object listing, reading, uploading, and deletion operations.58 npmISC
- AlicenseAqualityCmaintenanceEnables AI assistants to explore and manage S3-compatible object storage (AWS S3, RustFS, MinIO, Cloudflare R2) by listing buckets and objects, inspecting metadata, and reading object contents with capped range requests. Write operations such as upload and delete are available but disabled unless explicitly enabled, with optional bucket allow-listing and custom TLS trust.6MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with AWS S3 storage through bucket operations (create, delete, list), object management (upload, download, delete, list), and bucket policy configuration using AWS credentials.4 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.