For agents
The same crypto core as the web app, exposed as a Model Context Protocol server over stdio. Everything runs locally — no network calls, no telemetry. The package is elyshield-mcp (v0.1.4).
Install
Requires Node.js 18 or later. Works with Claude Desktop, Claude Code, Cursor or any MCP client.
Tools
elyshield_encrypt_fileEncrypt bytes into a hybrid ML-KEM-768 + X25519 envelope, signed with ML-DSA-65.elyshield_decrypt_fileDecrypt a .elyshield container with a keyfile or wallet signature.elyshield_send_messageWrap text (max 64KB) in a shareable encrypted URL; the key rides in the fragment.elyshield_decrypt_messageRecover plaintext + signer key from an ElyShield message URL.elyshield_verify_sealParse a Quantum Seal metadata blob and compare sha256 against file_hash.elyshield_sign_x402Sign an x402 payload with ML-DSA-65 under context elyshield-v1-x402.Key sources
Tools that sign or decrypt take one key source, mutually exclusive: keyfile_json + passphrase, or signature_hex + address (with optional signature_hex_repeat). A keyfile without its passphrase, or a signature without its address, returns an error. When every signer field is omitted, encrypting tools sign with a fresh ephemeral identity.
The wallet path signs the ElyShield derivation message (domain elyshield.xyz) with EIP-191 personal_sign; that 65-byte signature is the key material. It is root material — pass it over local stdio only, never a networked transport.
x402 signing
elyshield_sign_x402 takes a base64 payload and returns a detached ML-DSA-65 signature under context elyshield-v1-x402, plus the signing public key (public_key_mldsa_b64url) and a self-check flag, so a verifier can confirm which key signed.