@alchemy/cli 0.6.2 → 0.7.0-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Alchemy CLI is a command-line tool for querying blockchain data and managing Alchemy apps/configuration.
4
4
  It supports both human-friendly terminal output and JSON output for automation.
5
- You can use API keys, access keys, or x402 wallet auth depending on the command.
5
+ You can use browser login, API keys, access keys, or x402 wallet auth depending on the command.
6
6
 
7
7
  ## Installation
8
8
 
@@ -51,7 +51,7 @@ If you run `alchemy` with no command and no auth configured, the CLI will guide
51
51
 
52
52
  If you have an auth token but haven't selected an app yet, the CLI will prompt you to pick one before running any command that requires an API key. Teams with many apps can type to search by name.
53
53
 
54
- If you use Notify webhooks, add webhook auth on top via `alchemy config set webhook-api-key <key>`, `--webhook-api-key`, or `ALCHEMY_WEBHOOK_API_KEY`.
54
+ If you use Notify webhooks, add webhook auth on top via `alchemy config set webhook-api-key <key>`, `--webhook-api-key` on `alchemy webhook` commands, or `ALCHEMY_WEBHOOK_API_KEY`.
55
55
 
56
56
  ### Usage By Workflow
57
57
 
@@ -67,7 +67,7 @@ Quick usage examples:
67
67
  alchemy
68
68
 
69
69
  # Agent/script-friendly command
70
- alchemy balance 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 --json --no-interactive
70
+ alchemy evm data balance 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 --json --no-interactive
71
71
 
72
72
  # Agent checks whether a newer CLI version is available
73
73
  alchemy update-check --json --no-interactive
@@ -79,7 +79,7 @@ Have your agent run `agent-prompt` as its first step to get a complete, machine-
79
79
 
80
80
  ```bash
81
81
  # Agent runs this once to learn everything the CLI can do
82
- alchemy --json agent-prompt
82
+ alchemy --json --no-interactive agent-prompt
83
83
  ```
84
84
 
85
85
  This returns a single JSON document with execution policy, preflight instructions, auth matrix, the full command tree with all arguments and options, error codes with recovery actions, and example invocations. No external docs required.
@@ -91,68 +91,57 @@ Agents can also call `alchemy --json --no-interactive update-check` to retrieve
91
91
  Run commands as `alchemy <command>`.
92
92
  Use `alchemy help` or `alchemy help <command>` for generated command help.
93
93
 
94
- ### Node
94
+ ### EVM
95
95
 
96
96
  | Command | What it does | Example |
97
97
  |---|---|---|
