Risk enforcement, coaching, and behavioral analytics for AI trading agents on Solana.
Daily loss limits, trade caps, cooldowns, and lockouts — on-chain + wallet-level.
Position sizing, confidence calibration, market recommendations. Auto-reduces size when tilting.
Hallucination rate, overconfidence index, tilt detection, revenge trading, and machine-readable directives.
Trust scores (0–100) and risk grades (A–F) from on-chain data. Verify any agent.
Calibrate your vault to activate on-chain risk enforcement.
const status = await callTool("beneat_get_status", {
wallet_address: "YOUR_WALLET",
});
// → { vault_exists: false, can_trade: true, ... }No vault yet — the agent is in advisory mode.
const cal = await callTool("beneat_calibrate", {
wallet_address: "YOUR_WALLET",
deposit_amount: 5,
strategy_type: "day_trading",
risk_tolerance: "medium",
});
// → { calibration: { tier: 1 }, parameters: { daily_loss_limit_sol: 0.15 }, unsigned_transactions: [...] }Returns Tier 1 parameters: 0.15 SOL daily loss limit, 20 trades/day, 120s cooldown, 12h lockout.
for (const tx of cal.unsigned_transactions) {
// tx.transaction is a base64 VersionedTransaction
// tx.description: "Initialize vault", "Set rules", etc.
const decoded = VersionedTransaction.deserialize(
Buffer.from(tx.transaction, "base64")
);
decoded.sign([walletKeypair]);
await connection.sendTransaction(decoded);
}The MCP server never touches private keys.
const status = await callTool("beneat_get_status", {
wallet_address: "YOUR_WALLET",
});
// → { vault_exists: true, can_trade: true, daily_loss_limit_sol: 0.15 }3 tool calls per trade cycle:
const check = await callTool("beneat_check_trade", {
wallet_address: "YOUR_WALLET",
market: "SOL-PERP",
size: 0.1,
direction: "long",
});
if (!check.approved) {
console.log("Trade denied:", check.reasons);
return;
}Use your existing trading logic — Jupiter swap, Drift perp, Raydium, whatever. Beneat is protocol-agnostic.
const result = await callTool("beneat_record_trade", {
wallet_address: "YOUR_WALLET",
pnl: -0.02, // SOL — negative = loss
market: "SOL-PERP",
confidence: 0.75, // optional (0-1)
});
if (result.lockout_triggered) {
console.log("LOCKOUT:", result.lockout_reason);
// Stop all trading — wallet is frozen if AgentWallet is configured
}Start minimal, upgrade as needed.
3 calls. Risk enforcement only.
beneat_check_trade → approved? → execute trade → beneat_record_trade → lockout?| Strategy | Max Trades/Day | Cooldown | Best For |
|---|---|---|---|
| scalping | 50 | 30s | High-frequency micro-trades |
| day_trading | 20 | 120s | Intraday positions |
| swing_trading | 5 | 600s | Multi-hour/multi-day positions |
| conservative | 3 | 1800s | Capital preservation focus |
| Level | Daily Loss % | Lockout Duration | Best For |
|---|---|---|---|
| low | 1% | 24 hours | New agents, capital preservation |
| medium | 3% | 12 hours | Balanced risk/reward |
| high | 5% | 6 hours | Experienced agents with edge |
| degen | 10% | 2 hours | High-conviction strategies |
Loss % is relative to deposit. Example: medium + 5 SOL = 0.15 SOL/day limit.
| Tier | Trade Count | Method | What It Does |
|---|---|---|---|
| Tier 1 | 0–4 trades | Capital-based | Derives rules from deposit amount, strategy type, and risk tolerance |
| Tier 2 | 5–19 trades | Behavioral | Adjusts based on win rate, loss streak frequency, and revenge trading ratio |
| Tier 3 | 20+ trades | Quantitative | VaR at 95%, Sharpe ratio, Kelly fraction, profit factor, max drawdown |
Agent state is classified in priority order (top wins):
| State | Trigger | Size Multiplier | Description |
|---|---|---|---|
| post_lockout_recovery | Recently unlocked from lockout | 0.33x | Most conservative — rebuild confidence first |
| tilt | 3+ consecutive losses in session | 0.25x | Aggressive reduction — agent reasoning degraded |
| post_loss | Last trade was a loss within 5 min | 0.5x | Reduce exposure after recent loss |
| hot_streak | 3+ consecutive wins in session | 0.8x | Slight reduction — prevents overconfidence |
| normal | Default | 1.0x | Standard operating conditions |
post_lockout_recovery (0.33x), not tilt (0.25x).Full coaching session lifecycle:
Beneat evaluates agent state (recovery, tilt, normal) and returns mode, trade limits, and focus markets.
Returns approval + coaching context: mode, suggested size, markets to avoid.
Agent reports confidence (0–1). Beneat compares to historical accuracy and adjusts position size accordingly.
Log P&L and confidence. Feeds back into calibration.
Losing markets get restricted. Position sizing adjusts based on real performance. Behavioral rules accumulate.
On limit breach: automatic lockout + wallet freeze. On expiry: recovery mode (0.33x size) until trust rebuilds.