Skip to main content
Glama

quickS3

Server Details

Browse, upload, download, and share files in your S3-compatible buckets with delegated roles.

Ownership verified
Status
Healthy
Uptime
99.4% over 40 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

Six tools is well-scoped for a focused S3 link-and-browse server; each tool earns its place with a distinct, non-redundant purpose.

Completeness3/5

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 tools
create_upload_urlCreate upload URLA
DestructiveIdempotent
Inspect

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.

NameRequiredDescriptionDefault
keyYesObject key to write, e.g. "reports/2026/q3.csv"
sizeYesFile size in bytes
bucketYesBucket name
overwriteNoAllow replacing an existing object (default false)
contentTypeNoContent type of the file, e.g. "text/csv"
connectionIdYesConnection ID from list_connections

Output Schema

NameRequiredDescription
urlYes
methodYes
headersYes
maxBytesYes
expiresAtYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 bucketsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
connectionIdYesConnection ID from list_connections

Output Schema

NameRequiredDescription
staleYes
bucketsYes
refreshedAtYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 connectionsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
includeBucketsNoInclude the cached list of buckets for each connection (default true). Set to false to leave the buckets out.

Output Schema

NameRequiredDescription
connectionsYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 objectsA
Read-onlyIdempotent
Inspect

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".

NameRequiredDescriptionDefault
limitNoMaximum objects per page (default 100)
bucketYesBucket name
prefixNoFolder prefix to list, e.g. "reports/2026/". Omit for the bucket root.
connectionIdYesConnection ID from list_connections
continuationTokenNoOpaque token from a previous page

Output Schema

NameRequiredDescription
objectsYes
continuationTokenNo

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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. 1 tool update
    • Changedlist_connections1 field changed
      • changedInput schema / properties / includeBuckets / description
        Previous 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. 2 tool updates
    • Changedlist_buckets3 fields changed
      • addedOutput schema / properties / refreshedAt
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / stale
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "buckets"
        -]New value: +[
        +  "buckets",
        +  "refreshedAt",
        +  "stale"
        +]
    • Changedlist_connections3 fields changed
      • changedInput schema / properties / includeBuckets / description
        Previous 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."
      • addedOutput schema / properties / connections / items / properties / bucketsRefreshedAt
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / connections / items / properties / bucketsStale
        Added value: +{
        +  "type": "boolean"
        +}
  3. 2 tool updates
    • Changedcreate_download_link2 fields changed
      • addedOutput schema / properties / url
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "transferId",
        -  "expiresAt"
        -]New value: +[
        +  "url",
        +  "transferId",
        +  "expiresAt"
        +]
    • Changedlist_connections3 fields changed
      • addedInput schema / properties / includeBuckets
        Added value: +{
        +  "description": "Also list the buckets of each connection (default true). Set false for a faster answer without contacting the storage providers.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / connections / items / properties / buckets
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / connections / items / properties / bucketsError
        Added value: +{
        +  "type": "string"
        +}
  4. 6 tool updates
    • Changedcreate_download_link1 field changed
      • changedOutput 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"
        +}
    • Changedcreate_share_link1 field changed
      • changedOutput 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"
        +}
    • Changedcreate_upload_url1 field changed
      • changedOutput 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"
        +}
    • Changedlist_buckets1 field changed
      • changedOutput 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"
        +}
    • Changedlist_connections1 field changed
      • changedOutput 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"
        +}
    • Changedlist_objects1 field changed
      • changedOutput 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"
        +}
  5. 6 tool updates
    • First observedcreate_download_link
    • First observedcreate_share_link
    • First observedcreate_upload_url
    • First observedlist_buckets
    • First observedlist_connections
    • First observedlist_objects

Publisher details

Operator
Gone Coding Ltd · Publisher source
Operator website
https://quickS3.com
Vendor relationship
First-party · Publisher source
Restrictions
$19/month Includes 10 users, then $2/user/month · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables interaction with S3-compatible storage services like AWS S3 and Cloudflare R2, supporting bucket management, object listing, reading, uploading, and deletion operations.
    5
    8 npm
    ISC
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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 npm
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources