accessKey.
The default Agent Kit mode is
server (managed Abstraxn wallet). This page covers external only. For Abstraxn server wallet / server-signer flows see SDK quickstart.When to use external wallet
| Use external when… | Use server wallet when… |
|---|---|
| Users bring their own wallet (browser extension, mobile, embedded) | You want Abstraxn-managed signing |
| You already have custody / signing infra | You need accessKey + Abstraxn server wallet flows |
| You must not store Abstraxn wallet secrets | MCP tools sign via server-signer (transfer, x402) |
Prerequisites
- Node.js 18+
@abstraxn/agent-kitv1.0.3+- Abstraxn API key (
x-api-key) - A wallet stack in your app that can expose
evmAddress/solanaAddress(and sign txs if you register ERC-8004 identity)
Wallet connection in your app (optional)
Agent Kit only needs the address strings atcreateAgent() time. How users connect a wallet is entirely up to you — pick any provider below, read their guide, then pass the connected address into Agent Kit.
| Provider / stack | Use for | Docs |
|---|---|---|
| Privy | Embedded + external wallets, auth | Privy docs |
| MetaMask | Browser extension (EVM) | Connect with MetaMask |
| WalletConnect | Mobile & multi-wallet (EVM) | WalletConnect docs |
| viem | Headless EVM signing (backend or frontend) | viem docs |
| ethers | EVM signing (v6) | ethers docs |
| Abstraxn Wallets (React) | MetaMask / WalletConnect in a React app | External wallet hooks |
These links are optional. Abstraxn does not require a specific provider. After the user connects, call
createAgent({ evmAddress, … }) (or solanaAddress). For ERC-8004, use the same wallet to sign — see On-chain identity.Configure the client
getWalletMode() returns 'external' when configured.
You can also keep wallet: 'server' on the client and pass wallet: 'external' on a single createAgent() call.
Create an agent
Response shape
| Field | External wallet |
|---|---|
wallet.type | 'external' |
wallet.evmAddress | Your normalized EVM address |
wallet.solanaAddress | Optional |
wallet.accessKey | Not set |
wallet.organizationId | Not set |
accessKey for external agents. All on-chain signing is your responsibility.
Validation rules
- At least one of
evmAddressorsolanaAddressis required. - EVM addresses are normalized to
0x+ 40 hex characters (lowercase). createAgentDirect()is equivalent: creates the agent with addresses only (no server-signer).
Per-call override
What external wallet does not do
- Does not call Abstraxn server-signer or managed wallet provisioning
- Does not return
accessKeyororganizationId getServerSigner()is for server wallet integrations onlyregisterAgentIdentity()requires server wallet credentials — use on-chain identity (external) instead- MCP
transferand autonomous x402 signing require a server walletaccessKeyon your backend
FAQ
Can I use MetaMask instead of a private key insignTransaction?
Yes. See On-chain identity (external) for prepare/confirm with MetaMask or WalletConnect.
Can I register with Solana only?
Yes — pass solanaAddress on createAgent (with or without evmAddress). ERC-8004 registry examples in the SDK are EVM-focused; confirm Solana registry support with your Abstraxn deployment if needed.
Why does prepare fail for my chainId?
The Agent Kit backend must have IdentityRegistry configured for that chainId. Use a supported chain or contact support.
Next steps
On-chain identity
Register ERC-8004 with your own signer.
API reference
Client config, methods, and types.
SDK quickstart (server wallet)
Default managed wallet + accessKey flow.
ERC-8004 identity
Supported chainIds and registry addresses.