v0.2.0
March 2026 Action-based validation, codebase scanner, MCP server mode. The primary validation endpoint has changed.POST /api/validate now accepts an action + reason payload instead of raw EVM transaction parameters. This makes Mandate wallet-agnostic: it works with custodial wallets (Bankr, Locus, Sponge), self-custodial signers, and any chain format.
POST /api/validateis the new primary endpoint. Sendaction,reason, and optionallyamount,to,token,chain. No intentHash, nonce, or gas params needed.POST /api/validate/preflightis an alias for/validate(backwards compatibility).POST /api/validate/rawis now deprecated. It still works for existing EVM integrations that need intent hash verification and envelope verification, but all new integrations should use/validate.- SDK:
MandateClient.validate()calls the new action-based endpoint.MandateWalletcontinues to use raw validation internally for self-custodial flows. - CLI
scancommand:npx @mandate.md/cli scandetects unprotected wallet calls in your codebase. Zero config, zero auth. Exit code 1 if findings exist (CI-friendly). - MCP server mode:
npx @mandate.md/cli --mcpexposes all Mandate commands as MCP tools over stdio. Compatible with any MCP-capable host. --llmsflag:npx @mandate.md/cli --llmsoutputs a machine-readable command manifest for agent discovery.- Risk scanning:
POST /api/risk/checkendpoint for standalone address risk assessment via the Aegis security scanner. - Blocked actions: Policies now support
blockedActionsandrequireApprovalActionsfields for action-level control (e.g., block all “bridge” actions). - Claude Code plugin:
claude-mandate-pluginreplaces the legacy@mandate/claude-code-hook. Two-phase enforcement: PostToolUse records validation tokens, PreToolUse blocks unvalidated transactions. Fail-closed, no network calls in the gate. - Prompt injection scanning: The
reasonfield is now scanned against 18 hardcoded patterns plus an optional LLM judge. Blocked transactions return adeclineMessagecounter-message.
Breaking changes
MandateClient.preflight()renamed toMandateClient.validate(). The old method name is removed.PreflightPayloadtype renamed toValidatePayloadin the SDK.PreflightResultrenamed toValidateResult.- The
@mandate/guardpackage has been removed. All checks are handled by the platform API.
Migration
Replaceclient.preflight({ action, reason }) with client.validate({ action, reason }). The request and response shapes are the same.
v0.1.0
February 2026 Initial release. Non-custodial agent wallet policy layer.MandateClient: Low-level API wrapper for registration, raw validation, intent events, and status polling.MandateWallet: High-level wrapper that handles validate, sign, broadcast, and postEvent in a singletransfer()call. Requires anExternalSigner(your existing wallet).- Registration:
POST /api/agents/registercreates an agent identity, returns aruntimeKeyandclaimUrl. Human visits the claim URL to link the agent to their dashboard. - Raw validation:
POST /api/validate/rawwith full EVM tx params +intentHash. Policy engine checks circuit breaker, schedule, allowlist, selectors, spend limits, and quotas. - Intent lifecycle:
reserved,approval_pending,approved,broadcasted,confirmed,failed,expired. Envelope verification checks that the on-chain transaction matches what was validated. - Policy engine: Per-transaction, daily, and monthly USD spend limits. Address allowlists. Function selector blocking. Schedule restrictions (days/hours). Approval gates for high-value transactions.
- Circuit breaker: Auto-trips on envelope mismatch. Manual toggle via dashboard. When active, all agent transactions are blocked.
- Error types:
PolicyBlockedError,CircuitBreakerError,ApprovalRequiredError,RiskBlockedErrorwith typed fields forblockReason,detail, anddeclineMessage. - CLI:
@mandate.md/cliwith commands forlogin,activate,validate-raw,transfer,event,status,approve. - Dashboard: Agent management, policy builder, approval queue, audit log, circuit breaker controls.
- Integrations: OpenClaw plugin, GOAT SDK plugin, Coinbase AgentKit provider, ElizaOS plugin, GAME SDK plugin (Virtuals), MCP server (Cloudflare Workers).