JAW CLI
Guide for using the JAW CLI, a terminal interface and MCP server for interacting with JAW.id passkey-authenticated smart accounts from the command line or an AI agent.
When to use
Reference these guidelines when:
- Installing or setting up
@jaw.id/cli
- Configuring the CLI (API key, chain, paymaster, ENS, permissions)
- Writing a full config with
jaw config write
- Resolving ENS names (
.eth, .id, .com, etc.) to addresses before sending
- Sending ETH or ERC-20 tokens from the command line
- Sending batch transactions or checking transaction status
- Signing messages or typed data via the CLI
- Granting, revoking, or querying permissions
- Setting up auto mode for autonomous AI agents (session keys + scoped permissions)
- Using
--session flag for browserless operation
- Managing session lifecycle (setup, status, revoke)
- Setting up the MCP server for AI agents (Claude Desktop, etc.)
- Scripting or automating wallet operations in shell
- Debugging CLI errors or unexpected behavior
Key facts
- Package:
@jaw.id/cli — binary: jaw
- Two modes: Default mode (browser + passkey per operation) and Auto mode (
--session flag, local session key, no browser)
- Browser required for signing (default mode):
wallet_sendCalls, personal_sign, wallet_grantPermissions and other state-changing methods require passkey confirmation in browser. Read-only methods (eth_accounts, wallet_getAssets, etc.) do not.
- Auto mode: One-time
jaw session setup (browser), then --session flag for all subsequent calls. Session key is scoped by on-chain PermissionManager (call restrictions, spend limits, expiry).
- Config file:
~/.jaw/config.json — supports flat keys via jaw config set, full JSON via jaw config write, nested objects (paymasters, permissions) via direct file editing or config write.
- Config resolution order: CLI flag → env var →
~/.jaw/config.json → default
- AI agent flags: Always pass
-o json for machine-readable output and -y to skip confirmations
- Preferred transaction method: Use
wallet_sendCalls over eth_sendTransaction — supports batching, paymasters, and permission-based execution
- MCP transport:
jaw mcp starts a stdio server — configured in claude_desktop_config.json, not a port or URL
Command reference
jaw rpc call method [params]
Execute any JAW.id RPC method. params is a JSON string.
| Flag |
Short |
Default |
Description |
--output |
-o |
human |
Output format: json or human. Use json for AI agents. |
--chain |
-c |
config |
Chain ID (e.g. 8453 for Base, 1 for Ethereum) |
--api-key |
|
config |
JAW API key |
--timeout |
-t |
120 |
Request timeout in seconds |
--yes |
-y |
false |
Skip confirmations (use in AI agent contexts) |
--quiet |
-q |
false |
Suppress non-essential output |
--session |
-s |
false |
Use local session key (auto mode — no browser) |
jaw config set [key=value ...]
Set one or more flat configuration values.
Valid keys: apiKey, defaultChain, keysUrl, ens, relayUrl, sessionExpiry
jaw config set apiKey=YOUR_KEY defaultChain=8453 sessionExpiry=7
jaw config write
Write full config from inline JSON or a file path. Handles nested objects (paymasters, permissions).
jaw config write '{"apiKey":"...","defaultChain":84532,"paymasters":{"84532":{"url":"..."}},"permissions":{...}}'
jaw config write ./my-config.json
jaw config show
Display current configuration (API key is redacted).
jaw config show
jaw config show -o json
jaw session setup
Generate a session key and grant scoped on-chain permissions. Opens browser once for passkey approval.
jaw session setup --chain 84532
jaw session setup --chain 84532 --permissions ./perms.json --expiry 14 --yes
jaw session status
Show current session status (address, permissionId, expiry, valid/expired).
jaw session status
jaw session status -o json
jaw session revoke
Revoke on-chain permission and delete local session files. Opens browser (skipped if expired).
jaw session revoke
jaw disconnect
Close the relay session and browser tab. Cleans up the session stored in ~/.jaw/relay.json.
jaw mcp
Start the MCP server via stdio for AI agent integration.
jaw mcp
Rule index
1. Setup
- <rules/installation.md> — Installing the CLI and first-run setup
- <rules/configuration.md> — Configuration keys, environment variables, config write, external prerequisites
2. Operations
- <rules/ens-resolution.md> — Resolving ENS names to addresses before transacting
- <rules/transactions.md> — Sending ETH, ERC-20 tokens, batch transactions, checking status
- <rules/signing.md> — Signing messages and typed data
- <rules/permissions.md> — Granting, revoking, and querying permissions
3. Auto Mode
- <rules/auto-mode.md> — Session setup,
--session flag, lifecycle, security model, error handling
4. AI Agent Integration
- <rules/mcp.md> — MCP server setup, Claude Desktop config, available tools
5. Reference
- <rules/api-reference.md> — Full per-method reference with params schemas and examples
How to use
Read individual rule files for detailed guidance. Each contains:
correct usage examples, common mistakes to avoid, and critical requirements.
1---2name: jaw-cli3description: Best practices and usage guide for the JAW CLI (@jaw.id/cli). Use this skill when using the `jaw` command-line tool, scripting JAW wallet operations in shell, configuring the CLI, sending transactions or signing messages via the CLI, managing permissions from the terminal, setting up the JAW MCP server for AI agents, setting up auto mode for autonomous AI agent operation, or when asked about JAW CLI commands, configuration, or patterns.4---56# JAW CLI78Guide for using the JAW CLI, a terminal interface and MCP server for interacting with JAW.id passkey-authenticated smart accounts from the command line or an AI agent.910## When to use1112Reference these guidelines when:1314- Installing or setting up `@jaw.id/cli`15- Configuring the CLI (API key, chain, paymaster, ENS, permissions)16- Writing a full config with `jaw config write`17- Resolving ENS names (`.eth`, `.id`, `.com`, etc.) to addresses before sending18- Sending ETH or ERC-20 tokens from the command line19- Sending batch transactions or checking transaction status20- Signing messages or typed data via the CLI21- Granting, revoking, or querying permissions22- Setting up auto mode for autonomous AI agents (session keys + scoped permissions)23- Using `--session` flag for browserless operation24- Managing session lifecycle (setup, status, revoke)25- Setting up the MCP server for AI agents (Claude Desktop, etc.)26- Scripting or automating wallet operations in shell27- Debugging CLI errors or unexpected behavior2829## Key facts3031- **Package:** `@jaw.id/cli` — binary: `jaw`32- **Two modes:** Default mode (browser + passkey per operation) and Auto mode (`--session` flag, local session key, no browser)33- **Browser required for signing (default mode):** `wallet_sendCalls`, `personal_sign`, `wallet_grantPermissions` and other state-changing methods require passkey confirmation in browser. Read-only methods (`eth_accounts`, `wallet_getAssets`, etc.) do not.34- **Auto mode:** One-time `jaw session setup` (browser), then `--session` flag for all subsequent calls. Session key is scoped by on-chain PermissionManager (call restrictions, spend limits, expiry).35- **Config file:** `~/.jaw/config.json` — supports flat keys via `jaw config set`, full JSON via `jaw config write`, nested objects (paymasters, permissions) via direct file editing or `config write`.36- **Config resolution order:** CLI flag → env var → `~/.jaw/config.json` → default37- **AI agent flags:** Always pass `-o json` for machine-readable output and `-y` to skip confirmations38- **Preferred transaction method:** Use `wallet_sendCalls` over `eth_sendTransaction` — supports batching, paymasters, and permission-based execution39- **MCP transport:** `jaw mcp` starts a stdio server — configured in `claude_desktop_config.json`, not a port or URL4041## Command reference4243### jaw rpc call method [params]4445Execute any JAW.id RPC method. `params` is a JSON string.4647| Flag | Short | Default | Description |48| ----------- | ----- | ------- | ----------------------------------------------------------- |49| `--output` | `-o` | `human` | Output format: `json` or `human`. Use `json` for AI agents. |50| `--chain` | `-c` | config | Chain ID (e.g. `8453` for Base, `1` for Ethereum) |51| `--api-key` | | config | JAW API key |52| `--timeout` | `-t` | `120` | Request timeout in seconds |53| `--yes` | `-y` | `false` | Skip confirmations (use in AI agent contexts) |54| `--quiet` | `-q` | `false` | Suppress non-essential output |55| `--session` | `-s` | `false` | Use local session key (auto mode — no browser) |5657### jaw config set [key=value ...]5859Set one or more flat configuration values.6061Valid keys: `apiKey`, `defaultChain`, `keysUrl`, `ens`, `relayUrl`, `sessionExpiry`6263```bash64jaw config set apiKey=YOUR_KEY defaultChain=8453 sessionExpiry=765```6667### jaw config write <json-or-filepath>6869Write full config from inline JSON or a file path. Handles nested objects (paymasters, permissions).7071```bash72jaw config write '{"apiKey":"...","defaultChain":84532,"paymasters":{"84532":{"url":"..."}},"permissions":{...}}'73jaw config write ./my-config.json74```7576### jaw config show7778Display current configuration (API key is redacted).7980```bash81jaw config show82jaw config show -o json83```8485### jaw session setup8687Generate a session key and grant scoped on-chain permissions. Opens browser once for passkey approval.8889```bash90jaw session setup --chain 8453291jaw session setup --chain 84532 --permissions ./perms.json --expiry 14 --yes92```9394### jaw session status9596Show current session status (address, permissionId, expiry, valid/expired).9798```bash99jaw session status100jaw session status -o json101```102103### jaw session revoke104105Revoke on-chain permission and delete local session files. Opens browser (skipped if expired).106107```bash108jaw session revoke109```110111### jaw disconnect112113Close the relay session and browser tab. Cleans up the session stored in `~/.jaw/relay.json`.114115### jaw mcp116117Start the MCP server via stdio for AI agent integration.118119```bash120jaw mcp121```122123## Rule index124125### 1. Setup126127- <rules/installation.md> — Installing the CLI and first-run setup128- <rules/configuration.md> — Configuration keys, environment variables, config write, external prerequisites129130### 2. Operations131132- <rules/ens-resolution.md> — Resolving ENS names to addresses before transacting133- <rules/transactions.md> — Sending ETH, ERC-20 tokens, batch transactions, checking status134- <rules/signing.md> — Signing messages and typed data135- <rules/permissions.md> — Granting, revoking, and querying permissions136137### 3. Auto Mode138139- <rules/auto-mode.md> — Session setup, `--session` flag, lifecycle, security model, error handling140141### 4. AI Agent Integration142143- <rules/mcp.md> — MCP server setup, Claude Desktop config, available tools144145### 5. Reference146147- <rules/api-reference.md> — Full per-method reference with params schemas and examples148149## How to use150151Read individual rule files for detailed guidance. Each contains:152correct usage examples, common mistakes to avoid, and critical requirements.