98
- | `balance [address]` (`bal [address]`) | Gets ETH balance for an address | `alchemy bal 0x...` |
99
- | `tx [hash]` | Gets transaction + receipt by hash | `alchemy tx 0x...` |
100
- | `receipt [hash]` | Gets transaction receipt (status, gas, logs) | `alchemy receipt 0x...` |
101
- | `block <number>` | Gets block details (`latest`, decimal, or hex) | `alchemy block latest` |
102
- | `gas` | Gets current gas prices (base fee + priority fee) | `alchemy gas -n polygon-mainnet` |
103
- | `logs` | Queries event logs (`eth_getLogs`) | `alchemy logs --address 0x... --from-block 18000000 --to-block 18000010` |
104
- | `rpc <method> [params...]` | Makes raw JSON-RPC call | `alchemy rpc eth_blockNumber` |
105
- | `trace <method> [params...]` | Calls Trace API methods | `alchemy trace call '{"to":"0x..."}' '["trace"]' latest` |
106
- | `debug <method> [params...]` | Calls Debug API methods | `alchemy debug traceTransaction "0x..."` |
107
-
108
- ### Data
109
-
110
- | Command | What it does | Example |
111
- |---|---|---|
112
- | `tokens balances [address]` | Lists ERC-20 balances for an address | `alchemy tokens balances 0x...` |
113
- | `tokens metadata <contract>` | Gets ERC-20 metadata | `alchemy tokens metadata 0x...` |
114
- | `tokens allowance --owner --spender --contract` | Gets ERC-20 allowance | `alchemy tokens allowance --owner 0x... --spender 0x... --contract 0x...` |
115
- | `nfts [address]` | Lists NFTs owned by an address | `alchemy nfts 0x...` |
116
- | `nfts metadata --contract <addr> --token-id <id>` | Gets NFT metadata by contract/token | `alchemy nfts metadata --contract 0x... --token-id 1` |
117
- | `nfts contract <address>` | Gets NFT contract metadata | `alchemy nfts contract 0x...` |
118
- | `transfers [address]` | Gets transfer history (`alchemy_getAssetTransfers`) | `alchemy transfers 0x... --category erc20,erc721` |
119
- | `prices symbol <symbols>` | Gets current token prices by symbol | `alchemy prices symbol ETH,USDC` |
120
- | `prices address --addresses <json>` | Gets current token prices by address/network pairs | `alchemy prices address --addresses '[{"network":"eth-mainnet","address":"0x..."}]'` |
121
- | `prices historical --body <json>` | Gets historical prices | `alchemy prices historical --body '{"symbol":"ETH","startTime":"...","endTime":"..."}'` |
122
- | `portfolio tokens --body <json>` | Gets token portfolio data | `alchemy portfolio tokens --body '{...}'` |
123
- | `portfolio token-balances --body <json>` | Gets token balance snapshots | `alchemy portfolio token-balances --body '{...}'` |
124
- | `portfolio nfts --body <json>` | Gets NFT portfolio data | `alchemy portfolio nfts --body '{...}'` |
125
- | `portfolio nft-contracts --body <json>` | Gets NFT contract portfolio data | `alchemy portfolio nft-contracts --body '{...}'` |
126
- | `portfolio transactions --body <json>` | Gets portfolio transaction history | `alchemy portfolio transactions --body '{...}'` |
127
- | `simulate asset-changes --tx <json>` | Simulates asset changes | `alchemy simulate asset-changes --tx '{"from":"0x...","to":"0x..."}'` |
128
- | `simulate execution --tx <json>` | Simulates execution traces | `alchemy simulate execution --tx '{"from":"0x...","to":"0x..."}'` |
129
- | `simulate asset-changes-bundle --txs <json>` | Simulates bundle asset changes | `alchemy simulate asset-changes-bundle --txs '[{...}]'` |
130
- | `simulate execution-bundle --txs <json>` | Simulates bundle execution traces | `alchemy simulate execution-bundle --txs '[{...}]'` |
98
+ | `evm rpc <method> [params...]` | Makes raw Ethereum JSON-RPC calls | `alchemy evm rpc eth_blockNumber` |
99
+ | `evm data balance [address]` | Gets native token balance for an address | `alchemy evm data balance 0x...` |
100
+ | `evm data tokens balances [address]` | Lists ERC-20 balances for an address | `alchemy evm data tokens balances 0x...` |
101
+ | `evm data nfts [address]` | Lists NFTs owned by an address | `alchemy evm data nfts 0x...` |
102
+ | `evm data history [address]` | Gets transfer history (`alchemy_getAssetTransfers`) | `alchemy evm data history 0x... --category erc20,erc721` |
103
+ | `evm data price symbol <symbols>` | Gets current token prices by symbol | `alchemy evm data price symbol ETH,USDC` |
104
+ | `evm data portfolio tokens --body <json>` | Gets token portfolio data | `alchemy evm data portfolio tokens --body '{...}'` |
105
+ | `evm send <to> <amount>` | Sends native tokens or ERC-20 tokens | `alchemy evm send vitalik.eth 0.1 -n base-mainnet` |
106
+ | `evm contract read/call` | Reads or writes smart contracts | `alchemy evm contract read 0x... "balanceOf(address)(uint256)" --args '["0x..."]'` |
107
+ | `evm swap quote/execute` | Swaps tokens on the same chain | `alchemy evm swap quote --from 0xEeee... --to 0xA0b8... --amount 1` |
108
+ | `evm approve <spender_address>` | Approves an ERC-20 token allowance | `alchemy evm approve 0x... --token-address 0x... --amount 10` |
109
+ | `evm status [id]` | Checks transaction or operation status | `alchemy evm status 0x...` |
110
+ | `evm network list` | Lists RPC network IDs for use with `--network` | `alchemy evm network list --search base` |
111
+ | `evm tx/receipt/block/gas/logs` | Fetches common node resources | `alchemy evm block latest` |
112
+ | `evm trace/debug` | Calls Trace and Debug API methods | `alchemy evm trace call '{"to":"0x..."}' '["trace"]' latest` |
113
+ | `evm simulate *` | Calls simulation APIs | `alchemy evm simulate execution --tx '{"to":"0x..."}'` |
131
114
 
