MCP server for secure encrypted sharing via PrivateBin
Three well-named tools with clear action verbs (create_, save_). Tool descriptions are comprehensive (180-220 chars) and explain WHAT happens, WHEN to use, and security implications. Input schemas are present with proper JSON Schema types, enums, patterns, and field descriptions. However, output schemas lack explicit documentation, return types are inferred from code (string URLs, implicit file write). Security-focused design (environment-injected credentials, no data exfiltration) is excellent but not reflected in schema annotations. Tool composition is clean (three separate concerns: create from string, create from file, decrypt to file). Missing: tool annotations (readOnlyHint, destructiveHint, idempotentHint), explicit output schema documentation, and error-recovery guidance in descriptions.
Create and post an encrypted paste from file contents. This tool reads a file, encrypts its contents locally, and posts it to PrivateBin. The server URL is configured via PRIVATEBIN_SERVER_URL environment variable.
Create and post an encrypted paste from string content. This tool encrypts content locally and posts it to PrivateBin. The server URL is configured via PRIVATEBIN_SERVER_URL environment variable and cannot be overridden by the agent (security feature to prevent data exfiltration).
Retrieve and decrypt a PrivateBin share, saving it to a file. This tool retrieves an encrypted paste from PrivateBin, decrypts it locally, and saves the content to a file. The decrypted content is NOT returned to the agent - it's only written to the file (security feature to keep sensitive data hidden from LLMs).
Output schemas are not explicitly documented. The code shows tools return `str` (URLs) or implicit file writes, but LLMs cannot see the structure. Return type documentation is required so agents know what to expect.
Missing tool annotations. Tools that modify state (create_* are WRITE; save_* is WRITE) should declare destructiveHint=true or idempotentHint where applicable. Burn-after-reading pastes are non-idempotent. Annotations guide agent planning.
Error handling lacks recovery guidance. RuntimeError and generic exceptions are raised but do not explain what the agent should do next (e.g., 'Check PRIVATEBIN_SERVER_URL is set and reachable').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 59 | - | v1 |
Parameter 'passcode' description mentions fallback behavior but does not clarify when to use explicit vs default. Should state: 'If provided, overrides PRIVATEBIN_DEFAULT_PASSCODE env var. If omitted, falls back to env var (may be empty).'