Stabletrust enables AI agents to transact privately on EVM chains — shield tokens, transfer confidentially, withdraw silently. Balances are encrypted on-chain. No one can see what your agent holds or where it sends.
Built for the private agent economy.
No SDK. No setup. Just POST.
// Shield tokens into a confidential account
await fetch("https://stabletrust-api.fairblock.network/deposit", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
privateKey: process.env.AGENT_KEY,
tokenAddress: "0x036CbD53842c5426634e7929541eC2318f3dCF7e", // USDC
amount: "10000000", // 10 USDC
chainId: 84532, // Base Sepolia
}),
});That's it. Your agent now has a private balance no one can read.
EOA → [deposit] → Confidential Account → [transfer] → Recipient
→ [withdraw] → EOA
- Deposit — shield ERC-20 tokens. Balance becomes encrypted on-chain.
- Transfer — send privately to any address. Amount is invisible on-chain.
- Withdraw — unshield back to public ERC-20 at any time.
- Balance — your agent can always check its own decrypted balance.
const res = await fetch("https://stabletrust-api.fairblock.network/deposit", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
privateKey: process.env.AGENT_KEY,
tokenAddress: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
amount: "10000000",
chainId: 84532,
}),
});
const { receipt } = await res.json();
// { hash: '0x...' }const res = await fetch("https://stabletrust-api.fairblock.network/balance", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
privateKey: process.env.AGENT_KEY,
tokenAddress: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
chainId: 84532,
}),
});
const { balance } = await res.json();
// { total: '10000000', available: '10000000', pending: '0' }const res = await fetch("https://stabletrust-api.fairblock.network/transfer", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
privateKey: process.env.AGENT_KEY,
recipientAddress: "0x...recipient",
tokenAddress: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
amount: "5000000", // 5 USDC
chainId: 84532,
}),
});
const { receipt } = await res.json();
// { hash: '0x...' }const res = await fetch("https://stabletrust-api.fairblock.network/withdraw", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
privateKey: process.env.AGENT_KEY,
tokenAddress: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
amount: "5000000",
chainId: 84532,
}),
});
const { receipt } = await res.json();
// { hash: '0x...' }/deposit
| Field | Type | Required | Description |
|---|---|---|---|
privateKey |
string | yes | Agent wallet private key |
tokenAddress |
string | yes | ERC-20 token contract address |
amount |
string | yes | Amount in token base units |
chainId |
number | yes | Target network chain ID |
waitForFinalization |
boolean | no | Wait for tx finality (default: true) |
/balance
| Field | Type | Required | Description |
|---|---|---|---|
privateKey |
string | yes | Agent wallet private key (used for decryption) |
tokenAddress |
string | yes | ERC-20 token contract address |
chainId |
number | yes | Target network chain ID |
address |
string | no | Address to query — defaults to wallet from privateKey |
/transfer
| Field | Type | Required | Description |
|---|---|---|---|
privateKey |
string | yes | Agent wallet private key |
recipientAddress |
string | yes | Recipient Ethereum address |
tokenAddress |
string | yes | ERC-20 token contract address |
amount |
string | yes | Amount in token base units |
chainId |
number | yes | Target network chain ID |
useOffchainVerify |
boolean | no | Off-chain proof verification (default: false) |
waitForFinalization |
boolean | no | Wait for tx finality (default: true) |
/withdraw
| Field | Type | Required | Description |
|---|---|---|---|
privateKey |
string | yes | Agent wallet private key |
tokenAddress |
string | yes | ERC-20 token contract address |
amount |
string | yes | Amount in token base units |
chainId |
number | yes | Target network chain ID |
useOffchainVerify |
boolean | no | Off-chain proof verification (default: false) |
waitForFinalization |
boolean | no | Wait for tx finality (default: true) |
| Chain | ID |
|---|---|
| Base | 8453 |
| Base Sepolia | 84532 |
| Ethereum Sepolia | 11155111 |
| Arbitrum Sepolia | 421614 |
| Arc | 5042002 |
| Stable | 2201 |
| Tempo | 42431 |