Skip to main content
Glama

Encrypt a file (.s3enc)

crypto_file_encrypt
Read-only

Encrypt any file with a password into the .s3enc format using chunked AES-256-GCM and PBKDF2-SHA256, preserving encrypted metadata and detecting tampering.

Instructions

Encrypt any file with a password into the website's .s3enc format: chunked AES-256-GCM, key from PBKDF2-SHA256 (600,000 rounds, random salt), original name/type/size stored encrypted inside, tamper/truncation/reorder-proof. Files made here open at https://s3eidat.github.io/file-encrypt/ and vice versa (crypto_file_decrypt). Whole file is processed in memory (size limit = server --max-mb). Web version: https://s3eidat.github.io/file-encrypt/

Input Schema

NameRequiredDescriptionDefault
fileYesThe file to encrypt: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).
nameNoFile name to store inside (restored on decrypt). Default: the input file name.
outputNoWhere to write the result: a file path, or a folder ending in "/". Default: the server output folder (a temp folder unless --out-dir is set).
mimeTypeNoMIME type to store. Default: guessed from the extension like a browser would ("" if unknown).
passwordYesThe password. Normalised to Unicode NFC first, like the website.
chunkSizeNoChunk size in bytes (website: 4 MiB).
iterationsNoPBKDF2 rounds (website: 600,000).
returnBase64NoAlso return the output as base64 in the result (only for small files). Default false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.1/5.0
Behavior3/5

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

The description carries real behavioral content beyond the annotations: chunked AES-256-GCM, PBKDF2-SHA256 with 600,000 rounds and a random salt, encrypted metadata, and tamper/truncation/reorder resistance, plus the in-memory size limit. It is consistent with idempotentHint=false (random salt means output differs each call). One caveat: it says the result is written to an output path or the server output folder, which sits awkwardly with readOnlyHint=true — this looks like an annotation mis-setting rather than a description defect, but it can mislead an agent about side effects.

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?

Two sentences, front-loaded with the format and crypto details an agent needs, with the size constraint and compatibility note following. The website URL is stated twice (inline and at the end), which is the only clear waste.

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?

For an 8-parameter, no-output-schema mutation-style tool, the description covers algorithm, memory ceiling, and cross-compatibility well. It does not describe the result payload (e.g. whether a path or base64 is returned, and what happens when returnBase64 is false), which is the main remaining gap given there is no output schema.

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 baseline is 3; the description goes further by tying 'chunked' to chunkSize, '600,000 rounds' to iterations (and that this matches the website), and noting password NFC normalisation. It still does not discuss the output/returnBase64 interaction or default output naming beyond what the schema says, so it is additive rather than exhaustive.

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 ('Encrypt') and resource ('any file'), plus the exact output format (.s3enc) and the crypto scheme. It explicitly names the counterpart (crypto_file_decrypt) and the web tool it is compatible with, so an agent can distinguish it from crypto_text_encrypt and the stego tools without opening the 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?

Use context is clear: encrypt a file so that it opens at the given website or via crypto_file_decrypt, with a stated constraint that the whole file is held in memory (server --max-mb). It does not spell out explicit exclusions (e.g. when to prefer crypto_text_encrypt or crypto_stego_hide), so it falls short of a 5.

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

Deploy Server

Other Tools