diff --git a/ai/agentic-wallets.mdx b/ai/agentic-wallets.mdx new file mode 100644 index 0000000..3df1123 --- /dev/null +++ b/ai/agentic-wallets.mdx @@ -0,0 +1,654 @@ +--- +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'] +--- +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 + + + + + + + +```bash +npm install @coinbase/agentkit @coinbase/agentkit-langchain viem +``` + + + +Viem ships with `sei` (id `1329`) and `seiTestnet` (id `1328`) out of the box, so you can import them directly from `viem/chains`. + +```typescript +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 + ], +}); +``` + + + +```typescript +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?' }], +}); +``` + + + + + + + + + + +```bash +pip install coinbase-agentkit coinbase-agentkit-langchain +``` + + + +```python +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)) +``` + + + +```python +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 + + + + + + + +```bash +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"] +} +``` + + + +Use `eip155:1329` (CAIP-2 format) to target Sei mainnet: + +```bash +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 + } + } + }' +``` + + + +```bash +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" + } + }' +``` + + + + + + + + + + +```bash +npm install @privy-io/server-auth +``` + + + +```typescript +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); +``` + + + + + + + + + + +```bash +pip install privy-client +``` + + + +```python +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 +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 +// "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 +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. + diff --git a/ai/cambrian-agent-kit.mdx b/ai/cambrian-agent-kit.mdx new file mode 100644 index 0000000..e67a479 --- /dev/null +++ b/ai/cambrian-agent-kit.mdx @@ -0,0 +1,536 @@ +--- +title: 'Cambrian Agent Kit Ecosystem Tutorial' +sidebarTitle: 'Cambrian Agent Kit' +description: 'Learn to build powerful, autonomous AI agents and agentic chatbots on the SEI blockchain with DeFi protocol integrations including Takara, Silo, Citrex, and Symphony.' +keywords: ['cambrian agent kit', 'sei blockchain', 'ai agents', 'defi protocols', 'takara', 'silo', 'citrex', 'symphony', 'autonomous agents'] +--- +## Overview + +Cambrian Agent Kit is a developer SDK for building powerful, autonomous AI agents and agentic chatbots on the SEI blockchain. It lets you interact with DeFi protocols (Takara, Silo, Citrex, Symphony), manage SEI tokens and NFTs, and seamlessly integrate AI workflows. In this tutorial, you'll learn how to set up the kit, run your first agent, and use it for real DeFi use cases—customized for your needs. To understand more and deep dive into how it works under the hood, please refer to the [Cambrian Agent Kit Documentation](https://deepwiki.com/CambrianAgents/sei-agent-kit/1-overview). + +## Supported Features + +The SEI Agent Kit supports a comprehensive set of features for blockchain agent development: + +- Token Operations: Complete SEI ERC-20 and ERC-721 token management +- DeFi Protocol Integration: Seamless interaction with SEI's DeFi ecosystem +- Swap Functionality: Token swapping through Symphony aggregator +- Liquidity Management: Add and remove liquidity with DragonSwap +- Lending & Borrowing: Interact with Takara protocol for lending operations +- Staking Operations: Stake and unstake SEI tokens with Silo +- LangChain Integration: Build AI agents with LangChain and LangGraph + +## What this guide teaches you: + +This tutorial guides you through: + +- **Setup**: Install and configure the Agent Kit, connect your wallet and API keys. +- **Core Concepts**: Understand agents, supported protocols, and how these components fit together. +- **End-to-End Examples**: You'll run practical code to: + - Check your token/NFT balances. + - Swap tokens using Symphony. + - Stake/unstake SEI in Silo. + - Lend/borrow with Takara. + - Trade perps with Citrex. +- **Customization**: Learn to adapt the kit for your own protocol or workflow. + + +**Some Use Cases:** + +- **Autonomous DeFi Agents**: Agents that can automatically manage token positions, provide liquidity, or engage in lending activities +- **AI-Assisted Wallets**: Conversational interfaces for blockchain operations +- **Financial Assistant Agents**: AI agents that can analyze market conditions and execute trades +- **Portfolio Management Agents**: Automated management of crypto asset portfolios + + + +## Hands-on Tutorial + +### 1. Prerequisites + +- Node.js & npm installed +- SEI wallet private key +- OpenAI API key (for AI integrations) +- **Minimum SEI balance**: Ensure you have sufficient SEI for gas fees + +### 2. Project Setup + +```bash +git clone https://github.com/CambrianAgents/sei-agent-kit.git +cd sei-agent-kit +cp .env.example .env # Fill in your keys! +npm install +``` + +Edit `.env`: + +```env +OPENAI_API_KEY=your_openai_api_key +SEI_PRIVATE_KEY=your_wallet_private_key +RPC_URL=https://evm-rpc.sei-apis.com +``` + + +**Important Security Notes:** + +- **Never share your private key**: Your private key controls your funds + + + +### 3. Running Your First Agent + +```bash +npm run test +``` + +The following is the output and interaction with the Cambrian Agent: + +```bash +npm run test + +> sei-agent-kit@0.0.3 test +> tsx test/index.ts + + + ███████╗███████╗██╗ █████╗ ██████╗ ███████╗███╗ ██╗████████╗ ██╗ ██╗██╗████████╗ + ██╔════╝██╔════╝██║ ██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝ ██║ ██╔╝██║╚══██╔══╝ + ███████╗█████╗ ██║ ███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ █████╔╝ ██║ ██║ + ╚════██║██╔══╝ ██║ ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ██╔═██╗ ██║ ██║ + ███████║███████╗██║ ██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ██║ ██╗██║ ██║ + ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ + + +Starting chat with the Cambrian Agent... Type 'bye' to end. + +You: Hey, I would like to swap some sei to usdc. + +Cambrian Agent: Sure thing! How much SEI would you like to swap for USDC? Let me know, and I'll get the magic started! ✨ + +----------------------------------- + + +You: I would like to swap 0.2 sei for some usdc + +Cambrian Agent: + +----------------------------------- + +Getting token address for USDC... +Swapping 0.2 0x0 to 0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1... +Querying balance of SEI for 0xa0E377AEaF32024f949667f56e7fa4409AFE6b8D... + +Cambrian Agent: {"status":"success","result":"0x638d08db41e9ed370504861b4d2ced693869c45136bfdba2d92e8aed43c080fa","fromToken":"SEI","toToken":"USDC","amount":"0.2"} + +----------------------------------- + + +Cambrian Agent: Your swap of 0.2 SEI to USDC was successful! 🎉 The transaction hash is `0x638d08db41e9ed370504861b4d2ced693869c45136bfdba2d92e8aed43c080fa`. If you have any more magical swaps or questions, just let me know! 🪄 + +----------------------------------- + + +You: Give me my new balances after the previous transaction + +Cambrian Agent: + +----------------------------------- + +Getting token address for SEI... +Getting token address for USDC... +Querying balance of 0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1 for 0xa0E377AEaF32024f949667f56e7fa4409AFE6b8D... +Querying balance of 0x67da7010c6c231ad620e3940e707adb6c1a08f23 for 0xa0E377AEaF32024f949667f56e7fa4409AFE6b8D... + +Cambrian Agent: {"status":"success","balance":"0","token":{"ticker":"SEI"}} + +----------------------------------- + + +Cambrian Agent: After the swap, your new balances are: + +- SEI: 0 SEI (Looks like you've spent it all!) +- USDC: 0.147866 USDC + +If you need anything else, just give me a shout! 📢 + +----------------------------------- + + +You: bye +``` + + +**Understanding the Transaction:** + +- **SEI Address**: `0x0` represents native SEI token in the agent kit +- **Transaction Hash**: Can be verified on [Seiscan](https://seiscan.io/) +- **Gas Fees**: Automatically calculated and deducted from your balance + + + +### 4. Explore Core Features & Protocols + +#### a) Check Token Balance with Error Handling + +```typescript +import { SeiAgentKit } from './src/agent'; + +async function checkBalanceWithErrorHandling() { + try { + const agent = new SeiAgentKit(process.env.SEI_PRIVATE_KEY, 'openai'); + + // Check SEI balance + const balance = await agent.getERC20Balance(); // SEI or specify contract address + console.log('Your SEI Balance:', balance); + + // Validate balance before proceeding + if (parseFloat(balance) < 0.01) { + console.warn('⚠️ Low SEI balance. You may need more SEI for gas fees.'); + } + } catch (error) { + console.error('Error checking balance:', error.message); + + // Handle specific error types + if (error.message.includes('insufficient funds')) { + console.log('💡 Tip: Add more SEI to your wallet'); + } else if (error.message.includes('network')) { + console.log('💡 Tip: Check your RPC connection'); + } + } +} +``` + +#### b) Safe Token Swapping with Symphony + +```typescript +async function safeSwap() { + try { + const agent = new SeiAgentKit(process.env.SEI_PRIVATE_KEY, 'openai'); + + // Validate inputs + const amount = '1.0'; + const fromToken = '0x0'; // SEI + const toToken = 'usdc_contract_address'; + + // Check balance first + const balance = await agent.getERC20Balance(); + if (parseFloat(balance) < parseFloat(amount)) { + throw new Error('Insufficient balance for swap'); + } + + // Execute swap with error handling + const tx = await agent.swap(amount, fromToken, toToken); + console.log('Swap TX:', tx); + + // Verify transaction + if (tx.status === 'success') { + console.log('✅ Swap successful!'); + console.log('🔗 Transaction hash:', tx.result); + } else { + console.error('❌ Swap failed:', tx.error); + } + } catch (error) { + console.error('Swap error:', error.message); + + // Handle common swap errors + if (error.message.includes('slippage')) { + console.log('💡 Tip: Try increasing slippage tolerance'); + } else if (error.message.includes('liquidity')) { + console.log('💡 Tip: Insufficient liquidity for this pair'); + } + } +} +``` + + +**Swap Safety Tips:** + +- **SEI Native Token**: Use "0x0" as the address for native SEI token while using the agent kit +- **Slippage Protection**: Always set appropriate slippage tolerance +- **Price Impact**: Monitor price impact before large swaps + + + +#### c) Liquid Staking with Silo Protocol + +```typescript +async function stakingWithSilo() { + try { + const agent = new SeiAgentKit(process.env.SEI_PRIVATE_KEY, 'openai'); + + // Stake SEI and receive iSEI + const stakeAmount = '2.0'; + const stakeTx = await agent.stake(stakeAmount); + console.log('Staked TX:', stakeTx); + + if (stakeTx.status === 'success') { + console.log('✅ Successfully staked SEI!'); + console.log('📄 You received iSEI tokens representing your stake'); + console.log('💰 Your rewards will auto-compound over time'); + } + + // Later, unstake if needed + const unstakeAmount = '1.0'; + const unstakeTx = await agent.unstake(unstakeAmount); + console.log('Unstaked TX:', unstakeTx); + } catch (error) { + console.error('Staking error:', error.message); + + if (error.message.includes('minimum amount')) { + console.log('💡 Tip: Check minimum staking amount requirements'); + } + } +} +``` + + +**Silo Staking Details:** + +- **iSEI Token**: [Represents your staked SEI plus auto-compounded rewards](https://silostaking.gitbook.io/silo-staking/general-faq) +- **No Unbonding Period**: [Immediate liquidity unlike traditional staking](https://medium.com/@nordicmoney22/unleashing-the-power-of-liquid-staking-on-sei-4a1d045232e1) +- **5% Fee**: [Annual management fee of 5% on rewards](https://silostaking.gitbook.io/silo-staking/general-faq) +- **MEV Benefits**: [Validators share MEV profits with stakers](https://www.silostaking.io/) + + + +#### d) Lending/Borrowing with Takara Protocol + +```typescript +async function takaraLending() { + try { + const agent = new SeiAgentKit(process.env.SEI_PRIVATE_KEY, 'openai'); + + // Mint tTokens (supply liquidity) + const mintTx = await agent.mintTakara('USDC', '10'); + console.log('Mint Takara:', mintTx); + + if (mintTx.status === 'success') { + console.log('✅ Successfully supplied USDC to Takara'); + console.log('💰 You are now earning interest on your supply'); + } + + // Borrow against collateral + const borrowTx = await agent.borrowTakara('USDC', '5'); + console.log('Borrow Takara:', borrowTx); + + if (borrowTx.status === 'success') { + console.log('✅ Successfully borrowed USDC from Takara'); + console.log('⚠️ Remember to monitor your collateral ratio'); + } + + // Repay borrowed amount + const repayTx = await agent.repayTakara('USDC', '5'); + console.log('Repay Takara:', repayTx); + } catch (error) { + console.error('Takara error:', error.message); + + if (error.message.includes('collateral')) { + console.log('💡 Tip: Add more collateral to maintain healthy ratio'); + } else if (error.message.includes('liquidity')) { + console.log('💡 Tip: Insufficient liquidity in the pool'); + } + } +} +``` + +#### e) Perpetual Trading with Citrex Markets + +```typescript +async function citrexTrading() { + try { + const agent = new SeiAgentKit(process.env.SEI_PRIVATE_KEY, 'openai'); + + // Deposit margin + const depositAmount = '10'; + const depositTx = await agent.citrexDeposit(depositAmount); + console.log('Citrex Deposit:', depositTx); + + if (depositTx.status === 'success') { + console.log('✅ Successfully deposited margin to Citrex'); + console.log('⚡ You can now trade perpetuals with up to 20x leverage'); + } + + // Check available products + const products = await agent.citrexGetProducts(); + console.log('Available Products:', products); + + // Withdraw margin when done + const withdrawTx = await agent.citrexWithdraw('5'); + console.log('Citrex Withdraw:', withdrawTx); + } catch (error) { + console.error('Citrex error:', error.message); + + if (error.message.includes('margin')) { + console.log('💡 Tip: Ensure sufficient margin for your positions'); + } else if (error.message.includes('leverage')) { + console.log('💡 Tip: Reduce leverage to lower risk'); + } + } +} +``` + +See `/tools/` for more advanced protocol integrations! + +## Error Handling & Troubleshooting + +### Common Error Types + + +**Comprehensive Error Handling Examples:** + +```typescript +// Robust error handling for all operations +async function robustAgentOperation() { + const agent = new SeiAgentKit(process.env.SEI_PRIVATE_KEY, 'openai'); + + try { + // Operation code here + } catch (error) { + // Network errors + if (error.code === 'NETWORK_ERROR') { + console.log('🌐 Network issue - retrying in 5 seconds...'); + await new Promise((resolve) => setTimeout(resolve, 5000)); + // Implement retry logic + } + + // Insufficient funds + if (error.message.includes('insufficient funds')) { + console.log('💰 Insufficient funds for this operation'); + const balance = await agent.getERC20Balance(); + console.log('Current balance:', balance); + } + + // Gas estimation errors + if (error.message.includes('gas')) { + console.log('⛽ Gas estimation failed - transaction may fail'); + console.log('Try reducing transaction amount or increasing gas limit'); + } + + // Contract-specific errors + if (error.message.includes('revert')) { + console.log('📋 Smart contract reverted the transaction'); + console.log('Check transaction parameters and try again'); + } + } +} +``` + + + +### Transaction Monitoring + +```typescript +async function monitorTransaction(txHash: string) { + const maxRetries = 30; // 30 seconds max wait + let retries = 0; + + while (retries < maxRetries) { + try { + // Check transaction status + const receipt = await checkTransactionStatus(txHash); + + if (receipt.status === 'success') { + console.log('✅ Transaction confirmed!'); + return receipt; + } else if (receipt.status === 'failed') { + console.log('❌ Transaction failed'); + return receipt; + } + + // Wait and retry + await new Promise((resolve) => setTimeout(resolve, 1000)); + retries++; + } catch (error) { + console.log(`⏳ Waiting for confirmation... (${retries}/${maxRetries})`); + retries++; + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + } + + console.log('⏰ Transaction timeout - check manually on SeiTrace'); +} +``` + +### Troubleshooting Guide + +| Issue | Cause | Solution | +| --- | --- | --- | +| "Insufficient funds" | Low SEI balance | Add more SEI to your wallet | +| "Transaction failed" | Gas estimation error | Reduce transaction amount | +| "Network error" | RPC connection issue | Check RPC URL in .env | +| "Slippage too high" | Price moved during swap | Increase slippage tolerance | +| "Invalid private key" | Incorrect key format | Verify private key format | + + +**Debug Commands:** + +```bash +# Check network connection +curl -X POST https://evm-rpc.sei-apis.com \ + -H "Content-Type: application/json" \ + -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' + +# Verify wallet balance +# Use Seiscan: https://seiscan.io/ +``` + +### 5. Advanced Features & Customization + +#### Multi-Protocol Strategy Example + +```typescript +async function deFiStrategy() { + const agent = new SeiAgentKit(process.env.SEI_PRIVATE_KEY, 'openai'); + + try { + // 1. Swap SEI for USDC via Symphony + console.log('Step 1: Swapping SEI for USDC...'); + const swapTx = await agent.swap('10', '0x0', 'usdc_address'); + + // 2. Supply USDC to Takara for lending + console.log('Step 2: Supplying USDC to Takara...'); + const supplyTx = await agent.mintTakara('USDC', '5'); + + // 3. Stake remaining SEI via Silo + console.log('Step 3: Staking SEI via Silo...'); + const stakeTx = await agent.stake('5'); + + // 4. Monitor positions + console.log('Step 4: Monitoring positions...'); + const balance = await agent.getERC20Balance(); + + console.log('✅ Multi-protocol strategy executed successfully!'); + console.log('📊 Final balance:', balance); + } catch (error) { + console.error('Strategy failed:', error.message); + // Implement rollback logic if needed + } +} +``` + +#### Monitoring & Alerts: + +```typescript +// Set up monitoring for your agent +async function setupMonitoring() { + const agent = new SeiAgentKit(process.env.SEI_PRIVATE_KEY, 'openai'); + + // Monitor balance changes + setInterval(async () => { + const balance = await agent.getERC20Balance(); + if (parseFloat(balance) < 1.0) { + console.warn('⚠️ Low balance alert:', balance); + // Send alert to your monitoring system + } + }, 60000); // Check every minute + + // Monitor failed transactions + agent.on('transactionFailed', (error) => { + console.error('Transaction failed:', error); + // Log to monitoring system + }); +} +``` + +#### Custom Protocol Integration + +To extend the Cambrian Agent Kit for your own protocol, please follow this repository which explains how to add plugins to the agent kit so that it can support your protocol: [Cambrian Agents Plugin Guide](https://github.com/CambrianAgents/cambrian-plugin) diff --git a/ai/index.mdx b/ai/index.mdx new file mode 100644 index 0000000..fded607 --- /dev/null +++ b/ai/index.mdx @@ -0,0 +1,34 @@ +--- +title: 'Build on Sei with AI' +sidebarTitle: 'Overview' +description: 'AI tools for building on Sei — from knowledge injection that makes your AI assistant Sei-aware, to live blockchain tooling that lets it act on-chain.' +keywords: ['sei ai', 'ai development', 'sei-skill', 'mcp server', 'ai agents', 'blockchain ai'] +--- + +AI coding assistants are powerful — but they weren't trained on Sei's specifics. Without context, they'll give you generic Ethereum answers: wrong gas patterns, missing dual-address handling, outdated package names, and assumptions about finality that don't hold on a 400ms chain. + +Sei provides two complementary tools to fix this. + +## Two tools, two roles + + + + **Knowledge injection.** Teaches your AI assistant everything about Sei — architecture, precompiles, wallet patterns, gas behavior, and ecosystem — so every answer it gives is Sei-specific from the start. + + + **Live blockchain access.** Gives your AI assistant tools to read and write on-chain: query balances, send transactions, interact with contracts, and monitor network state in real time. + + + +Use them together: sei-skill makes your assistant think in Sei, the MCP Server lets it act on Sei. + +## Build AI agents on Sei + + + + SDK for building autonomous AI agents with DeFi integrations — staking, lending, swaps, liquidity — powered by LangChain. + + + Wallet infrastructure designed for AI agents: programmable signing, session keys, and policy controls. + + diff --git a/ai/mcp-server.mdx b/ai/mcp-server.mdx new file mode 100644 index 0000000..3556388 --- /dev/null +++ b/ai/mcp-server.mdx @@ -0,0 +1,364 @@ +--- +title: 'MCP Server' +description: 'Enable AI assistants to interact with Sei networks through natural language using the Model Context Protocol' +keywords: ['mcp', 'ai', 'model context protocol', 'claude', 'cursor', 'windsurf', 'blockchain ai'] +--- +The Sei Model Context Protocol (MCP) Server enables AI assistants to interact with Sei networks through natural language. Built on the [Model Context Protocol](https://modelcontextprotocol.io/) standard, it provides seamless blockchain integration for AI coding assistants. + +The Sei MCP Server is open source. Contribute at [github.com/sei-protocol/sei-js](https://github.com/sei-protocol/sei-js/tree/main/packages/mcp-server) + +## What is MCP? + +The Model Context Protocol is an open standard that connects AI systems with external tools and data sources. It enables: + +- Real-time data access from external services +- Function execution and operations +- Context preservation across interactions +- Specialized capabilities beyond base training + +The Sei MCP Server leverages this protocol to bring blockchain functionality directly to your AI assistant. + +## Capabilities + +| Category | Features | +| --- | --- | +| Account Management | Wallet addresses • Balance queries • Contract verification | +| Token Operations | SEI transfers • ERC20/721/1155 support • Token approvals | +| Blockchain Data | Block information • Transaction details • Network status | +| Smart Contracts | State queries • Function execution • Event logs | +| Networks | Mainnet • Testnet | + + +## Setup Guide + + + + +### Cursor Setup + + + + +Navigate to `Cursor → Settings → Cursor Settings → MCP` + + + +Click **"Add new Global MCP server"** and add this configuration to `mcp.json`: + +```json +{ + "mcpServers": { + "sei-mcp-server": { + "command": "npx", + "args": ["-y", "@sei-js/mcp-server"], + "env": { + "PRIVATE_KEY": "your_private_key_here" + } + } + } +} +``` + + + +Restart Cursor to activate the MCP server. You'll see a notification when it's ready. + + + + + + + +### Windsurf Setup + + + + +Navigate to `Windsurf → Settings → Windsurf Settings → Cascade` + + + +Add the Sei MCP Server to your configuration: + +```json +{ + "mcpServers": { + "sei": { + "command": "npx", + "args": ["-y", "@sei-js/mcp-server"], + "env": { + "PRIVATE_KEY": "your_private_key_here" + } + } + } +} +``` + + + +Save and restart Windsurf. The server loads automatically. + + + + + + + +### Claude Desktop Setup + + + + +Download [Claude Desktop](https://claude.ai/download) from Anthropic. + + + +Open **Settings** → **Developer** → **Edit Config** and add: + +```json +{ + "mcpServers": { + "sei": { + "command": "npx", + "args": ["-y", "@sei-js/mcp-server"], + "env": { + "PRIVATE_KEY": "your_private_key_here" + } + } + } +} +``` + + + +Save and restart Claude Desktop to enable Sei tools. + + + + + + + +### Claude CLI Setup + + + + +```bash +npm install -g @anthropic-ai/claude-code +``` + + + +```bash +claude mcp add sei-mcp-server npx @sei-js/mcp-server +``` + + + +```bash +claude +``` + +The Sei MCP Server activates automatically in your session. + + + + + + + +## Private Key Setup + +**Security Notice**: Generate a dedicated wallet for MCP operations. Never use your main wallet's private key. + +Export your private key from your wallet: + +- Look for "Export Private Key" or "Show Private Key" in wallet settings +- Ensure the key starts with `0x` +- Fund the wallet with small amounts for testing + +## Features + +The Sei MCP Server enables your AI assistant to: + +### Blockchain Operations + +- Query account balances and transaction history +- Execute token transfers +- Interact with smart contracts +- Monitor network status + +### Coming Soon + +- Documentation search and explanation +- @sei-js library integration +- Boilerplate generation +- DeFi protocol interactions + +## Available Tools + +### Core Operations + +| Tool | Purpose | Example | +| --- | --- | --- | +| `get_address_from_private_key` | Retrieve wallet address | "What's my wallet address?" | +| `get_balance` | Check SEI balance | "Check balance of 0x123..." | +| `transfer_sei` | Send SEI tokens | "Send 1 SEI to 0x456..." | +| `is_contract` | Verify contract address | "Is 0x789... a contract?" | + + +### Token Management + +| Tool | Purpose | Example | +| --- | --- | --- | +| `get_token_info` | Token metadata | "Get USDC token info" | +| `get_token_balance` | Token balance | "Check my USDC balance" | +| `transfer_token` | Token transfer | "Send 100 USDC to 0x123..." | +| `approve_token_spending` | Token approval | "Approve DEX for USDC" | + + +### NFT Operations + +| Tool | Purpose | Example | +| --- | --- | --- | +| `get_nft_info` | NFT metadata | "Show NFT #123 details" | +| `check_nft_ownership` | Ownership verification | "Who owns NFT #456?" | +| `transfer_nft` | NFT transfer | "Send NFT #789 to 0xABC..." | +| `get_nft_balance` | Collection balance | "How many NFTs do I own?" | + + +### Blockchain Data + +| Tool | Purpose | Example | +| --- | --- | --- | +| `get_chain_info` | Network information | "Show Sei mainnet info" | +| `get_block_by_number` | Block details by number | "Get block 12345" | +| `get_latest_block` | Latest block details | "Get latest block" | +| `get_transaction` | Transaction data | "Show tx 0xTXID..." | +| `read_contract` | Contract state | "Read DEX reserves" | + + +## AI Prompts + +Pre-configured prompts for common tasks: + +
+
+