132
115
  ### Wallets
133
116
 
117
+ `alchemy wallet` exposes a unified onchain-actions surface. The **session wallet** (Alchemy/Privy-managed, P-256 delegated signer) is the recommended flow; a **local wallet** (private key stored on disk) is supported as an alternative.
118
+
134
119
  | Command | What it does | Example |
135
120
  |---|---|---|
136
- | `wallet generate` | Generates wallet for x402 and saves to config | `alchemy wallet generate` |
137
- | `wallet import <path>` | Imports wallet key file for x402 | `alchemy wallet import ./private-key.txt` |
138
- | `wallet address` | Prints configured wallet address | `alchemy wallet address` |
139
- | `bundler send-user-operation ...` | Sends ERC-4337 user op | `alchemy bundler send-user-operation --user-op '{...}' --entry-point 0x...` |
140
- | `bundler estimate-user-operation-gas ...` | Estimates ERC-4337 user op gas | `alchemy bundler estimate-user-operation-gas --user-op '{...}' --entry-point 0x...` |
141
- | `bundler get-user-operation-receipt ...` | Gets ERC-4337 user op receipt | `alchemy bundler get-user-operation-receipt --user-op-hash 0x...` |
142
- | `gas-manager request-gas-and-paymaster --body <json>` | Requests paymaster data | `alchemy gas-manager request-gas-and-paymaster --body '{...}'` |
143
- | `gas-manager request-paymaster-token-quote --body <json>` | Gets paymaster token quote | `alchemy gas-manager request-paymaster-token-quote --body '{...}'` |
144
- | `webhooks list` | Lists Notify webhooks | `alchemy webhooks list --webhook-api-key <key>` |
145
- | `webhooks create --body <json>` | Creates Notify webhook | `alchemy webhooks create --body '{...}' --webhook-api-key <key>` |
146
- | `webhooks update --body <json>` | Updates Notify webhook | `alchemy webhooks update --body '{...}' --webhook-api-key <key>` |
147
- | `webhooks delete <id>` | Deletes Notify webhook | `alchemy webhooks delete <id> --webhook-api-key <key>` |
121
+ | `wallet connect` | Interactive: choose a session wallet (recommended) or a local wallet. For scripts, pass `--mode <session\|local>`. | `alchemy wallet connect` |
122
+ | `wallet connect --mode local --chain evm` | Create a new local EVM key (non-interactive). `--chain` accepts `evm`, `solana`, or `both`. | `alchemy wallet connect --mode local --chain both` |
123
+ | `wallet connect --mode local --import <path>` | Import an existing EVM private key from a file. | `alchemy wallet connect --mode local --import ./key.txt` |
124
+ | `wallet connect --mode session --instance-name <name>` | Connect a named session wallet instance. | `alchemy wallet connect --mode session --instance-name laptop` |
125
+ | `wallet status [--verify]` | Reports session, local EVM, local Solana, and the active signer. `--verify` reconciles the session with the backend. | `alchemy wallet status --verify` |
126
+ | `wallet address` | Prints addresses for every configured signer. | `alchemy wallet address` |
127
+ | `wallet use <session\|local>` | Selects which signer `evm send`, `evm swap`, `evm approve`, `xchain bridge`, and `evm contract call` use for EVM transactions. | `alchemy wallet use local` |
128
+ | `wallet disconnect` | Revokes the current session (local + backend). Clears `active_signer` if it pointed at the session. | `alchemy wallet disconnect` |
129
+ | `wallet qr [--type <evm\|solana>]` | Renders a configured address as a QR code. | `alchemy wallet qr --type evm` |
130
+
131
+ Per-command override: pass `--signer <session\|local>` to `evm send`, `evm approve`, `evm swap`, `xchain bridge`, or `evm contract call` to override the active signer for a single invocation.
148
132
 
