Cryptographic hash generator supporting MD5, SHA1, SHA256, SHA512, and bcrypt.
Single tool with clear naming (crypto_generate_hash) and comprehensive description (194 chars). Input schema is well-defined with proper types and descriptions. However, output schema is not formally documented in the tool definition, only inferred from code. The tool description includes helpful anti-patterns ("Do NOT use for password strength checking") which is good practice. Algorithm parameter lacks enum constraint despite having a fixed set of valid values (md5, sha1, sha256, sha512, bcrypt), forcing LLMs to guess or hallucinate. Bcrypt implementation is a deterministic approximation, not true bcrypt, which could mislead users about security properties.
Use this when you need to generate a cryptographic hash of text. Supports md5, sha1, sha256, sha512, and bcrypt algorithms. Returns the hash string, algorithm used, and hash length. Do NOT use for password strength checking — use security_check_password. Do NOT use for data validation — use data_validate_json.
Algorithm parameter missing enum constraint. Valid values (md5, sha1, sha256, sha512, bcrypt) are documented in description but not enforced as JSON Schema enum, allowing LLMs to hallucinate invalid algorithms.
Output schema not formally documented. Tool definition lacks outputSchema field; structure is only visible in code (hash, algorithm, length, inputLength). LLMs cannot plan downstream operations without explicit schema.
Bcrypt implementation is deterministic SHA-512 approximation, not true bcrypt. Comment acknowledges this but tool description does not warn users. Misleading security claims could cause misuse.
No error handling guidance in tool description. If invalid algorithm is passed, the tool returns a 400 error, but the description does not explain recovery steps or valid options.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2025-06-18+ | v2 |
Text parameter lacks length constraints or format guidance. No minimum/maximum specified; LLMs could pass extremely large strings causing performance issues or timeouts.