Skip to main content

Which integration is right for you?

Mandate offers 11 integration paths. The right one depends on your agent framework, how much control you need, and whether you want automatic transaction interception or explicit validation calls. This guide walks you through the decision.

Integration methods at a glance

MethodBest forSetup effortKey features
Claude Code PluginClaude Code users1 commandAuto-intercepts transactions, two-phase enforcement, codebase scanner
OpenClaw PluginOpenClaw agentsPlugin install3 tools (register, validate, status), safety-net hook
TypeScript SDKCustom agents, full controlnpm installMandateClient (low-level) + MandateWallet (high-level with signing)
CLIScripts, testing, CInpxAll operations via command line, MCP server mode
GOAT PluginGOAT framework agentsnpm install@Tool() decorated mandate_transfer + x402_pay
AgentKit ProviderCoinbase AgentKit agentsnpm installWalletProvider + ActionProvider pattern
ElizaOS PluginElizaOS agentsnpm install3 actions (transfer, x402, sendEth) + wallet provider
GAME PluginVirtuals Protocol agentsnpm/pip installTypeScript + Python, worker functions
ACP PluginACP protocol agentsnpm installMandateAcpClient for job payments
MCP ServerAI assistants (Claude Desktop, Codex)wrangler deploySearch + execute tools on Cloudflare Workers
REST APIAny language, custom integrationNoneDirect HTTP calls to app.mandate.md/api

How to decide

Follow these steps in order. Stop at the first match.

1. Are you using Claude Code?

Use the Claude Code Plugin. It installs with a single command and auto-intercepts Bash transactions through a PreToolUse hook. Two-phase enforcement (preflight gate, then validate) runs without any changes to your agent code. The built-in codebase scanner detects financial tool calls automatically.

2. Are you using OpenClaw?

Use the OpenClaw Plugin. It exposes three tools: mandate_register, mandate_validate, and mandate_status. A safety-net hook prevents your agent from making unvalidated financial calls. Install the plugin and your agent gets Mandate enforcement out of the box.

3. Are you using an agent framework?

Pick the plugin that matches your framework:
FrameworkIntegrationLink
GOAT SDKGOAT PluginGet started
Coinbase AgentKitAgentKit ProviderGet started
ElizaOSElizaOS PluginGet started
Virtuals GAMEGAME PluginGet started
Virtuals ACPACP PluginGet started
Each plugin wraps the Mandate SDK and maps to the framework’s native patterns. You call framework-specific methods, and the plugin handles validation, signing, and event reporting.

4. Are you building a custom TypeScript agent?

Use the TypeScript SDK. You get two levels of abstraction:
  • MandateWallet: High-level. Handles the full validate, sign, broadcast, and event flow. Pass a viem wallet client, and it manages gas estimation, intent hash computation, and envelope verification. Start here.
  • MandateClient: Low-level. Direct API wrapper for /validate, /events, /status. Use this when you need custom signing logic or work with a non-viem signer.

5. Do you need a CLI for testing or CI?

Use the CLI. Run mandate validate in shell scripts, CI pipelines, or ad-hoc testing. The --mcp flag starts the CLI as an MCP server, which lets AI assistants like Claude Desktop or Codex call Mandate tools directly.

6. Are you using another language or need raw HTTP?

Use the REST API. Call the HTTP endpoints directly from Python, Go, Rust, or any language with an HTTP client. The API supports registration, validation, event reporting, and status polling. No SDK required.

Hook-based vs SDK-based architecture

Mandate integrations follow one of two patterns. Understanding the difference helps you pick the right approach for your agent.

Hook-based (Claude Code, OpenClaw)

The plugin intercepts transactions automatically. You write your agent code as you normally would, making transfer calls, contract interactions, or payment requests. The hook catches these calls before execution and gates them through Mandate’s policy engine. If validation fails, the transaction never executes. This pattern requires less code and zero changes to your agent’s core logic. The tradeoff: you rely on the hook to detect financial operations. The plugin defines which tool calls and shell commands it intercepts.
Hook-based integrations are the fastest path to production. If your agent runs in Claude Code or OpenClaw, start here.

SDK-based (all other integrations)

You call validate() explicitly in your agent code before every transaction. Your code controls when and how validation happens. You see the policy engine response, handle errors, manage approval workflows, and decide how to proceed. This pattern gives you full control over the validation flow. You can add custom logic between validation and signing, implement retries, or branch on specific block reasons. The tradeoff: you must call validate() yourself. Forgetting a call means an unvalidated transaction.
With SDK-based integrations, every transaction path in your agent must include a validate() call. Missing even one path creates an unguarded execution route. Use the codebase scanner to audit your code for gaps.

Next Steps

Claude Code Plugin

Install in one command. Auto-intercepts transactions with two-phase enforcement.

OpenClaw Plugin

Three tools and a safety-net hook for OpenClaw agents.

TypeScript SDK

Full control with MandateWallet (high-level) or MandateClient (low-level).

CLI

Command-line validation for scripts, testing, and CI pipelines.

REST API

Direct HTTP calls from any language. No SDK required.

All Integrations

Full list of framework plugins, providers, and tools.