149
133
  ### Chains
150
134
 
151
135
  | Command | What it does | Example |
152
136
  |---|---|---|
153
- | `network list` | Lists RPC network IDs for use with `--network` (e.g. `eth-mainnet`) | `alchemy network list --search ethereum` |
154
137
  | `solana rpc <method> [params...]` | Calls Solana JSON-RPC methods | `alchemy solana rpc getBalance '"<pubkey>"'` |
155
138
  | `solana das <method> [params...]` | Calls Solana DAS methods | `alchemy solana das getAssetsByOwner '{"ownerAddress":"<pubkey>"}'` |
139
+ | `solana network list` | Lists networks from the Solana namespace | `alchemy solana network list --search solana` |
140
+ | `solana send <to> <amount>` | Sends SOL to an address | `alchemy solana send <pubkey> 0.1` |
141
+ | `solana program accounts/account/show` | Inspects Solana program accounts and account metadata | `alchemy solana program accounts <program-id>` |
142
+ | `solana delegate approve/revoke` | Approves or revokes SPL token delegates | `alchemy solana delegate approve --token-account <addr> --mint <mint> --delegate <addr> --amount 1 --decimals 6` |
143
+ | `solana status [id]` | Checks Solana transaction or operation status | `alchemy solana status <signature>` |
144
+ | `xchain bridge quote/execute` | Bridges tokens across chains | `alchemy xchain bridge quote --from 0xEeee... --to 0xEeee... --amount 0.1 --to-network base-mainnet -n eth-mainnet` |
156
145
 
157
146
  ### CLI Admin
158
147
 
@@ -162,24 +151,34 @@ Use `alchemy help` or `alchemy help <command>` for generated command help.
162
151
  | `auth` (`auth login`) | Log in via browser (PKCE) | `alchemy auth` |
163
152
  | `auth status` | Show current authentication status | `alchemy auth status` |
164
153
  | `auth logout` | Clear saved authentication token | `alchemy auth logout` |
165
- | `apps list` | Lists apps (supports pagination/filtering) | `alchemy apps list --all` |
166
- | `apps chains` | Lists Admin API chain identifiers (e.g. `ETH_MAINNET`) | `alchemy apps chains` |
167
- | `apps get <id>` | Gets app details | `alchemy apps get <app-id>` |
168
- | `apps create` | Creates app | `alchemy apps create --name "My App" --networks eth-mainnet` |
169
- | `apps update <id>` | Updates app name/description | `alchemy apps update <app-id> --name "New Name"` |
170
- | `apps delete <id>` | Deletes app | `alchemy apps delete <app-id>` |
171
- | `apps networks <id>` | Updates app network allowlist | `alchemy apps networks <app-id> --networks eth-mainnet,polygon-mainnet` |
172
- | `apps address-allowlist <id>` | Updates app address allowlist | `alchemy apps address-allowlist <app-id> --addresses 0xabc,0xdef` |
173
- | `apps origin-allowlist <id>` | Updates app origin allowlist | `alchemy apps origin-allowlist <app-id> --origins https://example.com` |
174
- | `apps ip-allowlist <id>` | Updates app IP allowlist | `alchemy apps ip-allowlist <app-id> --ips 1.2.3.4,5.6.7.8` |
175
- | `setup status` | Shows setup status + next commands | `alchemy setup status` |
154
+ | `app list` | Lists apps (supports pagination/filtering) | `alchemy app list --all` |
155
+ | `app chains` | Lists Admin API chain identifiers (e.g. `ETH_MAINNET`) | `alchemy app chains` |
156
+ | `app get <id>` | Gets app details | `alchemy app get <app-id>` |
157
+ | `app create` | Creates app | `alchemy app create --name "My App" --networks eth-mainnet` |
158
+ | `app update <id>` | Updates app name/description | `alchemy app update <app-id> --name "New Name"` |
159
+ | `app delete <id>` | Deletes app | `alchemy app delete <app-id>` |
160
+ | `app networks <id>` | Updates app network allowlist | `alchemy app networks <app-id> --networks eth-mainnet,polygon-mainnet` |
161
+ | `app address-allowlist <id>` | Updates app address allowlist | `alchemy app address-allowlist <app-id> --addresses 0xabc,0xdef` |
162
+ | `app origin-allowlist <id>` | Updates app origin allowlist | `alchemy app origin-allowlist <app-id> --origins https://example.com` |
163
+ | `app ip-allowlist <id>` | Updates app IP allowlist | `alchemy app ip-allowlist <app-id> --ips 1.2.3.4,5.6.7.8` |
164
+ | `app configured-networks` | Lists RPC network slugs configured for an app | `alchemy app configured-networks --app-id <app-id>` |
165
+ | `app select [id]` | Selects the default app interactively or by ID | `alchemy app select <app-id>` |
166
+ | `webhook list` | Lists Notify webhooks | `alchemy webhook list --webhook-api-key <key>` |
167
+ | `webhook create --body <json>` | Creates Notify webhook | `alchemy webhook create --body '{...}' --webhook-api-key <key>` |
168
+ | `webhook update --body <json>` | Updates Notify webhook | `alchemy webhook update --body '{...}' --webhook-api-key <key>` |
169
+ | `webhook delete <id>` | Deletes Notify webhook | `alchemy webhook delete <id> --webhook-api-key <key>` |
170
+ | `webhook addresses <id>` | Gets address activity webhook addresses | `alchemy webhook addresses <id> --webhook-api-key <key>` |
171
+ | `webhook nft-filters <id>` | Gets NFT activity webhook filters | `alchemy webhook nft-filters <id> --webhook-api-key <key>` |
172
+ | `doctor` | Runs readiness checks and suggestions | `alchemy doctor` |
173
+ | `install mcp` | Installs Alchemy's remote MCP server config | `alchemy install mcp --client claude --dry-run` |
174
+ | `install skills` | Installs bundled Alchemy skills | `alchemy install skills --client cursor --dry-run` |
176
175
  | `update-check` | Checks whether a newer CLI version is available | `alchemy update-check --json --no-interactive` |
