Agents behind Proctor
- dca-botSpent 75.00 of 100 USDC todayActive
- tool-payerSpent 1.20 of 5 USDC todayActive
- sniper-liteSpent 0.50 of 1 SOL todayWatching
It checks what a transaction actually does to the wallet, not just which program it calls. It sits in front of any agent framework and never holds keys.
| Time | Agent | Attempt | Simulated diff | Verdict |
|---|---|---|---|---|
| 09:42:11 | dca-bot | Swap USDC to SOL via Jupiter | -25.00 USDC, +0.16 SOL | Forwarded |
| 09:47:03 | tool-payer | Pay tool invoice | -0.40 USDC | Forwarded |
| 10:03:48 | dca-bot | Swap USDC to SOL via Jupiter | -25.00 USDC, +0.00 SOL | Blocked: no SOL received |
| 10:11:20 | sniper-lite | Buy SPL token on a DEX | -0.80 SOL, +41,000 BONKLET | Blocked: SOL spend over 0.50 cap |
| 10:26:55 | tool-payer | Token transfer | -0.40 USDC, new delegate set | Blocked: delegate change |
| 10:31:09 | dca-bot | Swap USDC to SOL via Jupiter | -25.00 USDC, +0.16 SOL | Forwarded |
Hourly send attempts across all agents, last 14 hours
Built for developers and teams running agents that hold funds, and users who give an agent a small wallet to trade or pay for tools.
Hourly send attempts across all agents, last 14 hours
Point sendTransaction at your Proctor endpoint. Proctor simulates the transaction, checks it, then forwards it to the cluster or returns a JSON-RPC error with the reason. Keys stay with the agent. Proctor never sees them.
Plannedimport { Connection } from "@solana/web3.js";
// before
// const conn = new Connection("https://api.mainnet-beta.solana.com");
// after: same agent code, guarded sends
const conn = new Connection(
"https://rpc.proctor.example/v1/dca-bot?key=pk_live_4f9a"
);
const sig = await conn.sendRawTransaction(tx.serialize());Before sending, the agent posts a small JSON intent: max spend per token, which tokens it may receive, a slippage cap and an expiry. Proctor holds every transaction to that statement.
Planned{
"agent": "dca-bot",
"maxSpend": { "USDC": "25.00" },
"allowedReceive": ["So11111111111111111111111111111111111111112"],
"slippageBps": 50,
"expiresAt": "2025-06-12T11:00:00Z"
}A swap through an allowed program can still drain a wallet. Proctor compares the simulated balance changes with the intent and applies the program allowlist and authority rules.
Planned| Check | Intent | Simulated | Result |
|---|---|---|---|
| USDC spend | max 25.00 | -25.00 | Pass |
| SOL received | at least 0.15 | +0.00 | Fail |
| Programs | Jupiter, Token | Jupiter, Token | Pass |
| SetAuthority | none allowed | none | Pass |
| Delegate | none allowed | none | Pass |
| Expiry | 11:00 UTC | 10:03 UTC | Pass |
Connect Phantom, Solflare or Backpack and sign the policy. Set a daily cap per agent and flip the kill switch to reject every send at once. Agents cannot loosen what the owner has set.
PlannedEach send is stored with the simulated balance changes and the verdict. Use it to debug an agent that keeps failing, or to see where a prompt injection tried to redirect funds.
PlannedIt checks what a transaction actually does to the wallet, not just which program it calls. It sits in front of any agent framework and never holds keys.
Every screen reads from the same model. Live parts read public onchain data; nothing ever asks your wallet to sign.
Read the docs{
"product": "Proctor",
"network": "solana",
"features": [
{
"name": "Drop-in RPC endpoint: the agent points sendTrans",
"status": "planned"
},
{
"name": "Intent declaration as JSON with max spend per to",
"status": "planned"
},
{
"name": "Balance-diff check on simulation results, plus a",
"status": "planned"
},
{
"name": "Owner policy set from your wallet: daily caps pe",
"status": "planned"
}
]
}Live features work today. Planned ones are next on the roadmap, in this order.
Short answers. The docs have the rest.
A send-transaction guard for AI agents: it simulates each transaction and blocks it if the balance changes don't match what the agent said. It checks what a transaction actually does to the wallet, not just which program it calls. It sits in front of any agent framework and never holds keys.
Proctor is in development. Every feature is on the status list with what ships next, and the app opens in a sample workspace so you can see how it will work.
No. You can explore without one. Connecting a Solana wallet only shares your public address so Proctor can read your balances; it never asks you to sign a transaction.
Developers and teams running agents that hold funds, and users who give an agent a small wallet to trade or pay for tools.
A send-transaction guard for AI agents: it simulates each transaction and blocks it if the balance changes don't match what the agent said.