Developers

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.

{ "mcpServers": { "arshield": { "command": "npx", "args": ["-y", "@arshield/mcp"] } } }

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.