177
- | `config set ...` | Sets config values | `alchemy config set api-key <key>` |
176
+ | `config set ...` | Sets config values | `alchemy config set app <app-id>` |
178
177
  | `config get <key>` | Gets one config value | `alchemy config get network` |
179
178
  | `config list` | Lists all config values | `alchemy config list` |
180
179
  | `config reset [key]` | Resets one or all config values | `alchemy config reset --yes` |
181
180
  | `completions <shell>` | Generates shell completion scripts (bash/zsh/fish) | `eval "$(alchemy completions zsh)"` |
182
- | `agent-prompt` | Emits complete agent/automation usage instructions | `alchemy --json agent-prompt` |
181
+ | `agent-prompt` | Emits complete agent/automation usage instructions | `alchemy --json --no-interactive agent-prompt` |
183
182
  | `version` | Prints CLI version | `alchemy version` |
184
183
 
185
184
  ## Flags
@@ -193,10 +192,10 @@ These apply to all commands.
193
192
  | Flag | Env var | Description |
194
193
  |---|---|---|
195
194
  | `--api-key <key>` | `ALCHEMY_API_KEY` | API key for blockchain query commands |
196
- | `--access-key <key>` | `ALCHEMY_ACCESS_KEY` | Access key for Admin API operations |
197
195
  | `-n, --network <network>` | `ALCHEMY_NETWORK` | Target network (default: `eth-mainnet`) |
198
196
  | `--x402` | — | Enable x402 wallet-based gateway auth |
199
- | `--wallet-key-file <path>` | — | Wallet private key file for x402 auth |
197
+ | `--wallet-key-file <path>` | — | EVM wallet private key file for x402 auth and local signing |
198
+ | `--solana-wallet-key-file <path>` | — | Solana wallet private key file for local signing |
200
199
 
201
200
  #### Output & formatting
202
201
 
@@ -221,7 +220,14 @@ Additional env vars:
221
220
  | Env var | Description |
222
221
  |---|---|
223
222
  | `ALCHEMY_CONFIG` | Custom path to config file |