my_wallet_address

+

Get your wallet address

+
+
+

explore_block

+

Analyze block data

+
+
+

analyze_transaction

+

Transaction details

+
+
+

analyze_address

+

Address analysis

+
+
+ +## Usage Examples + +
+
+

Query Balance

+

"What's my SEI balance?"

+

→ Returns wallet balance and address

+
+ +
+

Send Transaction

+

"Send 1 SEI to 0x742d35Cc6634C0532925a3b8D4C1C4e3153DC"

+

→ Executes transfer and returns transaction hash

+
+ +
+

Contract Analysis

+

"Is 0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1 a contract?"

+

→ Identifies contract type and metadata

+
+
+ +## Resource URIs + +Access blockchain data through standardized URIs: + +```bash +# Network data +evm://sei/chain +evm://sei-testnet/chain + +# Block information +evm://sei/block/latest +evm://sei/block/12345 + +# Transactions +evm://sei/tx/0xabc123... +evm://sei/tx/0xabc123.../receipt + +# Token data +evm://sei/token/0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1 +evm://sei/token/0x389.../balanceOf/0x742d... + +# NFT data +evm://sei/nft/0xNFT_ADDRESS/123 +evm://sei/nft/0xNFT_ADDRESS/123/isOwnedBy/0x742d... +``` + +## Configuration + +### Environment Setup + +```bash +# .env file +PRIVATE_KEY=0x_your_private_key_here + +# Optional (coming soon) +CUSTOM_RPC_URL=https://your-rpc.com +CUSTOM_CHAIN_ID=1329 +``` + +### HTTP Server Mode + +For web applications: + +```bash +# Start HTTP server +npx @sei-js/mcp-server --http + +# Connect from web app +const eventSource = new EventSource('http://localhost:3001/sse'); +``` + +## Security Guidelines + + +**Security Guidelines:** + +1. **Use a dedicated wallet** - Create a new wallet specifically for MCP +2. **Minimal funding** - Only add funds needed for testing +3. **Environment variables** - Never hardcode private keys +4. **Monitor activity** - Regularly check transaction history + +**For production:** + +- Implement transaction limits +- Use multi-signature wallets +- Add contract whitelisting +- Enable rate limiting + + + +## Troubleshooting + +**Connection issues**: Verify Node.js 18+ is installed and restart your AI assistant. + +**Private key errors**: Ensure key format starts with `0x` and wallet has sufficient funds. + +**Cursor: The model returned an error. Try disabling the MCP servers, or switch models**: Disable "Auto" in the model +menu and select a specific model e.g. `claude-4-sonnet` diff --git a/ai/sei-skill/index.mdx b/ai/sei-skill/index.mdx new file mode 100644 index 0000000..bcdf19f --- /dev/null +++ b/ai/sei-skill/index.mdx @@ -0,0 +1,72 @@ +--- +title: 'Agent Skills' +sidebarTitle: 'Overview' +description: 'A knowledge base that makes AI coding assistants Sei-aware — covering contracts, frontend, and ecosystem with Sei-specific facts baked in.' +keywords: ['sei-skill', 'ai knowledge base', 'claude', 'cursor', 'copilot', 'windsurf', 'sei development'] +--- + +sei-skill is open source. Contribute at [github.com/sei-protocol/sei-skill](https://github.com/sei-protocol/sei-skill) + +sei-skill is a structured knowledge base for AI coding assistants. Install it once and your assistant — Claude Code, Cursor, Copilot, Windsurf, or any other — will answer Sei questions with Sei-specific accuracy instead of generic Ethereum defaults. + +## Why this matters + +AI assistants are trained on broad Ethereum knowledge, not Sei's specifics. Without sei-skill, they'll confidently give you wrong answers: + +| Without sei-skill | With sei-skill | +|---|---| +| `maxFeePerGas` in transactions | Legacy `gasPrice` (Sei doesn't use EIP-1559 basefee) | +| "Finality takes ~12 confirmations" | Instant finality — 1 confirmation is final | +| SSTORE costs 20,000 gas | SSTORE varies: 72,000 on testnet, 20,000 on mainnet (governance-adjustable) | +| `PREVRANDAO` for randomness | PREVRANDAO is not random on Sei — use Pyth VRF or Chainlink VRF | +| Generic ERC-20 patterns | Sei precompiles, pointer contracts, dual-address UX | +| `@sei-js/evm` imports | `@sei-js/precompiles` (the current package name) | + +## Three knowledge domains + +sei-skill covers three areas. You can install all three or just the ones you need. + +**Contracts** — EVM smart contract development on Sei: +- Foundry and Hardhat setup for Sei networks +- All Sei precompiles (Staking, Governance, Bank, Distribution, JSON, P256) +- Pointer contracts for cross-VM asset bridging +- Gas optimization, OCC parallel execution awareness +- Account abstraction (ERC-4337), contract upgradeability +- Verification workflows on Seitrace +- Security patterns and common errors + +**Frontend** — dApp UI development: +- Wagmi + Viem setup with Sei chain config +- Wallet integration (Sei Global Wallet, MetaMask, Compass, Ledger, EIP-6963) +- Dual-address UX (`sei1...` ↔ `0x...` from the same key) +- Fast-finality patterns for 400ms blocks +- RainbowKit and ConnectKit integration + +**Ecosystem** — infrastructure and integrations: +- RPC endpoints (public, community, paid SaaS) +- Bridges (LayerZero V2, Wormhole, Axelar, CCTP) +- Oracles (Chainlink, Pyth, API3, RedStone) +- Indexers (The Graph, Goldsky, Dune, Moralis) +- DeFi protocols (DragonSwap, Yei, Takara, Saphyre) +- Validators, node operations, grants + +## Quick install + +```bash +git clone https://github.com/sei-protocol/sei-skill +cd sei-skill +./install.sh +``` + +This installs to `~/.claude/skills/sei/` by default (Claude Code). For other AI assistants, see the [Installation Guide](/ai/sei-skill/install). + +## Next steps + + + + Install for Claude Code, Cursor, Copilot, Windsurf, and more. Choose your variant. + + + See what better answers look like — prompts across contracts, frontend, and ecosystem. + + diff --git a/ai/sei-skill/install.mdx b/ai/sei-skill/install.mdx new file mode 100644 index 0000000..76cdbe5 --- /dev/null +++ b/ai/sei-skill/install.mdx @@ -0,0 +1,148 @@ +--- +title: 'sei-skill Installation' +sidebarTitle: 'Installation' +description: 'Install sei-skill for Claude Code, Cursor, GitHub Copilot, Windsurf, and other AI coding assistants.' +keywords: ['sei-skill install', 'claude code skill', 'cursor rules', 'copilot instructions', 'windsurf rules'] +--- + +## Prerequisites + +```bash +git clone https://github.com/sei-protocol/sei-skill +cd sei-skill +``` + +## Install by agent + + + + + +The default install targets Claude Code, placing the skill in `~/.claude/skills/sei/`: + +```bash +./install.sh +``` + +The skill loads automatically in every Claude Code session. To verify it's active, ask: *"What is the SSTORE gas cost on Sei testnet?"* + + + + + +```bash +./install.sh --agent codex +``` + +Installs to `AGENTS.md` in your project root. Codex CLI reads this file automatically. + + + + + +```bash +./install.sh --agent cursor +``` + +Installs to `.cursor/rules/sei.mdc` in your project. Cursor picks it up automatically as a rule file. + + + + + +```bash +./install.sh --agent copilot +``` + +Installs to `.github/copilot-instructions.md`. Copilot uses this file as custom instructions for the repository. + + + + + +```bash +./install.sh --agent windsurf +``` + +Installs to `.windsurf/rules/sei.md`. Windsurf's Cascade reads this automatically. + + + + + +```bash +./install.sh --agent aider +``` + +Installs to `~/.aider/sei.md`. Aider loads it as persistent context. + + + + + +```bash +./install.sh --agent openhands +``` + +Installs to `.openhands/SKILL.md` in your project. + + + + + +```bash +./install.sh --agent gemini +``` + +Installs to `GEMINI.md` in your project root. + + + + + +## Variants + +The full skill covers all three domains (contracts, frontend, ecosystem). If you only need one area, install a variant to keep context lean: + +| Variant | Command | Best for | +|---|---|---| +| Full (default) | `./install.sh` | General Sei development | +| Contracts | `./install.sh --variant contracts` | Smart contract engineers | +| Frontend | `./install.sh --variant frontend` | dApp and UI developers | +| Ecosystem | `./install.sh --variant ecosystem` | Infra, integrations, research | + +Combine with `--agent` to target a specific assistant: + +```bash +./install.sh --agent cursor --variant contracts +``` + +## Advanced options + +**Install to a project directory** (instead of `~/.claude/`): + +```bash +./install.sh --project +``` + +**Flatten to a single markdown file** — useful for pasting into any chat interface or custom context: + +```bash +./install.sh --flatten --output ./sei-context.md +``` + +**Custom output path:** + +```bash +./install.sh --output /path/to/custom/location +``` + +## Verify it's working + +After installing, test with a Sei-specific question that trips up unaugmented assistants: + +- *"What gas price should I use for transactions on Sei?"* +- *"Is PREVRANDAO a safe source of randomness on Sei?"* +- *"What's the difference between `sei1...` and `0x...` addresses?"* + +A Sei-aware assistant will give accurate, specific answers to all three. diff --git a/ai/sei-skill/prompts.mdx b/ai/sei-skill/prompts.mdx new file mode 100644 index 0000000..61c175f --- /dev/null +++ b/ai/sei-skill/prompts.mdx @@ -0,0 +1,125 @@ +--- +title: 'sei-skill Example Prompts' +sidebarTitle: 'Example Prompts' +description: 'Prompts that unlock Sei-specific guidance from your AI assistant after installing sei-skill.' +keywords: ['sei-skill prompts', 'ai prompts', 'sei development', 'smart contracts', 'frontend', 'ecosystem'] +--- + +Once sei-skill is installed, your AI assistant has accurate, up-to-date context on everything Sei. These prompts show what that looks like in practice — questions that would get generic (wrong) Ethereum answers without the skill, and accurate Sei-specific answers with it. + +## Contracts + +``` +Set up Foundry for Sei testnet +``` +``` +Deploy a Solidity contract to Sei mainnet and verify it on Seitrace +``` +``` +How do I call the Staking precompile from Solidity to delegate SEI? +``` +``` +Why is SSTORE so expensive on Sei testnet compared to mainnet? +``` +``` +How do I use the Bank precompile to query a native denom balance? +``` +``` +Load test my contract against the OCC parallel execution scheduler +``` +``` +Set up a UUPS upgradeable proxy for my Sei contract +``` +``` +Use ERC-4337 account abstraction on Sei with Pimlico +``` +``` +How do I create a pointer contract so my ERC-20 is accessible as a CW20? +``` +``` +Optimize gas for a contract that does many SSTORE writes +``` +``` +What's a safe source of randomness on Sei? Can I use PREVRANDAO? +``` +``` +Migrate my Ethereum contract to Sei — what do I need to change? +``` + +## Frontend + +``` +Set up Wagmi v2 with Sei mainnet and testnet chain configs +``` +``` +How do I integrate Sei Global Wallet for social login in my dApp? +``` +``` +Why should I use gasPrice instead of maxFeePerGas on Sei? +``` +``` +Display both the EVM address and Sei native address for a connected wallet +``` +``` +Connect to Sei with MetaMask, Compass, and Ledger using EIP-6963 +``` +``` +Set up RainbowKit on Sei +``` +``` +How do I handle Sei's 400ms block time in my UI? When is a transaction final? +``` +``` +Read a precompile from a React component using useReadContract +``` +``` +Set up wagmi useWriteContract for delegating SEI to a validator +``` + +## Ecosystem + +``` +What are reliable RPC endpoints for Sei mainnet with failover? +``` +``` +How do I bridge USDC to Sei using LayerZero V2? +``` +``` +Integrate Pyth price feeds in my Sei contract +``` +``` +Index Sei events with Goldsky subgraph +``` +``` +What DeFi protocols are live on Sei that I can integrate with? +``` +``` +How do I apply for a Sei Foundation grant? +``` +``` +Set up a Sei full node with state sync +``` +``` +How do I become a Sei validator? +``` +``` +Submit a governance proposal on Sei via CLI +``` + +## Architecture + +``` +Explain how Sei's OCC parallel execution works and how it affects contract design +``` +``` +What is Twin Turbo Consensus and how does it achieve sub-second finality? +``` +``` +How does the dual-address system work — when do I need to associate addresses? +``` +``` +What changed in SeiDB and why does it matter for state-heavy contracts? +``` +``` +Is CosmWasm still supported on Sei? +``` diff --git a/docs.json b/docs.json index 6d97b6a..6e29882 100644 --- a/docs.json +++ b/docs.json @@ -2,7 +2,7 @@ "$schema": "https://mintlify.com/docs.json", "theme": "mint", "name": "Sei Docs", - "description": "Official documentation for Sei — the high-performance EVM blockchain with sub-second finality, parallel execution, and full Ethereum compatibility.", + "description": "Official documentation for Sei \u2014 the high-performance EVM blockchain with sub-second finality, parallel execution, and full Ethereum compatibility.", "colors": { "primary": "#600014", "light": "#b99ba1", @@ -109,7 +109,9 @@ "groups": [ { "group": "Overview", - "pages": ["evm/index"] + "pages": [ + "evm/index" + ] }, { "group": "Essentials", @@ -195,7 +197,9 @@ }, { "group": "Videos", - "pages": ["evm/videos"] + "pages": [ + "evm/videos" + ] }, { "group": "Ecosystem Tutorials", @@ -226,14 +230,6 @@ "evm/bridging/layerzero" ] }, - { - "group": "AI Tooling", - "pages": [ - "evm/ai-tooling/mcp-server", - "evm/ai-tooling/cambrian-agent-kit", - "evm/ai-tooling/agentic-wallets" - ] - }, "evm/usdc-on-sei", "evm/x402", "evm/dune", @@ -248,7 +244,9 @@ }, { "group": "VRF", - "pages": ["evm/vrf/pyth-network-vrf"] + "pages": [ + "evm/vrf/pyth-network-vrf" + ] } ] }, @@ -264,7 +262,9 @@ }, { "group": "Hardware Wallets", - "pages": ["evm/ledger-ethers"] + "pages": [ + "evm/ledger-ethers" + ] } ] }, @@ -273,7 +273,9 @@ "groups": [ { "group": "Cosmos-SDK", - "pages": ["cosmos-sdk/index"] + "pages": [ + "cosmos-sdk/index" + ] } ] }, @@ -282,7 +284,9 @@ "groups": [ { "group": "Overview", - "pages": ["node/index"] + "pages": [ + "node/index" + ] }, { "group": "Node Operations", @@ -307,6 +311,28 @@ ] } ] + }, + { + "tab": "AI", + "groups": [ + { + "group": "AI", + "pages": [ + "ai/index", + { + "group": "Agent Skills", + "pages": [ + "ai/sei-skill/index", + "ai/sei-skill/install", + "ai/sei-skill/prompts" + ] + }, + "ai/mcp-server", + "ai/cambrian-agent-kit", + "ai/agentic-wallets" + ] + } + ] } ], "global": { @@ -350,37 +376,85 @@ { "header": "Developers", "items": [ - { "label": "Developer Hub", "href": "https://www.sei.io/developers" }, - { "label": "GitHub", "href": "https://github.com/sei-protocol" }, - { "label": "Builder Toolkit", "href": "https://sei-foundation.notion.site/Sei-Ecosystem-Builders-Toolkit-836deaebca204452909d0bf9365d8116" }, - { "label": "Builder Chat", "href": "https://t.me/+KZdhZ1eE-G01NmZk" } + { + "label": "Developer Hub", + "href": "https://www.sei.io/developers" + }, + { + "label": "GitHub", + "href": "https://github.com/sei-protocol" + }, + { + "label": "Builder Toolkit", + "href": "https://sei-foundation.notion.site/Sei-Ecosystem-Builders-Toolkit-836deaebca204452909d0bf9365d8116" + }, + { + "label": "Builder Chat", + "href": "https://t.me/+KZdhZ1eE-G01NmZk" + } ] }, { "header": "Ecosystem", "items": [ - { "label": "Dashboard", "href": "https://dashboard.sei.io" }, - { "label": "Ecosystem Hub", "href": "https://www.sei.io/ecosystem" }, - { "label": "Join the Ecosystem", "href": "https://sei-forms.typeform.com/join-ecosystem" }, - { "label": "Bridge", "href": "https://dashboard.sei.io/bridge" }, - { "label": "Stake", "href": "https://dashboard.sei.io/stake" } + { + "label": "Dashboard", + "href": "https://dashboard.sei.io" + }, + { + "label": "Ecosystem Hub", + "href": "https://www.sei.io/ecosystem" + }, + { + "label": "Join the Ecosystem", + "href": "https://sei-forms.typeform.com/join-ecosystem" + }, + { + "label": "Bridge", + "href": "https://dashboard.sei.io/bridge" + }, + { + "label": "Stake", + "href": "https://dashboard.sei.io/stake" + } ] }, { "header": "Explorers", "items": [ - { "label": "Seiscan", "href": "https://seiscan.io" }, - { "label": "Mintscan", "href": "https://www.mintscan.io/sei" } + { + "label": "Seiscan", + "href": "https://seiscan.io" + }, + { + "label": "Mintscan", + "href": "https://www.mintscan.io/sei" + } ] }, { "header": "Community", "items": [ - { "label": "X (Twitter)", "href": "https://x.com/SeiNetwork" }, - { "label": "Discord", "href": "https://discord.com/invite/sei" }, - { "label": "Telegram", "href": "https://t.me/seinetwork" }, - { "label": "Blog", "href": "https://blog.sei.io" }, - { "label": "Brand Kit", "href": "/learn/general-brand-kit" } + { + "label": "X (Twitter)", + "href": "https://x.com/SeiNetwork" + }, + { + "label": "Discord", + "href": "https://discord.com/invite/sei" + }, + { + "label": "Telegram", + "href": "https://t.me/seinetwork" + }, + { + "label": "Blog", + "href": "https://blog.sei.io" + }, + { + "label": "Brand Kit", + "href": "/learn/general-brand-kit" + } ] } ] @@ -399,230 +473,1141 @@ "prompt": "Search the Sei docs..." }, "redirects": [ - { "source": "/cosmos/:path*", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/cosmwasm/:path*", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/seichain/:path*", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/sei-protocol/:path*", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/cosmos-sdk/api/:path*", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/evm/bridging", "destination": "/evm/bridging/layerzero", "permanent": true }, - { "source": "/evm/wallet-integrations", "destination": "/evm/wallet-integrations/thirdweb", "permanent": true }, - { "source": "/evm/indexer-providers", "destination": "/evm/indexer-providers/the-graph", "permanent": true }, - { "source": "/evm/ai-tooling", "destination": "/evm/ai-tooling/mcp-server", "permanent": true }, - { "source": "/evm/agent-kits", "destination": "/evm/ai-tooling/cambrian-agent-kit", "permanent": true }, - { "source": "/evm/agent-kits/cambrian-agent-kit", "destination": "/evm/ai-tooling/cambrian-agent-kit", "permanent": true }, - { "source": "/evm/cosmwasm-precompiles", "destination": "/evm/precompiles/cosmwasm-precompiles/example-usage", "permanent": true }, - { "source": "/evm/cosmwasm-precompiles/:slug*", "destination": "/evm/precompiles/cosmwasm-precompiles/:slug*", "permanent": true }, - { "source": "/evm/bridging/tasks/:task*", "destination": "/evm/bridging/layerzero", "permanent": true }, - { "source": "/evm/debugging-with-seid", "destination": "/evm/debugging-contracts", "permanent": true }, - { "source": "/evm/evm-transactions", "destination": "/evm/transactions", "permanent": true }, - { "source": "/evm/pointers", "destination": "/evm/reference", "permanent": true }, - { "source": "/evm/pointers/:slug*", "destination": "/evm/reference", "permanent": true }, - { "source": "/evm/artifacts", "destination": "/evm/debugging-contracts", "permanent": true }, - { "source": "/evm/contracts", "destination": "/evm/evm-general", "permanent": true }, - { "source": "/evm/cache", "destination": "/evm/evm-general", "permanent": true }, - { "source": "/evm/test", "destination": "/evm/debugging-contracts", "permanent": true }, - { "source": "/evm/precompiles", "destination": "/evm/precompiles/example-usage", "permanent": true }, - { "source": "/evm/precompiles/cosmwasm-precompiles", "destination": "/evm/precompiles/cosmwasm-precompiles/example-usage", "permanent": true }, - { "source": "/evm/precompiles/cosmwasm-precompiles/pointer", "destination": "/learn/pointers", "permanent": true }, - { "source": "/evm/precompiles/cosmwasm-precompiles/ibc", "destination": "/learn/sip-03-migration", "permanent": true }, - { "source": "/evm/precompiles/artifacts/:path*", "destination": "/evm/debugging-contracts", "permanent": true }, - { "source": "/evm/MyContract.json", "destination": "/evm/debugging-contracts", "permanent": true }, - { "source": "/evm/best-practices", "destination": "/evm/best-practices/optimizing-for-parallelization", "permanent": true }, - { "source": "/evm/optimizing-for-parallelization", "destination": "/evm/best-practices/optimizing-for-parallelization", "permanent": true }, - { "source": "/evm/oracles", "destination": "/evm/oracles/chainlink", "permanent": true }, - { "source": "/evm/vrf", "destination": "/evm/vrf/pyth-network-vrf", "permanent": true }, - { "source": "/evm/precompiles/p256", "destination": "/evm/precompiles/p256-precompile", "permanent": true }, - { "source": "/evm/precompiles/P256", "destination": "/evm/precompiles/p256-precompile", "permanent": true }, - { "source": "/evm/installing-seid", "destination": "/evm/installing-seid-cli", "permanent": true }, - { "source": "/evm/ai-tooling/src/:rest*", "destination": "/evm/ai-tooling/mcp-server", "permanent": true }, - { "source": "/evm/components/:rest*", "destination": "/evm/building-a-frontend", "permanent": true }, - { "source": "/evm/wagmi", "destination": "/evm/building-a-frontend", "permanent": true }, - { "source": "/evm/web3authContext", "destination": "/evm/wallet-integrations/thirdweb", "permanent": true }, - { "source": "/evm/App", "destination": "/evm/building-a-frontend", "permanent": true }, - { "source": "/evm/bridging/third-web", "destination": "/evm/bridging/thirdweb", "permanent": true }, - { "source": "/evm/debug-tracing", "destination": "/evm/tracing", "permanent": true }, - { "source": "/evm/cosmwasm-precompiles/bank", "destination": "/evm/precompiles/cosmwasm-precompiles/bank", "permanent": true }, - { "source": "/evm/dappradar-guide", "destination": "/evm/analytics-setup", "permanent": true }, - { "source": "/evm/nft-contract-tutorial", "destination": "/evm/evm-general", "permanent": true }, - { "source": "/evm/ibc-protocol", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/evm/indexer-providers/alchemy", "destination": "/evm/indexer-providers/goldsky", "permanent": true }, - { "source": "/evm/lib/providers", "destination": "/learn/rpc-providers", "permanent": true }, - { "source": "/develop/:path*", "destination": "/evm", "permanent": true }, - { "source": "/develop/get-started/local-dependencies", "destination": "/evm/installing-seid-cli", "permanent": true }, - { "source": "/develop/media-package", "destination": "/learn/general-brand-kit", "permanent": true }, - { "source": "/develop/resources", "destination": "/learn", "permanent": true }, - { "source": "/develop/get-started/spot-exchange-tutorial", "destination": "/evm/evm-general", "permanent": true }, - { "source": "/full-node/:path*", "destination": "/node", "permanent": true }, - { "source": "/full-node/run-a-sei-validator/validator-faq", "destination": "/node/validators", "permanent": true }, - { "source": "/advanced/:path*", "destination": "/learn", "permanent": true }, - { "source": "/advanced/parallelism", "destination": "/learn/parallelization-engine", "permanent": true }, - { "source": "/advanced/governance", "destination": "/learn/general-governance", "permanent": true }, - { "source": "/advanced/native-oracle", "destination": "/learn/oracles", "permanent": true }, - { "source": "/advanced/ibc-transfers", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/swagger/:path*", "destination": "/node/swagger", "permanent": true }, - { "source": "/metrics", "destination": "/", "permanent": true }, - { "source": "/data", "destination": "/node", "permanent": true }, - { "source": "/config", "destination": "/node", "permanent": true }, - { "source": "/tmp", "destination": "/node", "permanent": true }, - { "source": "/block", "destination": "/node", "permanent": true }, - { "source": "/genesis.json", "destination": "/node", "permanent": true }, - { "source": "/.sei/:path*", "destination": "/node", "permanent": true }, - { "source": "/.sei_backup", "destination": "/node", "permanent": true }, - { "source": "/.sei_backup/:path*", "destination": "/node", "permanent": true }, - { "source": "/.hermes/:path*", "destination": "/node", "permanent": true }, - { "source": "/key_backup/:path*", "destination": "/node", "permanent": true }, - { "source": "/misc/:path*", "destination": "/node", "permanent": true }, - { "source": "/node/priv_validator_state.json.tmp", "destination": "/node", "permanent": true }, - { "source": "/node/oracle-price-feeder", "destination": "/learn/oracles", "permanent": true }, - { "source": "/node/oracle-pricefeeder", "destination": "/learn/oracles", "permanent": true }, - { "source": "/node/security-practices", "destination": "/node", "permanent": true }, - { "source": "/node/validator-faq", "destination": "/node/validators", "permanent": true }, - { "source": "/learn/mev", "destination": "/evm/best-practices/optimizing-for-parallelization", "permanent": true }, - { "source": "/learn/mev-plugins", "destination": "/evm/best-practices/optimizing-for-parallelization", "permanent": true }, - { "source": "/mev/:path*", "destination": "/evm/best-practices/optimizing-for-parallelization", "permanent": true }, - { "source": "/learn/about-sei", "destination": "/learn", "permanent": true }, - { "source": "/learn/bridging", "destination": "/evm/bridging/layerzero", "permanent": true }, - { "source": "/learn/differences-with-ethereum", "destination": "/evm/differences-with-ethereum", "permanent": true }, - { "source": "/learn/mcp-server", "destination": "/evm/ai-tooling/mcp-server", "permanent": true }, - { "source": "/learn/general-submit-feedback", "destination": "/learn", "permanent": true }, - { "source": "/learn/general-overview", "destination": "/learn", "permanent": true }, - { "source": "/learn/user-FAQ", "destination": "/learn/user-quickstart", "permanent": true }, - { "source": "/learn/wrapped-sei", "destination": "/evm/tokens", "permanent": true }, - { "source": "/learn/oracle-security", "destination": "/learn/oracles", "permanent": true }, - { "source": "/learn/wallet-setup", "destination": "/learn/wallets", "permanent": true }, - { "source": "/learn/linking-addresses", "destination": "/learn/accounts", "permanent": true }, - { "source": "/learn/getting-tokens", "destination": "/learn", "permanent": true }, - { "source": "/build-on-sei/evm", "destination": "/evm/evm-general", "permanent": true }, - { "source": "/subgraphs/:path*", "destination": "/evm/indexer-providers/the-graph", "permanent": true }, - { "source": "/whitepaper/:path*", "destination": "/learn", "permanent": true }, - { "source": "/general-overview", "destination": "/learn", "permanent": true }, - { "source": "/general-staking", "destination": "/learn/general-staking", "permanent": true }, - { "source": "/general-governance", "destination": "/learn/general-governance", "permanent": true }, - { "source": "/general-submit-feedback", "destination": "/learn", "permanent": true }, - { "source": "/general-brand-kit", "destination": "/learn/general-brand-kit", "permanent": true }, - { "source": "/user-quickstart", "destination": "/learn/user-quickstart", "permanent": true }, - { "source": "/user-FAQ", "destination": "/learn/user-quickstart", "permanent": true }, - { "source": "/user-guides/wallet-setup", "destination": "/learn/wallets", "permanent": true }, - { "source": "/user-guides/linking-addresses", "destination": "/learn/accounts", "permanent": true }, - { "source": "/user-guides/getting-tokens", "destination": "/learn", "permanent": true }, - { "source": "/user-guides/block-explorers", "destination": "/learn/explorers", "permanent": true }, - { "source": "/user-guides/bridging", "destination": "/evm/bridging/layerzero", "permanent": true }, - { "source": "/user-guides/wrapped-sei", "destination": "/evm/tokens", "permanent": true }, - { "source": "/user-guides/ledger-setup", "destination": "/learn/ledger-setup", "permanent": true }, - { "source": "/dev-intro", "destination": "/evm", "permanent": true }, - { "source": "/dev-chains", "destination": "/learn/dev-chains", "permanent": true }, - { "source": "/dev-token-standards", "destination": "/learn/dev-token-standards", "permanent": true }, - { "source": "/dev-gas", "destination": "/learn/dev-gas", "permanent": true }, - { "source": "/dev-transactions", "destination": "/evm/transactions", "permanent": true }, - { "source": "/dev-smart-contracts", "destination": "/evm/evm-general", "permanent": true }, - { "source": "/dev-querying-state", "destination": "/evm/querying-the-evm", "permanent": true }, - { "source": "/dev-interoperability", "destination": "/learn/dev-interoperability", "permanent": true }, - { "source": "/dev-interoperability/precompiles/:slug*", "destination": "/evm/precompiles/:slug*", "permanent": true }, - { "source": "/dev-interoperability/pointer-contracts", "destination": "/learn/pointers", "permanent": true }, - { "source": "/dev-frontend-dapps", "destination": "/evm/building-a-frontend", "permanent": true }, - { "source": "/dev-node/:path*", "destination": "/node", "permanent": true }, - { "source": "/dev-validators/:path*", "destination": "/node/validators", "permanent": true }, - { "source": "/dev-advanced-concepts/fee-grants", "destination": "/learn", "permanent": true }, - { "source": "/dev-advanced-concepts/account-structure", "destination": "/learn/accounts", "permanent": true }, - { "source": "/dev-advanced-concepts/wallet-association", "destination": "/learn/accounts", "permanent": true }, - { "source": "/dev-advanced-concepts/hardware-wallets", "destination": "/learn/hardware-wallets", "permanent": true }, - { "source": "/dev-advanced-concepts/oracles", "destination": "/learn/oracles", "permanent": true }, - { "source": "/dev-advanced-concepts/execute-multiple", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/dev-advanced-concepts/hd-path-coin-types", "destination": "/learn/accounts", "permanent": true }, - { "source": "/dev-advanced-concepts/proposals", "destination": "/learn/proposals", "permanent": true }, - { "source": "/dev-advanced-concepts/ibc-relayer", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/dev-advanced-concepts/differences-with-ethereum", "destination": "/evm/differences-with-ethereum", "permanent": true }, - { "source": "/dev-advanced-concepts-actions-and-blinks", "destination": "/evm/evm-general", "permanent": true }, - { "source": "/dev-tutorials/installing-seid", "destination": "/evm/installing-seid-cli", "permanent": true }, - { "source": "/dev-tutorials/building-a-frontend", "destination": "/evm/building-a-frontend", "permanent": true }, - { "source": "/dev-tutorials/cosmwasm-general", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/dev-tutorials/evm-general", "destination": "/evm/evm-general", "permanent": true }, - { "source": "/dev-tutorials/evm-cli-tutorial", "destination": "/evm/installing-seid-cli", "permanent": true }, - { "source": "/dev-tutorials/tokenfactory-tutorial", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/dev-tutorials/tokenfactory-allowlist", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/dev-tutorials/nft-contract-tutorial", "destination": "/evm/evm-hardhat", "permanent": true }, - { "source": "/dev-tutorials/pointer-contracts", "destination": "/learn/pointers", "permanent": true }, - { "source": "/dev-tutorials/multi-sig-accounts", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/dev-tutorials/ibc-protocol", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/dev-tutorials/ledger-ethers", "destination": "/evm/ledger-ethers", "permanent": true }, - { "source": "/dev-ecosystem-providers/wallets", "destination": "/learn/wallets", "permanent": true }, - { "source": "/dev-ecosystem-providers/explorers", "destination": "/learn/explorers", "permanent": true }, - { "source": "/dev-ecosystem-providers/rpc-providers", "destination": "/learn/rpc-providers", "permanent": true }, - { "source": "/dev-ecosystem-providers/indexers/indexers", "destination": "/learn/indexers", "permanent": true }, - { "source": "/dev-ecosystem-providers/indexers/the-graph", "destination": "/evm/indexer-providers/the-graph", "permanent": true }, - { "source": "/dev-ecosystem-providers/indexers/goldrush", "destination": "/evm/indexer-providers/goldrush", "permanent": true }, - { "source": "/dev-ecosystem-providers/centralized-exchanges", "destination": "/learn/wallets", "permanent": true }, - { "source": "/dev-ecosystem-providers/faucets", "destination": "/learn/faucet", "permanent": true }, - { "source": "/dev-ecosystem-providers/oracles/oracles", "destination": "/learn/oracles", "permanent": true }, - { "source": "/dev-ecosystem-providers/bridges", "destination": "/evm/bridging/layerzero", "permanent": true }, - { "source": "/dev-ecosystem-providers/nfts", "destination": "/evm/tokens", "permanent": true }, - { "source": "/providers/faucets", "destination": "/learn/faucet", "permanent": true }, - { "source": "/providers/wallets", "destination": "/learn/wallets", "permanent": true }, - { "source": "/providers/oracles", "destination": "/learn/oracles", "permanent": true }, - { "source": "/providers/bridges", "destination": "/evm/bridging/layerzero", "permanent": true }, - { "source": "/introduction/overview", "destination": "/learn", "permanent": true }, - { "source": "/introduction/dex-optimizations", "destination": "/learn/parallelization-engine", "permanent": true }, - { "source": "/front-end-development/react-tutorial", "destination": "/evm/building-a-frontend", "permanent": true }, - { "source": "/interoperability/overview", "destination": "/learn/dev-interoperability", "permanent": true }, - { "source": "/interoperability/pointer-contracts", "destination": "/learn/pointers", "permanent": true }, - { "source": "/interoperability/precompiles/cosmwasm", "destination": "/evm/precompiles/cosmwasm-precompiles/example-usage", "permanent": true }, - { "source": "/interoperability/precompiles/cosmwasm/:slug*", "destination": "/evm/precompiles/cosmwasm-precompiles/:slug*", "permanent": true }, - { "source": "/interoperability/precompiles/:slug*", "destination": "/evm/precompiles/:slug*", "permanent": true }, - { "source": "/nodes-and-validators/:path*", "destination": "/node", "permanent": true }, - { "source": "/oracle/oracle-participation", "destination": "/learn/oracles", "permanent": true }, - { "source": "/overview", "destination": "/", "permanent": true }, - { "source": "/quickstart/nft-contract-tutorial", "destination": "/evm/evm-foundry", "permanent": true }, - { "source": "/reference/cosmos", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/reference/precompiles/:slug*", "destination": "/evm/precompiles/:slug*", "permanent": true }, - { "source": "/reference/pointer-contracts", "destination": "/learn/pointers", "permanent": true }, - { "source": "/reference/seid", "destination": "/evm/installing-seid-cli", "permanent": true }, - { "source": "/reference/seid/:slug*", "destination": "/evm/installing-seid-cli", "permanent": true }, - { "source": "/running-validator/:slug*", "destination": "/node/validators", "permanent": true }, - { "source": "/running-sei-node/:slug*", "destination": "/node", "permanent": true }, - { "source": "/order-matching/:slug*", "destination": "/evm", "permanent": true }, - { "source": "/smart-contracts-and-local-development/set-up-a-local-network", "destination": "/node", "permanent": true }, - { "source": "/resources-resources", "destination": "/evm/solidity-resources", "permanent": true }, - { "source": "/resources-tools-and-resources", "destination": "/evm/solidity-resources", "permanent": true }, - { "source": "/tools/:path*", "destination": "/evm", "permanent": true }, - { "source": "/build", "destination": "/evm", "permanent": true }, - { "source": "/endpoints", "destination": "/evm", "permanent": true }, - { "source": "/endpoints/cosmos", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/endpoints/cosmos/api/:slug*", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/endpoints/evm", "destination": "/evm", "permanent": true }, - { "source": "/seid", "destination": "/evm/installing-seid-cli", "permanent": true }, - { "source": "/seid/:slug*", "destination": "/evm/installing-seid-cli", "permanent": true }, - { "source": "/governance", "destination": "/learn/general-governance", "permanent": true }, - { "source": "/interacting-with-sei", "destination": "/learn", "permanent": true }, - { "source": "/wallets/wallet-integration", "destination": "/learn/wallets", "permanent": true }, - { "source": "/cosmos-sdk/building-a-frontend", "destination": "/evm/building-a-frontend", "permanent": true }, - { "source": "/cosmos-sdk/cosm-wasm-general", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/cosmos-sdk/nft-contract-tutorial", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/cosmos-sdk/tokenfactory-allowlist", "destination": "/learn/dev-token-standards", "permanent": true }, - { "source": "/cosmos-sdk/querying-state", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/cosmos-sdk/multi-sig-accounts", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/cosmos-sdk/networks", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/cosmos-sdk/fee-grants", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/cosmos-sdk/execute-multiple", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/'", "destination": "/", "permanent": true }, - { "source": "/)", "destination": "/", "permanent": true }, - { "source": "/.bashrc", "destination": "/", "permanent": true }, - { "source": "/Jay", "destination": "/", "permanent": true }, - { "source": "/:os(Users|home|root|etc|var|usr|tmp|dev)/:rest*", "destination": "/node/troubleshooting", "permanent": true }, - { "source": "/sei-config-:rest(.*)", "destination": "/node", "permanent": true }, - { "source": "/sei-data-:rest(.*)", "destination": "/node", "permanent": true }, - { "source": "/sei-backup-:rest(.*)", "destination": "/node/troubleshooting", "permanent": true }, - { "source": "/priv_validator_:rest(.*)", "destination": "/node", "permanent": true }, - { "source": "/validator_key_", "destination": "/node", "permanent": true }, - { "source": "/cosmos.crypto.secp256k1.PubKey", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/cosmos.bank.v1beta1.MsgSend", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/cosmwasm.wasm.v1.MsgExecuteContract", "destination": "/cosmos-sdk", "permanent": true }, - { "source": "/dev-ecosystem-providers/ecosystem-map", "destination": "/learn", "permanent": true }, - { "source": "/learn/wrapped-sei@next.config.mjs", "destination": "/evm/tokens", "permanent": true }, - { "source": "/agents", "destination": "/llms/agents.md", "permanent": true }, - { "source": "/agents.md", "destination": "/llms/agents.md", "permanent": true }, - { "source": "/skill", "destination": "/skill.md", "permanent": true }, - { "source": "/llms/skill", "destination": "/skill.md", "permanent": true }, - { "source": "/llms/skill.md", "destination": "/skill.md", "permanent": true } + { + "source": "/evm/ai-tooling/mcp-server", + "destination": "/ai/mcp-server", + "permanent": true + }, + { + "source": "/evm/ai-tooling/cambrian-agent-kit", + "destination": "/ai/cambrian-agent-kit", + "permanent": true + }, + { + "source": "/evm/ai-tooling/agentic-wallets", + "destination": "/ai/agentic-wallets", + "permanent": true + }, + { + "source": "/cosmos/:path*", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/cosmwasm/:path*", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/seichain/:path*", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/sei-protocol/:path*", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/cosmos-sdk/api/:path*", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/evm/bridging", + "destination": "/evm/bridging/layerzero", + "permanent": true + }, + { + "source": "/evm/wallet-integrations", + "destination": "/evm/wallet-integrations/thirdweb", + "permanent": true + }, + { + "source": "/evm/indexer-providers", + "destination": "/evm/indexer-providers/the-graph", + "permanent": true + }, + { + "source": "/evm/ai-tooling", + "destination": "/ai/mcp-server", + "permanent": true + }, + { + "source": "/evm/agent-kits", + "destination": "/ai/cambrian-agent-kit", + "permanent": true + }, + { + "source": "/evm/agent-kits/cambrian-agent-kit", + "destination": "/ai/cambrian-agent-kit", + "permanent": true + }, + { + "source": "/evm/cosmwasm-precompiles", + "destination": "/evm/precompiles/cosmwasm-precompiles/example-usage", + "permanent": true + }, + { + "source": "/evm/cosmwasm-precompiles/:slug*", + "destination": "/evm/precompiles/cosmwasm-precompiles/:slug*", + "permanent": true + }, + { + "source": "/evm/bridging/tasks/:task*", + "destination": "/evm/bridging/layerzero", + "permanent": true + }, + { + "source": "/evm/debugging-with-seid", + "destination": "/evm/debugging-contracts", + "permanent": true + }, + { + "source": "/evm/evm-transactions", + "destination": "/evm/transactions", + "permanent": true + }, + { + "source": "/evm/pointers", + "destination": "/evm/reference", + "permanent": true + }, + { + "source": "/evm/pointers/:slug*", + "destination": "/evm/reference", + "permanent": true + }, + { + "source": "/evm/artifacts", + "destination": "/evm/debugging-contracts", + "permanent": true + }, + { + "source": "/evm/contracts", + "destination": "/evm/evm-general", + "permanent": true + }, + { + "source": "/evm/cache", + "destination": "/evm/evm-general", + "permanent": true + }, + { + "source": "/evm/test", + "destination": "/evm/debugging-contracts", + "permanent": true + }, + { + "source": "/evm/precompiles", + "destination": "/evm/precompiles/example-usage", + "permanent": true + }, + { + "source": "/evm/precompiles/cosmwasm-precompiles", + "destination": "/evm/precompiles/cosmwasm-precompiles/example-usage", + "permanent": true + }, + { + "source": "/evm/precompiles/cosmwasm-precompiles/pointer", + "destination": "/learn/pointers", + "permanent": true + }, + { + "source": "/evm/precompiles/cosmwasm-precompiles/ibc", + "destination": "/learn/sip-03-migration", + "permanent": true + }, + { + "source": "/evm/precompiles/artifacts/:path*", + "destination": "/evm/debugging-contracts", + "permanent": true + }, + { + "source": "/evm/MyContract.json", + "destination": "/evm/debugging-contracts", + "permanent": true + }, + { + "source": "/evm/best-practices", + "destination": "/evm/best-practices/optimizing-for-parallelization", + "permanent": true + }, + { + "source": "/evm/optimizing-for-parallelization", + "destination": "/evm/best-practices/optimizing-for-parallelization", + "permanent": true + }, + { + "source": "/evm/oracles", + "destination": "/evm/oracles/chainlink", + "permanent": true + }, + { + "source": "/evm/vrf", + "destination": "/evm/vrf/pyth-network-vrf", + "permanent": true + }, + { + "source": "/evm/precompiles/p256", + "destination": "/evm/precompiles/p256-precompile", + "permanent": true + }, + { + "source": "/evm/precompiles/P256", + "destination": "/evm/precompiles/p256-precompile", + "permanent": true + }, + { + "source": "/evm/installing-seid", + "destination": "/evm/installing-seid-cli", + "permanent": true + }, + { + "source": "/evm/ai-tooling/src/:rest*", + "destination": "/ai/mcp-server", + "permanent": true + }, + { + "source": "/evm/components/:rest*", + "destination": "/evm/building-a-frontend", + "permanent": true + }, + { + "source": "/evm/wagmi", + "destination": "/evm/building-a-frontend", + "permanent": true + }, + { + "source": "/evm/web3authContext", + "destination": "/evm/wallet-integrations/thirdweb", + "permanent": true + }, + { + "source": "/evm/App", + "destination": "/evm/building-a-frontend", + "permanent": true + }, + { + "source": "/evm/bridging/third-web", + "destination": "/evm/bridging/thirdweb", + "permanent": true + }, + { + "source": "/evm/debug-tracing", + "destination": "/evm/tracing", + "permanent": true + }, + { + "source": "/evm/cosmwasm-precompiles/bank", + "destination": "/evm/precompiles/cosmwasm-precompiles/bank", + "permanent": true + }, + { + "source": "/evm/dappradar-guide", + "destination": "/evm/analytics-setup", + "permanent": true + }, + { + "source": "/evm/nft-contract-tutorial", + "destination": "/evm/evm-general", + "permanent": true + }, + { + "source": "/evm/ibc-protocol", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/evm/indexer-providers/alchemy", + "destination": "/evm/indexer-providers/goldsky", + "permanent": true + }, + { + "source": "/evm/lib/providers", + "destination": "/learn/rpc-providers", + "permanent": true + }, + { + "source": "/develop/:path*", + "destination": "/evm", + "permanent": true + }, + { + "source": "/develop/get-started/local-dependencies", + "destination": "/evm/installing-seid-cli", + "permanent": true + }, + { + "source": "/develop/media-package", + "destination": "/learn/general-brand-kit", + "permanent": true + }, + { + "source": "/develop/resources", + "destination": "/learn", + "permanent": true + }, + { + "source": "/develop/get-started/spot-exchange-tutorial", + "destination": "/evm/evm-general", + "permanent": true + }, + { + "source": "/full-node/:path*", + "destination": "/node", + "permanent": true + }, + { + "source": "/full-node/run-a-sei-validator/validator-faq", + "destination": "/node/validators", + "permanent": true + }, + { + "source": "/advanced/:path*", + "destination": "/learn", + "permanent": true + }, + { + "source": "/advanced/parallelism", + "destination": "/learn/parallelization-engine", + "permanent": true + }, + { + "source": "/advanced/governance", + "destination": "/learn/general-governance", + "permanent": true + }, + { + "source": "/advanced/native-oracle", + "destination": "/learn/oracles", + "permanent": true + }, + { + "source": "/advanced/ibc-transfers", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/swagger/:path*", + "destination": "/node/swagger", + "permanent": true + }, + { + "source": "/metrics", + "destination": "/", + "permanent": true + }, + { + "source": "/data", + "destination": "/node", + "permanent": true + }, + { + "source": "/config", + "destination": "/node", + "permanent": true + }, + { + "source": "/tmp", + "destination": "/node", + "permanent": true + }, + { + "source": "/block", + "destination": "/node", + "permanent": true + }, + { + "source": "/genesis.json", + "destination": "/node", + "permanent": true + }, + { + "source": "/.sei/:path*", + "destination": "/node", + "permanent": true + }, + { + "source": "/.sei_backup", + "destination": "/node", + "permanent": true + }, + { + "source": "/.sei_backup/:path*", + "destination": "/node", + "permanent": true + }, + { + "source": "/.hermes/:path*", + "destination": "/node", + "permanent": true + }, + { + "source": "/key_backup/:path*", + "destination": "/node", + "permanent": true + }, + { + "source": "/misc/:path*", + "destination": "/node", + "permanent": true + }, + { + "source": "/node/priv_validator_state.json.tmp", + "destination": "/node", + "permanent": true + }, + { + "source": "/node/oracle-price-feeder", + "destination": "/learn/oracles", + "permanent": true + }, + { + "source": "/node/oracle-pricefeeder", + "destination": "/learn/oracles", + "permanent": true + }, + { + "source": "/node/security-practices", + "destination": "/node", + "permanent": true + }, + { + "source": "/node/validator-faq", + "destination": "/node/validators", + "permanent": true + }, + { + "source": "/learn/mev", + "destination": "/evm/best-practices/optimizing-for-parallelization", + "permanent": true + }, + { + "source": "/learn/mev-plugins", + "destination": "/evm/best-practices/optimizing-for-parallelization", + "permanent": true + }, + { + "source": "/mev/:path*", + "destination": "/evm/best-practices/optimizing-for-parallelization", + "permanent": true + }, + { + "source": "/learn/about-sei", + "destination": "/learn", + "permanent": true + }, + { + "source": "/learn/bridging", + "destination": "/evm/bridging/layerzero", + "permanent": true + }, + { + "source": "/learn/differences-with-ethereum", + "destination": "/evm/differences-with-ethereum", + "permanent": true + }, + { + "source": "/learn/mcp-server", + "destination": "/ai/mcp-server", + "permanent": true + }, + { + "source": "/learn/general-submit-feedback", + "destination": "/learn", + "permanent": true + }, + { + "source": "/learn/general-overview", + "destination": "/learn", + "permanent": true + }, + { + "source": "/learn/user-FAQ", + "destination": "/learn/user-quickstart", + "permanent": true + }, + { + "source": "/learn/wrapped-sei", + "destination": "/evm/tokens", + "permanent": true + }, + { + "source": "/learn/oracle-security", + "destination": "/learn/oracles", + "permanent": true + }, + { + "source": "/learn/wallet-setup", + "destination": "/learn/wallets", + "permanent": true + }, + { + "source": "/learn/linking-addresses", + "destination": "/learn/accounts", + "permanent": true + }, + { + "source": "/learn/getting-tokens", + "destination": "/learn", + "permanent": true + }, + { + "source": "/build-on-sei/evm", + "destination": "/evm/evm-general", + "permanent": true + }, + { + "source": "/subgraphs/:path*", + "destination": "/evm/indexer-providers/the-graph", + "permanent": true + }, + { + "source": "/whitepaper/:path*", + "destination": "/learn", + "permanent": true + }, + { + "source": "/general-overview", + "destination": "/learn", + "permanent": true + }, + { + "source": "/general-staking", + "destination": "/learn/general-staking", + "permanent": true + }, + { + "source": "/general-governance", + "destination": "/learn/general-governance", + "permanent": true + }, + { + "source": "/general-submit-feedback", + "destination": "/learn", + "permanent": true + }, + { + "source": "/general-brand-kit", + "destination": "/learn/general-brand-kit", + "permanent": true + }, + { + "source": "/user-quickstart", + "destination": "/learn/user-quickstart", + "permanent": true + }, + { + "source": "/user-FAQ", + "destination": "/learn/user-quickstart", + "permanent": true + }, + { + "source": "/user-guides/wallet-setup", + "destination": "/learn/wallets", + "permanent": true + }, + { + "source": "/user-guides/linking-addresses", + "destination": "/learn/accounts", + "permanent": true + }, + { + "source": "/user-guides/getting-tokens", + "destination": "/learn", + "permanent": true + }, + { + "source": "/user-guides/block-explorers", + "destination": "/learn/explorers", + "permanent": true + }, + { + "source": "/user-guides/bridging", + "destination": "/evm/bridging/layerzero", + "permanent": true + }, + { + "source": "/user-guides/wrapped-sei", + "destination": "/evm/tokens", + "permanent": true + }, + { + "source": "/user-guides/ledger-setup", + "destination": "/learn/ledger-setup", + "permanent": true + }, + { + "source": "/dev-intro", + "destination": "/evm", + "permanent": true + }, + { + "source": "/dev-chains", + "destination": "/learn/dev-chains", + "permanent": true + }, + { + "source": "/dev-token-standards", + "destination": "/learn/dev-token-standards", + "permanent": true + }, + { + "source": "/dev-gas", + "destination": "/learn/dev-gas", + "permanent": true + }, + { + "source": "/dev-transactions", + "destination": "/evm/transactions", + "permanent": true + }, + { + "source": "/dev-smart-contracts", + "destination": "/evm/evm-general", + "permanent": true + }, + { + "source": "/dev-querying-state", + "destination": "/evm/querying-the-evm", + "permanent": true + }, + { + "source": "/dev-interoperability", + "destination": "/learn/dev-interoperability", + "permanent": true + }, + { + "source": "/dev-interoperability/precompiles/:slug*", + "destination": "/evm/precompiles/:slug*", + "permanent": true + }, + { + "source": "/dev-interoperability/pointer-contracts", + "destination": "/learn/pointers", + "permanent": true + }, + { + "source": "/dev-frontend-dapps", + "destination": "/evm/building-a-frontend", + "permanent": true + }, + { + "source": "/dev-node/:path*", + "destination": "/node", + "permanent": true + }, + { + "source": "/dev-validators/:path*", + "destination": "/node/validators", + "permanent": true + }, + { + "source": "/dev-advanced-concepts/fee-grants", + "destination": "/learn", + "permanent": true + }, + { + "source": "/dev-advanced-concepts/account-structure", + "destination": "/learn/accounts", + "permanent": true + }, + { + "source": "/dev-advanced-concepts/wallet-association", + "destination": "/learn/accounts", + "permanent": true + }, + { + "source": "/dev-advanced-concepts/hardware-wallets", + "destination": "/learn/hardware-wallets", + "permanent": true + }, + { + "source": "/dev-advanced-concepts/oracles", + "destination": "/learn/oracles", + "permanent": true + }, + { + "source": "/dev-advanced-concepts/execute-multiple", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/dev-advanced-concepts/hd-path-coin-types", + "destination": "/learn/accounts", + "permanent": true + }, + { + "source": "/dev-advanced-concepts/proposals", + "destination": "/learn/proposals", + "permanent": true + }, + { + "source": "/dev-advanced-concepts/ibc-relayer", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/dev-advanced-concepts/differences-with-ethereum", + "destination": "/evm/differences-with-ethereum", + "permanent": true + }, + { + "source": "/dev-advanced-concepts-actions-and-blinks", + "destination": "/evm/evm-general", + "permanent": true + }, + { + "source": "/dev-tutorials/installing-seid", + "destination": "/evm/installing-seid-cli", + "permanent": true + }, + { + "source": "/dev-tutorials/building-a-frontend", + "destination": "/evm/building-a-frontend", + "permanent": true + }, + { + "source": "/dev-tutorials/cosmwasm-general", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/dev-tutorials/evm-general", + "destination": "/evm/evm-general", + "permanent": true + }, + { + "source": "/dev-tutorials/evm-cli-tutorial", + "destination": "/evm/installing-seid-cli", + "permanent": true + }, + { + "source": "/dev-tutorials/tokenfactory-tutorial", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/dev-tutorials/tokenfactory-allowlist", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/dev-tutorials/nft-contract-tutorial", + "destination": "/evm/evm-hardhat", + "permanent": true + }, + { + "source": "/dev-tutorials/pointer-contracts", + "destination": "/learn/pointers", + "permanent": true + }, + { + "source": "/dev-tutorials/multi-sig-accounts", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/dev-tutorials/ibc-protocol", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/dev-tutorials/ledger-ethers", + "destination": "/evm/ledger-ethers", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/wallets", + "destination": "/learn/wallets", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/explorers", + "destination": "/learn/explorers", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/rpc-providers", + "destination": "/learn/rpc-providers", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/indexers/indexers", + "destination": "/learn/indexers", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/indexers/the-graph", + "destination": "/evm/indexer-providers/the-graph", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/indexers/goldrush", + "destination": "/evm/indexer-providers/goldrush", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/centralized-exchanges", + "destination": "/learn/wallets", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/faucets", + "destination": "/learn/faucet", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/oracles/oracles", + "destination": "/learn/oracles", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/bridges", + "destination": "/evm/bridging/layerzero", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/nfts", + "destination": "/evm/tokens", + "permanent": true + }, + { + "source": "/providers/faucets", + "destination": "/learn/faucet", + "permanent": true + }, + { + "source": "/providers/wallets", + "destination": "/learn/wallets", + "permanent": true + }, + { + "source": "/providers/oracles", + "destination": "/learn/oracles", + "permanent": true + }, + { + "source": "/providers/bridges", + "destination": "/evm/bridging/layerzero", + "permanent": true + }, + { + "source": "/introduction/overview", + "destination": "/learn", + "permanent": true + }, + { + "source": "/introduction/dex-optimizations", + "destination": "/learn/parallelization-engine", + "permanent": true + }, + { + "source": "/front-end-development/react-tutorial", + "destination": "/evm/building-a-frontend", + "permanent": true + }, + { + "source": "/interoperability/overview", + "destination": "/learn/dev-interoperability", + "permanent": true + }, + { + "source": "/interoperability/pointer-contracts", + "destination": "/learn/pointers", + "permanent": true + }, + { + "source": "/interoperability/precompiles/cosmwasm", + "destination": "/evm/precompiles/cosmwasm-precompiles/example-usage", + "permanent": true + }, + { + "source": "/interoperability/precompiles/cosmwasm/:slug*", + "destination": "/evm/precompiles/cosmwasm-precompiles/:slug*", + "permanent": true + }, + { + "source": "/interoperability/precompiles/:slug*", + "destination": "/evm/precompiles/:slug*", + "permanent": true + }, + { + "source": "/nodes-and-validators/:path*", + "destination": "/node", + "permanent": true + }, + { + "source": "/oracle/oracle-participation", + "destination": "/learn/oracles", + "permanent": true + }, + { + "source": "/overview", + "destination": "/", + "permanent": true + }, + { + "source": "/quickstart/nft-contract-tutorial", + "destination": "/evm/evm-foundry", + "permanent": true + }, + { + "source": "/reference/cosmos", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/reference/precompiles/:slug*", + "destination": "/evm/precompiles/:slug*", + "permanent": true + }, + { + "source": "/reference/pointer-contracts", + "destination": "/learn/pointers", + "permanent": true + }, + { + "source": "/reference/seid", + "destination": "/evm/installing-seid-cli", + "permanent": true + }, + { + "source": "/reference/seid/:slug*", + "destination": "/evm/installing-seid-cli", + "permanent": true + }, + { + "source": "/running-validator/:slug*", + "destination": "/node/validators", + "permanent": true + }, + { + "source": "/running-sei-node/:slug*", + "destination": "/node", + "permanent": true + }, + { + "source": "/order-matching/:slug*", + "destination": "/evm", + "permanent": true + }, + { + "source": "/smart-contracts-and-local-development/set-up-a-local-network", + "destination": "/node", + "permanent": true + }, + { + "source": "/resources-resources", + "destination": "/evm/solidity-resources", + "permanent": true + }, + { + "source": "/resources-tools-and-resources", + "destination": "/evm/solidity-resources", + "permanent": true + }, + { + "source": "/tools/:path*", + "destination": "/evm", + "permanent": true + }, + { + "source": "/build", + "destination": "/evm", + "permanent": true + }, + { + "source": "/endpoints", + "destination": "/evm", + "permanent": true + }, + { + "source": "/endpoints/cosmos", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/endpoints/cosmos/api/:slug*", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/endpoints/evm", + "destination": "/evm", + "permanent": true + }, + { + "source": "/seid", + "destination": "/evm/installing-seid-cli", + "permanent": true + }, + { + "source": "/seid/:slug*", + "destination": "/evm/installing-seid-cli", + "permanent": true + }, + { + "source": "/governance", + "destination": "/learn/general-governance", + "permanent": true + }, + { + "source": "/interacting-with-sei", + "destination": "/learn", + "permanent": true + }, + { + "source": "/wallets/wallet-integration", + "destination": "/learn/wallets", + "permanent": true + }, + { + "source": "/cosmos-sdk/building-a-frontend", + "destination": "/evm/building-a-frontend", + "permanent": true + }, + { + "source": "/cosmos-sdk/cosm-wasm-general", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/cosmos-sdk/nft-contract-tutorial", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/cosmos-sdk/tokenfactory-allowlist", + "destination": "/learn/dev-token-standards", + "permanent": true + }, + { + "source": "/cosmos-sdk/querying-state", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/cosmos-sdk/multi-sig-accounts", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/cosmos-sdk/networks", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/cosmos-sdk/fee-grants", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/cosmos-sdk/execute-multiple", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/'", + "destination": "/", + "permanent": true + }, + { + "source": "/)", + "destination": "/", + "permanent": true + }, + { + "source": "/.bashrc", + "destination": "/", + "permanent": true + }, + { + "source": "/Jay", + "destination": "/", + "permanent": true + }, + { + "source": "/:os(Users|home|root|etc|var|usr|tmp|dev)/:rest*", + "destination": "/node/troubleshooting", + "permanent": true + }, + { + "source": "/sei-config-:rest(.*)", + "destination": "/node", + "permanent": true + }, + { + "source": "/sei-data-:rest(.*)", + "destination": "/node", + "permanent": true + }, + { + "source": "/sei-backup-:rest(.*)", + "destination": "/node/troubleshooting", + "permanent": true + }, + { + "source": "/priv_validator_:rest(.*)", + "destination": "/node", + "permanent": true + }, + { + "source": "/validator_key_", + "destination": "/node", + "permanent": true + }, + { + "source": "/cosmos.crypto.secp256k1.PubKey", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/cosmos.bank.v1beta1.MsgSend", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/cosmwasm.wasm.v1.MsgExecuteContract", + "destination": "/cosmos-sdk", + "permanent": true + }, + { + "source": "/dev-ecosystem-providers/ecosystem-map", + "destination": "/learn", + "permanent": true + }, + { + "source": "/learn/wrapped-sei@next.config.mjs", + "destination": "/evm/tokens", + "permanent": true + }, + { + "source": "/agents", + "destination": "/llms/agents.md", + "permanent": true + }, + { + "source": "/agents.md", + "destination": "/llms/agents.md", + "permanent": true + }, + { + "source": "/skill", + "destination": "/skill.md", + "permanent": true + }, + { + "source": "/llms/skill", + "destination": "/skill.md", + "permanent": true + }, + { + "source": "/llms/skill.md", + "destination": "/skill.md", + "permanent": true + } ], "interaction": { "drilldown": false @@ -642,4 +1627,4 @@ "content": "**Action required: IBC assets on Sei will become inaccessible** If you hold [USDC.n](https://seiscan.io/address/0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1) (USDC via Noble), [USDT.kava](https://seiscan.io/address/0xb75d0b03c06a926e488e2659df1a861f860bd3d1) (Kava USDT), Wormhole-bridged tokens, or any other IBC asset on Sei, you **must** swap, migrate, or bridge out **before the governance proposal to disable inbound/outbound IBC transfers passes and is activated** to avoid permanent loss of access. After this, Sei will no longer support IBC bridging of assets from Cosmos-based chains to and from Sei Network. Consult the [SIP-03 Migration Guide](/learn/sip-03-migration) for the full list of affected assets, required actions, and supported routes. For USDC.n specifically, see: [Holders of USDC.n Need to Swap or Migrate](https://blog.sei.io/announcements/holders-of-usdcn-need-to-swap-or-migrate/).", "dismissible": true } -} +} \ No newline at end of file diff --git a/index.mdx b/index.mdx index 3b6b74e..06f7e36 100644 --- a/index.mdx +++ b/index.mdx @@ -62,8 +62,8 @@ The first parallelized EVM blockchain delivering unmatched scalability and speed Onboard users from any chain with a single wallet. - - Deploy AI agents that execute smart contract actions. + + sei-skill, MCP Server, and agent frameworks for AI-powered development on Sei. View and manage SEI and ERC-20/721 in wallets.