MCP server that delivers a file to a person as a one-time, AES-256 encrypted, auto-deleting download link via the FileSeal Secure Send API.
Three well-named tools with comprehensive descriptions and detailed input schemas. secure_send has excellent documentation (400+ chars) explaining encryption, modes, and limits. All parameters are typed and described. However, output schemas are not explicitly documented in the visible code, responses are inferred from API behavior rather than formally declared. Error handling is present but generic (apiDetail helper). No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels (WRITE, READ_ONLY, DESTRUCTIVE). Parameter validation is defensive (MIME inference, size checks) but error messages could be more actionable for LLM recovery.
Send a file to a person as a one-time, encrypted, auto-deleting download link. Use when you need to deliver a file to a human securely, or want the link to expire after a single download. Encrypts the file client-side (AES-GCM-256) and creates a FileSeal secure send. In "link" mode (default, zero-knowledge) the key never leaves this machine and is returned only inside the share link fragment. In "email" mode FileSeal emails the recipient a working link and stores the key server-side. Limits: this tool accepts files up to 3MB. Bytes travel inline as base64, so a larger file would exceed the API request body limit even though FileSeal itself allows 10MB per file and 50MB per send. Accepted types: PDF, DOC, DOCX, TXT, JPG, PNG.
Revoke a FileSeal secure send by its ID, preventing further downloads. Returns success status and the revoked send's ID.
Check the status of a FileSeal secure send by its ID. Returns delivery mode, expiry time, download count, and event history.
Output schemas not formally documented. Tool responses are inferred from API behavior (e.g., secure_send returns a send object with id, link, key fields) but no explicit schema definition visible in code. LLMs cannot reliably extract response fields or plan downstream operations.
Tool annotations missing. secure_send is WRITE (modifies state), secure_send_status is READ_ONLY, secure_send_revoke is DESTRUCTIVE. These risk levels are not declared via readOnlyHint/destructiveHint/idempotentHint, forcing LLMs to infer safety from descriptions alone.
Error messages are generic. apiDetail() returns raw API error text (capped at 500 chars) without recovery guidance. E.g., 'Invalid MIME type' does not tell the LLM which types are accepted or how to retry. Errors should follow pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
secure_send_status and secure_send_revoke descriptions are brief (under 100 chars) and lack context on when to use them. secure_send_status should explain what 'event history' contains; secure_send_revoke should warn that revocation is irreversible.
No confirmation step for destructive operations. secure_send_revoke permanently prevents downloads but has no dry-run or confirmation mechanism. Agents can accidentally revoke sends without user approval.