224
- | `ALCHEMY_WALLET_KEY` | Wallet private key for x402 auth |
223
+ | `ALCHEMY_ACCESS_KEY` | Access key for Admin API operations |
224
+ | `ALCHEMY_WALLET_KEY` | EVM wallet private key for x402 auth and local signing |
225
+ | `ALCHEMY_SOLANA_WALLET_KEY` | Solana wallet private key |
226
+ | `ALCHEMY_ACTIVE_SIGNER` | Active EVM signer override (`session` or `local`) |
227
+ | `ALCHEMY_EVM_GAS_SPONSORED` | Enable EVM gas sponsorship when set to `true` |
228
+ | `ALCHEMY_EVM_GAS_POLICY_ID` | EVM gas sponsorship policy ID |
229
+ | `ALCHEMY_SOLANA_FEE_SPONSORED` | Enable Solana fee sponsorship when set to `true` |
230
+ | `ALCHEMY_SOLANA_FEE_POLICY_ID` | Solana fee sponsorship policy ID |
225
231
  | `ALCHEMY_WEBHOOK_API_KEY` | Webhook API key for Notify commands |
226
232
 
227
233
  ### Command-specific flags
@@ -229,29 +235,43 @@ Additional env vars:
229
235
  | Command | Flags |
230
236
  |---|---|
231
237
  | `auth login` | `--force`, `-y, --yes` |
