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 @arshield/mcp (v0.1.0).
Install
Requires Node.js 20 or later. Works with Claude Desktop, Claude Code, Cursor or any MCP client.
Tools
arshield_encrypt_fileEncrypt bytes into a hybrid ML-KEM-768 + X25519 envelope, signed with ML-DSA-65.arshield_decrypt_fileDecrypt a .arshield container with a keyfile or wallet signature.arshield_send_messageWrap text (max 64KB) in a shareable encrypted URL; the key rides in the fragment.arshield_decrypt_messageRecover plaintext + signer key from an ArShield message URL.arshield_verify_sealParse a Quantum Seal metadata blob and compare sha256 against file_hash.arshield_sign_x402Sign an x402 payload with ML-DSA-65 under context arshield-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 ArShield derivation message (domain arc-shield.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
arshield_sign_x402 takes a base64 payload and returns a detached ML-DSA-65 signature under context arshield-v1-x402, plus the signing public key (public_key_mldsa_b64url) and a self-check flag, so a verifier can confirm which key signed.