diff --git a/content/evm/ai-tooling/_meta.js b/content/evm/ai-tooling/_meta.js
index 85158b81..4c421bfd 100644
--- a/content/evm/ai-tooling/_meta.js
+++ b/content/evm/ai-tooling/_meta.js
@@ -1,4 +1,5 @@
export default {
'mcp-server': 'MCP Server',
- 'cambrian-agent-kit': 'Cambrian Agent Kit'
+ 'cambrian-agent-kit': 'Cambrian Agent Kit',
+ 'agentic-wallets': 'Agentic Wallets'
};
diff --git a/content/evm/ai-tooling/agentic-wallets.mdx b/content/evm/ai-tooling/agentic-wallets.mdx
new file mode 100644
index 00000000..5c9879da
--- /dev/null
+++ b/content/evm/ai-tooling/agentic-wallets.mdx
@@ -0,0 +1,690 @@
+---
+title: 'Agentic Wallets'
+description: 'Build AI agents with secure, programmable wallets on Sei using Coinbase AgentKit or Privy server wallets. Includes setup guides, policy engines, and a full feature comparison.'
+keywords: ['agentic wallets', 'ai agents', 'coinbase agentkit', 'privy', 'server wallets', 'sei ai', 'agent wallet', 'cdp wallet', 'wallet policy engine']
+---
+
+import { Tabs } from 'nextra/components';
+import { Steps } from 'nextra/components';
+
+# Agentic Wallets
+
+Agentic wallets give AI agents the ability to hold funds, sign transactions, and interact with smart contracts autonomously — without exposing private keys to the agent or the LLM. This page covers the two leading solutions that work on Sei today: **Coinbase AgentKit** and **Privy server wallets**.
+
+
+Both platforms support Sei as an EVM-compatible chain. No special integration is required — you point the wallet provider at Sei's RPC and chain ID and everything works out of the box.
+
+
+## How It Works
+
+An agentic wallet sits between your AI agent and the blockchain:
+
+1. **Agent decides** — The LLM reasons about what onchain action to take (e.g. "send 5 USDC to 0x...").
+2. **SDK prepares** — The wallet SDK constructs and validates the transaction.
+3. **Policy check** — The policy engine evaluates the transaction against spending limits, allowlists, and other guardrails.
+4. **TEE signs** — The private key, isolated in a Trusted Execution Environment, signs the transaction. The key is never exposed to the agent.
+5. **Broadcast** — The signed transaction is submitted to Sei's EVM RPC.
+
+```
+┌─────────┐ ┌───────────┐ ┌──────────────┐ ┌─────────┐ ┌──────────┐
+│ LLM / │────▶│ Wallet │────▶│ Policy │────▶│ TEE │────▶│ Sei EVM │
+│ Agent │ │ SDK │ │ Engine │ │ Signer │ │ RPC │
+└─────────┘ └───────────┘ └──────────────┘ └─────────┘ └──────────┘
+```
+
+## Quick Comparison
+
+
+
+| Dimension | Coinbase AgentKit | Privy Server Wallets |
+| --- | --- | --- |
+| **Type** | Open-source SDK + wallet infra | Wallet-as-a-service API |
+| **Key isolation** | Self-custodial on Sei (bring-your-own key via Viem). CDP's TEE-managed signer does not support Sei. | TEE + Shamir secret sharing |
+| **Sei support** | Via `ViemWalletProvider` (TS) or `EthAccountWalletProvider` (Python) | Via CAIP-2 `eip155:1329` |
+| **Policy engine** | Spending limits, address/contract allowlists, network restrictions | All of the above + time-based controls, key quorums |
+| **Built-in actions** | 40+ action providers (wallet, ERC-20, ERC-721, Pyth on Sei; many others Base/Ethereum-only) | Wallet operations only (create, sign, send) |
+| **AI frameworks** | LangChain, Vercel AI SDK, OpenAI Agents SDK, MCP | LangChain (`langchain-privy`) |
+| **Server SDKs** | TypeScript, Python | TypeScript, Python, Java, Rust, Go + REST API |
+| **Open source** | Yes (MIT) | Partial (`langchain-privy` is OSS) |
+| **Pricing** | Free SDK; CDP wallets $0.005/op (5K free/mo) | Free 50K sigs/mo; paid tiers from $299/mo |
+
+
+
+**Use both together:** AgentKit ships with a built-in `PrivyWalletProvider`, so you can combine Privy's policy engine with AgentKit's 40+ action providers.
+
+---
+
+## Coinbase AgentKit on Sei
+
+[AgentKit](https://github.com/coinbase/agentkit) is Coinbase's open-source toolkit for giving AI agents crypto wallets and onchain capabilities. It is framework-agnostic (LangChain, Vercel AI SDK, OpenAI Agents SDK, MCP) and wallet-agnostic (CDP wallets, Privy, Viem, and more).
+
+### Architecture
+
+AgentKit is organized around three concepts:
+
+- **Wallet Providers** — Abstraction over different wallet implementations. For Sei, use `ViemWalletProvider` (TypeScript) or `EthAccountWalletProvider` (Python).
+- **Action Providers** — Units of onchain functionality (ERC-20 transfers, ERC-721 ops, Pyth price feeds, etc.). Generic EVM providers work on Sei; providers with hard-coded chain allowlists (e.g. `x402ActionProvider`, `wethActionProvider`, CDP-managed ones) do not — see the support matrix below.
+- **Framework Extensions** — Adapters that turn AgentKit actions into tools for your AI framework of choice.
+
+### Prerequisites
+
+- Node.js v22+ (TypeScript) or Python 3.10+
+- A [CDP Secret API Key](https://portal.cdp.coinbase.com/) (for CDP wallet providers; not required for Viem)
+- A funded wallet on Sei
+
+### Setup
+
+
+
+
+
+
+### Install packages
+
+```bash copy
+npm install @coinbase/agentkit @coinbase/agentkit-langchain viem
+```
+
+### Create the wallet provider and AgentKit
+
+Viem ships with `sei` (id `1329`) and `seiTestnet` (id `1328`) out of the box, so you can import them directly from `viem/chains`.
+
+```typescript copy
+import { AgentKit, ViemWalletProvider, walletActionProvider, erc20ActionProvider } from '@coinbase/agentkit';
+import { createWalletClient, http } from 'viem';
+import { privateKeyToAccount } from 'viem/accounts';
+import { sei } from 'viem/chains';
+
+// Create a Viem wallet client pointed at Sei
+const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
+const client = createWalletClient({
+ account,
+ chain: sei,
+ transport: http('https://evm-rpc.sei-apis.com'),
+});
+
+// Wrap it in AgentKit
+const walletProvider = new ViemWalletProvider(client);
+const agentKit = await AgentKit.from({
+ walletProvider,
+ actionProviders: [
+ walletActionProvider(),
+ erc20ActionProvider(),
+ // Add more action providers as needed
+ ],
+});
+```
+
+### Wire into LangChain
+
+```typescript copy
+import { getLangChainTools } from '@coinbase/agentkit-langchain';
+import { ChatOpenAI } from '@langchain/openai';
+import { createReactAgent } from '@langchain/langgraph/prebuilt';
+
+const tools = await getLangChainTools(agentKit);
+const model = new ChatOpenAI({ model: 'gpt-4o' });
+
+const agent = createReactAgent({
+ llm: model,
+ tools,
+ messageModifier:
+ 'You are an AI agent operating on the Sei blockchain. You can check balances, transfer tokens, and interact with smart contracts.',
+});
+
+// Run the agent
+const result = await agent.invoke({
+ messages: [{ role: 'user', content: 'What is my SEI balance?' }],
+});
+```
+
+
+
+
+
+
+
+
+### Install packages
+
+```bash copy
+pip install coinbase-agentkit coinbase-agentkit-langchain
+```
+
+### Create the wallet provider
+
+```python copy
+from coinbase_agentkit import (
+ AgentKit,
+ AgentKitConfig,
+ EthAccountWalletProvider,
+ EthAccountWalletProviderConfig,
+)
+from eth_account import Account
+
+account = Account.from_key("YOUR_PRIVATE_KEY")
+
+wallet_provider = EthAccountWalletProvider(
+ config=EthAccountWalletProviderConfig(
+ account=account,
+ chain_id=1329, # Sei mainnet
+ rpc_url="https://evm-rpc.sei-apis.com",
+ )
+)
+
+agent_kit = AgentKit(AgentKitConfig(wallet_provider=wallet_provider))
+```
+
+### Wire into LangChain
+
+```python copy
+from coinbase_agentkit_langchain import get_langchain_tools
+from langchain_openai import ChatOpenAI
+from langgraph.prebuilt import create_react_agent
+
+tools = get_langchain_tools(agent_kit)
+model = ChatOpenAI(model="gpt-4o")
+
+agent = create_react_agent(
+ model,
+ tools=tools,
+ state_modifier="You are an AI agent on the Sei blockchain.",
+)
+
+result = agent.invoke({
+ "messages": [{"role": "user", "content": "What is my SEI balance?"}]
+})
+```
+
+
+
+
+
+
+### Available Action Providers on Sei
+
+Not every AgentKit action provider works on Sei — some are chain-specific. Here's what you can use:
+
+
+
+| Action Provider | Works on Sei | Notes |
+| --- | --- | --- |
+| `walletActionProvider` | Yes | Balance, transfers, native SEI operations |
+| `erc20ActionProvider` | Yes | Any ERC-20 token (USDC, WSEI, etc.) |
+| `erc721ActionProvider` | Yes | NFT minting, transfers |
+| `pythActionProvider` | Yes | Pyth price feeds via Hermes (off-chain, chain-agnostic) |
+| `wethActionProvider` | No | Hard-coded WETH addresses; no WSEI entry. Use `erc20ActionProvider` against Sei's WSEI contract instead. |
+| `x402ActionProvider` | No | Provider's `SUPPORTED_NETWORKS` allowlist is limited to `base-mainnet`, `base-sepolia`, `solana-mainnet`, and `solana-devnet`. The x402 protocol itself is chain-agnostic — write a custom action provider or call the facilitator directly if you need x402 on Sei. |
+| `cdpApiActionProvider` | No | Requires a Coinbase `networkId`; Sei isn't in AgentKit's chain map. |
+| `morphoActionProvider` | No | Morpho contracts not deployed on Sei |
+| `moonwellActionProvider` | No | Moonwell contracts not deployed on Sei |
+
+
+
+
+For Sei-native DeFi actions (swaps on Symphony/DragonSwap, staking via Silo, lending via Takara), use the [Cambrian Agent Kit](/evm/ai-tooling/cambrian-agent-kit) alongside AgentKit, or write custom action providers.
+
+
+### Known Quirks on Sei
+
+Verified by running AgentKit `0.10.4` against Sei testnet (`chain 1328`). These quirks sit in AgentKit's network and action-provider layer and apply to **both** `ViemWalletProvider` and `PrivyWalletProvider`:
+
+- **Balances are labeled "ETH" in action output.** `walletActionProvider` hard-codes the native-currency symbol, so `get_wallet_details` returns strings like `Native Balance: 512993.50 ETH` and `native_transfer` responses say `Transferred 0.05 ETH to 0x...` even on Sei. Signing and arithmetic are unaffected — it's a display-only quirk. If the LLM will quote balances or transfer confirmations to users, add a post-processing step or a system-prompt instruction to rewrite `ETH` → `SEI` when `chain_id == 1329 || 1328`.
+- **`networkId` is `undefined`.** Coinbase's internal `CHAIN_ID_TO_NETWORK_ID` map only includes Ethereum, Polygon, Base, Arbitrum, and Optimism (mainnet + testnet). Sei's chain IDs aren't in it, so `walletProvider.getNetwork()` returns `{ protocolFamily: 'evm', chainId: '1328', networkId: undefined }`. This is harmless for signing/sending, but **any action provider that branches on `networkId`** will refuse to run on Sei. In practice, `AgentKit.from({...})` prints a warning like `The following action providers are not supported on the current network and will be unavailable: weth, x402` and silently drops them — if you expect an action and it's missing from `agentKit.getActions()`, check this warning first.
+
+### CDP-Managed Wallets and Sei
+
+AgentKit's `CdpEvmWalletProvider` (CDP-managed server wallets with built-in policies) is currently scoped to `base`, `base-sepolia`, `ethereum`, `ethereum-sepolia`, `polygon`, `arbitrum`, and `optimism` — **Sei is not a supported network**.
+
+For managed cloud custody with a policy engine on Sei, use one of:
+
+- **Privy server wallets** (below) — TEE-isolated keys with a policy engine that works on any EVM chain, including Sei.
+- **AgentKit + Privy combined** — use `PrivyWalletProvider` inside AgentKit to keep the 40+ action providers while delegating custody and policy enforcement to Privy. See [Using AgentKit with Privy (Combined)](#using-agentkit-with-privy-combined) below.
+
+If you only need self-custodial keys (no TEE, you hold the private key), use `ViemWalletProvider` as shown above and enforce limits in your own application logic.
+
+---
+
+## Privy Server Wallets on Sei
+
+[Privy](https://docs.privy.io/) provides wallet-as-a-service infrastructure for AI agents. Server wallets are programmatically managed wallets designed for backend use — no user interaction required. Keys are isolated in TEEs with Shamir secret sharing and never leave secure enclaves.
+
+### Prerequisites
+
+- A [Privy account](https://dashboard.privy.io/) with an App ID and App Secret
+- An authorization keypair (generated in the Privy dashboard)
+
+### Setup
+
+
+
+
+
+
+### Create a wallet
+
+```bash copy
+curl --request POST https://api.privy.io/v1/wallets \
+ -u ":" \
+ -H "privy-app-id: " \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "chain_type": "ethereum",
+ "policy_ids": ["your_policy_id"]
+ }'
+```
+
+Response:
+```json
+{
+ "id": "wallet_abc123",
+ "address": "0x1234...abcd",
+ "chain_type": "ethereum",
+ "policy_ids": ["your_policy_id"]
+}
+```
+
+### Send a transaction on Sei
+
+Use `eip155:1329` (CAIP-2 format) to target Sei mainnet:
+
+```bash copy
+curl --request POST https://api.privy.io/v1/wallets/wallet_abc123/rpc \
+ -u ":" \
+ -H "privy-app-id: " \
+ -H "privy-authorization-signature: " \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "method": "eth_sendTransaction",
+ "caip2": "eip155:1329",
+ "params": {
+ "transaction": {
+ "to": "0x742d35Cc6634C0532925a3b844De3e9Fe0b5BaDa",
+ "value": "0x2386F26FC10000",
+ "chain_id": 1329
+ }
+ }
+ }'
+```
+
+### Sign a message
+
+```bash copy
+curl --request POST https://api.privy.io/v1/wallets/wallet_abc123/rpc \
+ -u ":" \
+ -H "privy-app-id: " \
+ -H "privy-authorization-signature: " \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "method": "personal_sign",
+ "caip2": "eip155:1329",
+ "params": {
+ "message": "Hello from Sei"
+ }
+ }'
+```
+
+
+
+
+
+
+
+
+### Install the SDK
+
+```bash copy
+npm install @privy-io/server-auth
+```
+
+### Create a wallet and send a transaction
+
+```typescript copy
+import { PrivyClient } from '@privy-io/server-auth';
+import { parseEther } from 'viem';
+
+const privy = new PrivyClient('', '', {
+ walletApi: { authorizationPrivateKey: process.env.PRIVY_AUTH_KEY },
+});
+
+// Create a server wallet
+const wallet = await privy.walletApi.createWallet({ chainType: 'ethereum' });
+console.log('Wallet address:', wallet.address);
+
+// Send a transaction on Sei
+// NOTE: `value` must be a hex string — Privy's request signer can't
+// serialize a BigInt, so don't pass `parseEther(...)` directly.
+const { hash } = await privy.walletApi.ethereum.sendTransaction({
+ walletId: wallet.id,
+ caip2: 'eip155:1329', // Sei mainnet
+ transaction: {
+ to: '0x742d35Cc6634C0532925a3b844De3e9Fe0b5BaDa',
+ value: '0x' + parseEther('0.01').toString(16),
+ chainId: 1329,
+ },
+});
+console.log('Transaction hash:', hash);
+```
+
+
+
+
+
+
+
+
+### Install the SDK
+
+```bash copy
+pip install privy-client
+```
+
+### Create a wallet and send a transaction
+
+```python copy
+from privy import PrivyAPI
+
+client = PrivyAPI(app_id="", app_secret="")
+
+# Create a server wallet
+wallet = client.wallets.create(chain_type="ethereum")
+print(f"Wallet address: {wallet.address}")
+
+# Send a transaction on Sei
+result = client.wallets.rpc(
+ wallet_id=wallet.id,
+ method="eth_sendTransaction",
+ caip2="eip155:1329", # Sei mainnet
+ params={
+ "transaction": {
+ "to": "0x742d35Cc6634C0532925a3b844De3e9Fe0b5BaDa",
+ "value": "0x2386F26FC10000",
+ "chain_id": 1329,
+ }
+ },
+)
+print(f"Transaction hash: {result.hash}")
+```
+
+
+
+
+
+
+### Known Quirks on Sei (Privy)
+
+Verified by running `@privy-io/server-auth` `1.32.5` against Sei testnet (`eip155:1328`):
+
+- **`value` must be a hex string, not a `BigInt`.** Privy's request signer uses RFC 8785 JSON canonicalization (`canonicalize`), which throws `TypeError: Do not know how to serialize a BigInt` if you pass a `BigInt` in any field of the `transaction` object. Convert viem's `parseEther(...)` output with `'0x' + parseEther('0.01').toString(16)` before sending.
+- **`authorizationKeyIds` on `createWallet` expects the public-key registration ID, not the dashboard key ID.** Passing the ID shown next to a key in the Privy dashboard can fail with `400 Invalid authorization key IDs`. If you only need an app-owned wallet (app credentials + `authorizationPrivateKey` for request signing), omit `authorizationKeyIds` — the wallet is still fully operable.
+
+### Privy with LangChain
+
+Privy publishes a LangChain integration (`langchain-privy`) that exposes wallet operations as a single LangChain tool. The tool reads `PRIVY_APP_ID` and `PRIVY_APP_SECRET` from the environment and is bound directly to the LLM:
+
+```python copy
+import os
+from langchain_privy import PrivyWalletTool
+from langchain_openai import ChatOpenAI
+
+os.environ["PRIVY_APP_ID"] = ""
+os.environ["PRIVY_APP_SECRET"] = ""
+
+tool = PrivyWalletTool()
+print(f"Wallet: {tool.wallet_address}")
+
+llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
+llm_with_tools = llm.bind_tools([tool])
+
+response = llm_with_tools.invoke("What is my wallet address?")
+```
+
+
+As of `langchain-privy@0.1.0`, the library's `Chain` enum does not include Sei — the built-in tool only targets Ethereum, Base, Optimism, Arbitrum, Polygon, Zora, Avalanche, BSC, Celo, Linea, Solana, and Bitcoin. For Sei, either:
+
+- Call Privy's REST API / server-auth SDK directly with `caip2: eip155:1329` (shown above), or
+- Use AgentKit's `PrivyWalletProvider` with a LangChain adapter (`@coinbase/agentkit-langchain`) — see the [Combined](#using-agentkit-with-privy-combined) section below.
+
+
+### Privy Policy Engine
+
+Privy's policy engine evaluates policies server-side before signing. Each rule pairs an `ALLOW`/`DENY` action with an RPC `method` and a list of `conditions` on transaction fields. Attach one or more policies to a wallet via `updateWallet`.
+
+
+**Privy's engine is default-deny.** A request is allowed only when at least one `ALLOW` rule matches and no `DENY` rule matches. A policy built from `DENY`-only rules blocks every transaction — including ones you expect to pass. Always start from an explicit `ALLOW` rule that describes the happy path, then layer `DENY` rules on top.
+
+
+```typescript copy
+// "Cap sends at 10 SEI and block a specific address."
+// Rule 1 (ALLOW) defines the happy path; without it, every request is denied.
+// Rule 2 (DENY) carves a specific hole in that allow.
+const policy = await privy.walletApi.createPolicy({
+ name: 'sei-agent-policy',
+ version: '1.0',
+ chainType: 'ethereum',
+ rules: [
+ {
+ name: 'Allow sends up to 10 SEI',
+ action: 'ALLOW',
+ method: 'eth_sendTransaction',
+ conditions: [
+ {
+ fieldSource: 'ethereum_transaction',
+ field: 'value',
+ operator: 'lte',
+ value: '10000000000000000000', // 10 SEI in wei
+ },
+ ],
+ },
+ {
+ name: 'Deny sends to blocklisted address',
+ action: 'DENY',
+ method: 'eth_sendTransaction',
+ conditions: [
+ {
+ fieldSource: 'ethereum_transaction',
+ field: 'to',
+ operator: 'in',
+ value: ['0xdEAD000000000000000042069420694206942069'],
+ },
+ ],
+ },
+ ],
+});
+
+// Attach policy to wallet
+await privy.walletApi.updateWallet({
+ id: wallet.id,
+ policyIds: [policy.id],
+});
+```
+
+
+Conditions support the `eq`, `gt`, `gte`, `lt`, `lte`, and `in` operators against `ethereum_transaction` fields (`to`, `value`) or `ethereum_calldata` fields. Operand order is `tx_field rule_value` — e.g. `operator: 'lte'` with `value: '10000000000000000000'` means "transaction value ≤ 10 SEI". `method` must be `eth_sendTransaction` or `eth_signTransaction`. Chain restriction is not a policy condition — enforce `caip2: 'eip155:1329'` at the call site to keep an agent on Sei.
+
+
+Privy also offers features beyond the policy engine:
+
+- **Key quorums** — require multiple authorization keys to approve high-value transactions
+- **Webhook notifications** — get notified of all wallet activity (works chain-agnostically)
+
+---
+
+## Using AgentKit with Privy (Combined)
+
+AgentKit includes a built-in `PrivyWalletProvider`, so you can use Privy's wallet infrastructure and policy engine as the backend while using AgentKit's 40+ action providers for onchain operations.
+
+Because of the `authorizationKeyIds` quirk noted above, the simplest working pattern is to create the wallet once via the Privy SDK (or the dashboard) and then hand the resulting `walletId` to AgentKit:
+
+```typescript copy
+import { AgentKit, PrivyWalletProvider, walletActionProvider, erc20ActionProvider } from '@coinbase/agentkit';
+import { PrivyClient } from '@privy-io/server-auth';
+
+// Step 1 — create (or look up) a server wallet via the Privy SDK.
+// Omit authorizationKeyIds here; attach policies with updateWallet if needed.
+const privy = new PrivyClient(process.env.PRIVY_APP_ID!, process.env.PRIVY_APP_SECRET!, {
+ walletApi: { authorizationPrivateKey: process.env.PRIVY_AUTH_KEY },
+});
+const wallet = await privy.walletApi.createWallet({ chainType: 'ethereum' });
+
+// Step 2 — wrap the existing wallet in AgentKit's PrivyWalletProvider.
+const walletProvider = await PrivyWalletProvider.configureWithWallet({
+ appId: process.env.PRIVY_APP_ID!,
+ appSecret: process.env.PRIVY_APP_SECRET!,
+ chainId: '1329', // Sei mainnet
+ walletId: wallet.id,
+ authorizationPrivateKey: process.env.PRIVY_AUTH_KEY,
+});
+
+const agentKit = await AgentKit.from({
+ walletProvider,
+ actionProviders: [
+ walletActionProvider(),
+ erc20ActionProvider(),
+ ],
+});
+```
+
+This gives you the best of both worlds: Privy's fine-grained policies and key quorums with AgentKit's rich action library.
+
+
+If you call `PrivyWalletProvider.configureWithWallet` **without** a `walletId`, AgentKit will attempt to create a new wallet for you and pass `authorizationKeyId` through to Privy — which hits the same `400 Invalid authorization key IDs` failure described in Privy's Known Quirks. Always pre-create the wallet and pass `walletId`.
+
+
+---
+
+## Feature Matrix
+
+### Wallet Creation & Key Management
+
+
+
+| Capability | Coinbase AgentKit | Privy |
+| --- | --- | --- |
+| Programmatic wallet creation on Sei | Yes — self-custodial via `ViemWalletProvider` (you hold the key). CDP-managed server wallets do not currently support Sei. | Yes — Server wallets on any EVM |
+| TEE-secured key isolation on Sei | No — CDP's TEE signer is scoped to Base/Ethereum/Polygon/Arbitrum/Optimism. Use Privy (standalone or via `PrivyWalletProvider` in AgentKit). | Yes — TEE + key sharding |
+| Managed cloud custody on Sei | No via CDP. Yes via `PrivyWalletProvider`. | Yes — Server wallets with `eip155:1329` |
+| Multi-party key quorum | No | Yes — Authorization key quorums via dashboard |
+| Key export / portability | Yes | Yes |
+
+
+
+### Policy Engine & Guardrails
+
+
+
+| Capability | Coinbase AgentKit | Privy |
+| --- | --- | --- |
+| Spending limits (per-tx) on Sei | Only via app-level checks with `ViemWalletProvider`. CDP's `ethValue` policy doesn't apply on Sei. | Yes — Policy engine, any chain |
+| Contract / address allowlisting on Sei | Only via app-level checks with `ViemWalletProvider`. CDP's `evmAddress` policy doesn't apply on Sei. | Yes — Contract allowlist rules |
+| Network restriction policies on Sei | N/A — CDP networkIds don't include Sei | Yes — Chain restrictions |
+| Time-based access controls | No | Yes |
+| Transaction simulation | No | No — Needs Sei-specific RPC |
+
+
+
+### Gas & Transaction Management
+
+
+
+| Capability | Coinbase AgentKit | Privy |
+| --- | --- | --- |
+| Gasless / sponsored transactions on Sei | No — Gasless is Base-only | No — Requires Sei-native paymaster |
+| Smart wallet (ERC-4337) on Sei | No — Smart Accounts don't include Sei | No — Possible via ZeroDev or Biconomy integration |
+| Batch transactions on Sei | No — Requires Smart Accounts | Yes |
+| Basic send / transfer on Sei | Yes | Yes |
+| ERC-20 token operations on Sei | Yes — `erc20ActionProvider` | Yes — Standard EVM ops |
+
+
+
+### Agentic DeFi Actions
+
+
+
+| Capability | Coinbase AgentKit | Privy |
+| --- | --- | --- |
+| Token swaps on Sei DEXs | No — Built-in swap providers (Jupiter, 0x, Sushi, Enso) don't route Sei DEXs | No |
+| Yield / lending on Sei | No — Built-in lending providers (Morpho, Moonwell, Compound, Yelay) aren't deployed on Sei | No |
+| Liquidity provision on Sei | No | No |
+| Cross-chain bridge to/from Sei | No — Sei not a listed Across route | No |
+| Pyth oracle price feeds | Yes — `pythActionProvider` works on Sei | No |
+
+
+
+
+For Sei-native DeFi actions, use the [Cambrian Agent Kit](/evm/ai-tooling/cambrian-agent-kit) which includes built-in integrations for Symphony, DragonSwap, Silo, Takara, and Citrex.
+
+
+### x402 & Machine-to-Machine Payments
+
+
+
+| Capability | Coinbase AgentKit | Privy |
+| --- | --- | --- |
+| x402 protocol support on Sei | No via built-in `x402ActionProvider` (allowlist is Base + Solana only) — possible via a custom action provider | Yes — Works wherever agent holds stablecoins |
+| Agent-to-agent USDC transfers | Yes — ERC-20 transfers with Sei USDC | Yes — Server wallet transfers |
+| Stablecoin operations on Sei | Yes — `erc20ActionProvider` + Sei USDC | Yes — Standard ERC-20 ops |
+
+
+
+### Developer Experience
+
+
+
+| Capability | Coinbase AgentKit | Privy |
+| --- | --- | --- |
+| MCP server integration | Yes — AgentKit MCP framework extension | No |
+| LangChain / Vercel AI SDK | Yes — Framework extensions for both | Yes — `langchain-privy` |
+| OpenAI Agents SDK | Yes — Native extension | No |
+| Webhook / event monitoring on Sei | No — Webhooks for supported networks only | Yes — Chain-agnostic webhooks |
+| Multi-language SDKs | TypeScript, Python | TypeScript, Python, Java, Rust, Go + REST |
+
+
+
+---
+
+## Other Agentic Wallet Solutions
+
+While Coinbase AgentKit and Privy are the most mature options for Sei, several other platforms support agentic wallet use cases:
+
+
+
+| Platform | Approach | Sei Support | Best For |
+| --- | --- | --- | --- |
+| [Turnkey](https://docs.turnkey.com/products/embedded-wallets/features/agentic-wallets) | TEE-based key isolation, sub-100ms signing, granular policies | Yes (any EVM) | Enterprise agents needing fine-grained policies |
+| [Lit Protocol](https://developer.litprotocol.com/) | Decentralized key management (DKG), programmable key pairs as NFTs | Yes (any EVM) | Decentralized, user-owned agent delegation |
+| [Dynamic](https://www.dynamic.xyz/ecosystems/sei) | MPC or smart contract wallets, strong onboarding UX | Yes (explicit Sei support) | Apps serving both humans and agents |
+| [thirdweb](https://thirdweb.com/) | Backend wallets + account abstraction, session keys | Yes (any EVM) | Broadest AI framework support (6+ frameworks) |
+| [Openfort](https://www.openfort.io/solutions/ai-agents) | TEE server wallets, sub-125ms signing, 25+ EVM chains | Yes (any EVM) | Gaming and high-throughput agent workloads |
+
+
+
+---
+
+## Sei Network Configuration Reference
+
+Use these values when configuring any agentic wallet provider for Sei:
+
+
+
+| Parameter | Mainnet | Testnet |
+| --- | --- | --- |
+| **Chain ID** | `1329` | `1328` |
+| **Chain ID (hex)** | `0x531` | `0x530` |
+| **CAIP-2** | `eip155:1329` | `eip155:1328` |
+| **RPC URL** | `https://evm-rpc.sei-apis.com` | `https://evm-rpc-testnet.sei-apis.com` |
+| **Currency** | SEI (18 decimals) | SEI (18 decimals) |
+| **Block Explorer** | [seiscan.io](https://seiscan.io) | [seiscan.io](https://testnet.seiscan.io) |
+| **Finality** | ~400ms | ~400ms |
+
+
+
+
+**Security Reminders:**
+
+- Never expose private keys or authorization secrets to the LLM/agent process.
+- Always use dedicated wallets for agent operations — never your main wallet.
+- Start with testnet (`eip155:1328`) before deploying to mainnet.
+- Set spending limits and contract allowlists via the policy engine before going live.
+- Monitor agent wallet activity via block explorers or webhook notifications.
+