232
- | `nfts` | `--limit <n>`, `--page-key <key>` |
233
- | `nfts metadata` | `--contract <address>` (required), `--token-id <id>` (required) |
234
- | `tokens` | `--page-key <key>` |
235
- | `tokens allowance` | `--owner <address>` (required), `--spender <address>` (required), `--contract <address>` (required) |
236
- | `transfers` | `--from-address <address>`, `--to-address <address>`, `--from-block <block>`, `--to-block <block>`, `--category <list>`, `--max-count <n>`, `--page-key <key>` |
237
- | `prices address` | `--addresses <json>` (required) |
238
- | `prices historical` | `--body <json>` (required) |
239
- | `portfolio *` | `--body <json>` (required per subcommand) |
240
- | `simulate *` | `--tx <json>` or `--txs <json>` (required) |
241
- | `webhooks *` | `--webhook-api-key <key>` (or `ALCHEMY_WEBHOOK_API_KEY`, `ALCHEMY_NOTIFY_AUTH_TOKEN`, config `webhook-api-key`, or app webhook key) |
242
- | `bundler send-user-operation` | `--user-op <json>` (required), `--entry-point <address>` (required) |
243
- | `bundler estimate-user-operation-gas` | `--user-op <json>` (required), `--entry-point <address>` (required), `--state-override <json>` |
244
- | `bundler get-user-operation-receipt` | `--user-op-hash <hash>` (required) |
245
- | `gas-manager *` | `--body <json>` (required) |
246
- | `apps list` | `--cursor <cursor>`, `--limit <n>`, `--all`, `--search <query>`, `--id <appId>` |
247
- | `apps create` | `--name <name>` (required), `--networks <networks>` (required), `--description <desc>`, `--products <products>`, `--dry-run` |
248
- | `apps update` | `--name <name>`, `--description <desc>`, `--dry-run` |
249
- | `apps delete` | `--dry-run` |
250
- | `apps networks` | `--networks <networks>` (required), `--dry-run` |
251
- | `apps address-allowlist` | `--addresses <addrs>` (required), `--dry-run` |
252
- | `apps origin-allowlist` | `--origins <origins>` (required), `--dry-run` |
253
- | `apps ip-allowlist` | `--ips <ips>` (required), `--dry-run` |
254
- | `network list` | `--mainnet-only`, `--testnet-only`, `--search <term>` |
238
+ | `evm data nfts` | `--limit <n>`, `--page-key <key>` |
239
+ | `evm data nfts metadata` | `--contract <address>` (required), `--token-id <id>` (required) |
240
+ | `evm data tokens balances` | `--page-key <key>` |
241
+ | `evm data tokens allowance` | `--owner <address>` (required), `--spender <address>` (required), `--contract <address>` (required) |
242
+ | `evm data history` | `--from-address <address>`, `--to-address <address>`, `--from-block <block>`, `--to-block <block>`, `--category <list>`, `--max-count <n>`, `--page-key <key>` |
243
+ | `evm data price address` | `--addresses <json>` (required) |
244
+ | `evm data price historical` | `--body <json>` (required) |
245
+ | `evm data portfolio *` | `--body <json>` (required per subcommand) |
246
+ | `evm simulate *` | `--tx <json>` or `--txs <json>` (required) |
247
+ | `evm send` | `--token <address>`, `--gas-sponsored`, `--gas-policy-id <id>`, `--signer <session\|local>` |
248
+ | `evm contract call` | `--args <json>`, `--abi-file <path>`, `--abi <json>`, `--value <ether>`, `--gas-sponsored`, `--gas-policy-id <id>`, `--signer <session\|local>` |
249
+ | `evm swap quote` | `--from <token_address>`, `--to <token_address>`, `--amount <number>`, `--slippage <percent>`, `--signer <session\|local>` |
250
+ | `evm swap execute` | `--from <token_address>`, `--to <token_address>`, `--amount <number>`, `--slippage <percent>`, `--gas-sponsored`, `--gas-policy-id <id>`, `--signer <session\|local>` |
251
+ | `evm approve` | `--token-address <token_address>`, `--amount <decimal_amount>`, `--unlimited`, `--revoke`, `--reset-first`, `-y, --yes`, `--gas-sponsored`, `--gas-policy-id <id>`, `--signer <session\|local>` |
252
+ | `xchain bridge quote` | `--from <token_address>`, `--to <token_address>`, `--amount <number>`, `--to-network <network>`, `--slippage <percent>`, `--signer <session\|local>` |
253
+ | `xchain bridge execute` | `--from <token_address>`, `--to <token_address>`, `--amount <number>`, `--to-network <network>`, `--slippage <percent>`, `--gas-sponsored`, `--gas-policy-id <id>`, `--signer <session\|local>` |
254
+ | `wallet connect` | `--mode <session\|local>`, `--chain <evm\|solana\|both>`, `--import <path>`, `--instance-name <name>`, `--force` |
255
+ | `wallet status` | `--verify` |
256
+ | `wallet qr` | `--type <evm\|solana>`, `--solana` |
257
+ | `solana send` | `--fee-sponsored`, `--fee-policy-id <id>`, `--signer <local>` (session signing is not yet supported for Solana) |
258
+ | `solana program accounts` | `--filters <json>`, `--encoding <encoding>`, `--limit <n>` |
259
+ | `solana delegate approve` | `--token-account <address>`, `--mint <address>`, `--delegate <address>`, `--amount <number>`, `--decimals <n>`, `--fee-sponsored`, `--fee-policy-id <id>` |
260
+ | `solana delegate revoke` | `--token-account <address>`, `--fee-sponsored`, `--fee-policy-id <id>` |
261
+ | `webhook *` | `--webhook-api-key <key>` (or `ALCHEMY_WEBHOOK_API_KEY`, `ALCHEMY_NOTIFY_AUTH_TOKEN`, config `webhook-api-key`, or app webhook key) |
262
+ | `app list` | `--cursor <cursor>`, `--limit <n>`, `--all`, `--search <query>`, `--id <appId>` |
263
+ | `app create` | `--name <name>` (required), `--networks <networks>` (required), `--description <desc>`, `--products <products>`, `--dry-run` |
264
+ | `app update` | `--name <name>`, `--description <desc>`, `--dry-run` |
265
+ | `app delete` | `--dry-run`, `-y, --yes` |
266
+ | `app networks` | `--networks <networks>` (required), `--dry-run` |
267
+ | `app address-allowlist` | `--addresses <addrs>` (required), `--dry-run` |
268
+ | `app origin-allowlist` | `--origins <origins>` (required), `--dry-run` |
269
+ | `app ip-allowlist` | `--ips <ips>` (required), `--dry-run` |
270
+ | `app configured-networks` | `--app-id <id>` |
271
+ | `install mcp` | `--client <claude,cursor,codex,other,all>`, `--dry-run` |
272
+ | `install skills` | `--client <claude,cursor,codex,all>`, `--dry-run` |
273
+ | `evm network list` | `--mainnet-only`, `--testnet-only`, `--search <term>` |
274
+ | `config set` | `webhook-api-key`, `app`, `network`, `verbose`, `wallet-key-file`, `x402`, `evm-gas-sponsored`, `evm-gas-policy-id`, `solana-fee-sponsored`, `solana-fee-policy-id` |
255
275
  | `config reset` | `-y, --yes` |
256
276
 
257
277
  ## Authentication Reference
@@ -284,8 +304,8 @@ Run `alchemy` with no command in an interactive terminal:
284
304
 
285
305
  ```bash
286
306
  alchemy
287
- alchemy ◆ balance 0x...
288
- alchemy ◆ block latest
307
+ alchemy ◆ evm data balance 0x...
308
+ alchemy ◆ evm block latest
289
309
  alchemy ◆ exit
290
310
  ```
291
311
 
@@ -306,8 +326,8 @@ Errors are structured JSON in JSON mode:
306
326
  {
307
327
  "error": {
308
328
  "code": "AUTH_REQUIRED",
309
- "message": "Not authenticated. Set ALCHEMY_API_KEY or run 'alchemy config set api-key <key>'.",
310
- "hint": "alchemy config set api-key <your-key>"
329
+ "message": "Not authenticated. Run 'alchemy auth' to log in, or set ALCHEMY_API_KEY.",
330
+ "hint": "alchemy auth"
311
331
  }
312
332
  }
313
333
  ```
@@ -2,24 +2,26 @@
2
2
  if(process.argv.includes("--no-color"))process.env.NO_COLOR="1";
3
3
  import {
4
4
  AUTH_PORT,
5
- OAUTH_CLIENT_ID,
5
+ DEFAULT_EXPIRES_IN_SECONDS,
6
+ completeLogin,
6
7
  exchangeCodeForToken,
7
- getAuthorizeUrl,
8
+ getLoginUrl,
8
9
  openBrowser,
9
10
  performBrowserLogin,
10
- prepareBrowserLogin,
11
+ prepareLogin,
11
12
  revokeToken,
12
13
  waitForCallback
13
- } from "./chunk-FFMNT74F.js";
14
- import "./chunk-56ZVYB4G.js";
14
+ } from "./chunk-EKBSQAEG.js";
15
+ import "./chunk-OLVYWGY6.js";
15
16
  export {
16
17
  AUTH_PORT,
17
- OAUTH_CLIENT_ID,
18
+ DEFAULT_EXPIRES_IN_SECONDS,
19
+ completeLogin,
18
20
  exchangeCodeForToken,
19
- getAuthorizeUrl,
21
+ getLoginUrl,
20
22
  openBrowser,
21
23
  performBrowserLogin,
22
- prepareBrowserLogin,
24
+ prepareLogin,
23
25
  revokeToken,
24
26
  waitForCallback
25
27
  };
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ if(process.argv.includes("--no-color"))process.env.NO_COLOR="1";
3
+ import {
4
+ registerAuth,
5
+ selectAppAfterAuth
6
+ } from "./chunk-KJ5VM7FE.js";
7
+ import "./chunk-EKBSQAEG.js";
8
+ import "./chunk-JMDBEC5L.js";
9
+ import "./chunk-A6BWLRFV.js";
10
+ import "./chunk-AFD4Y42F.js";
11
+ import "./chunk-HGZTGSXO.js";
12
+ import "./chunk-OLVYWGY6.js";
13
+ export {
14
+ registerAuth,
15
+ selectAppAfterAuth
16
+ };
@@ -2,10 +2,10 @@
2
2
  if(process.argv.includes("--no-color"))process.env.NO_COLOR="1";
3
3
  import {
4
4
  configPath
5
- } from "./chunk-BAAQ7ELR.js";
5
+ } from "./chunk-HGZTGSXO.js";
6
6
  import {
7
7
  esc
8
- } from "./chunk-56ZVYB4G.js";
8
+ } from "./chunk-OLVYWGY6.js";
9
9
 
10
10
  // src/lib/update-check.ts
11
11
  import { execFileSync } from "child_process";
@@ -53,7 +53,7 @@ function semverLT(a, b) {
53
53
  return false;
54
54
  }
55
55
  function currentVersion() {
56
- return true ? "0.6.2" : "0.0.0";
56
+ return true ? "0.7.0-alpha.11" : "0.0.0";
57
57
  }
58
58
  function toUpdateStatus(latestVersion, checkedAt) {
59
59
  const current = currentVersion();