Skip to content
View verifyproceed's full-sized avatar
  • Joined Jul 24, 2026

Block or report verifyproceed

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
verifyproceed/README.md

VerifyProceed — Guard API

Pre-execution safety checks for AI DeFi agents. Binary verdict in under 300ms.

LiveBase MainnetSolanax402PythonACP


The problem

Every major AI agent framework — LangChain, ElizaOS, Coinbase AgentKit — lets agents execute on-chain with zero pre-execution safety checks.

A bridge exploit goes live. The agent keeps bridging. A stablecoin depegs. The agent keeps swapping. An RPC returns corrupted data. The agent acts on it.

$2.8B+ was lost to DeFi exploits in 2024. The data existed. Nobody was checking it.


The solution

One API call before any on-chain action. Binary answer. Under 300ms.

curl -X POST https://decision-verification-agent.onrender.com/v1/acp/guard \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"bridge","chain":"base","amount_usd":50000}'
{
"verdict": "proceed",
"confidence": 0.95,
"risk": "low",
"expires_in": 300,
"decision": {
"action": "execute",
"reason": "All safety checks passed."
},
"evidence": [...],
"failure_modes": []
}

If verdict is block — the agent stops. No human needed. No post-mortem needed.


Live on Virtuals ACP as a neutral Evaluator

VerifyProceed also runs as a third-party Evaluator agent on Virtuals Protocol's Agent Commerce Protocol — the neutral referee that approves or rejects other agents' escrowed job deliverables before payment releases, using this same verification engine.

Both directions confirmed on Base mainnet, with the client, provider, and evaluator as three separate wallets throughout — genuine third-party evaluation, not self-approval:

  • Reject / refund — verified across multiple jobs, escrow correctly returned to the client each time.
  • Complete / release — verified with a real requirement, a real deliverable, a genuine passing verdict, and a confirmed single on-chain payout to the provider.

Runs on @virtuals-protocol/acp-node-v2 with a non-custodial Privy-managed signer — built to run unattended on server infrastructure, not just as a local test harness.

Verify directly: VerifyProceed's agent wallet on BaseScan


Quick start

1. Get a free API key

https://verifyproceed.com/get-api-key

100 calls/month. No card required.

2. Test immediately — no key needed

# Returns HTTP 402 (expected) — proves the API is live
curl -X POST https://decision-verification-agent.onrender.com/v1/acp/guard \
-H "Content-Type: application/json" \
-d '{"action":"generic","chain":"base"}'

3. With your key

curl -X POST https://decision-verification-agent.onrender.com/v1/acp/guard \
-H "Authorization: Bearer vp_your_key_here" \
-H "Content-Type: application/json" \
-d '{"action":"generic","chain":"base"}'

Code examples

Python

# pip install requestsimportrequestsresponse=requests.post(
"https://decision-verification-agent.onrender.com/v1/acp/guard",
headers={
"Authorization": "Bearer vp_your_key_here",
"Content-Type": "application/json",
},
json={
"action": "bridge",
"chain": "base",
"amount_usd": 50000,
},
)
result=response.json()
ifresult["verdict"] =="proceed":
execute_bridge()
else:
print("Blocked:", result["decision"]["reason"])

TypeScript

constresponse=awaitfetch("https://decision-verification-agent.onrender.com/v1/acp/guard",{method: "POST",headers: {"Authorization": `Bearer ${process.env.VERIFYPROCEED_API_KEY}`,"Content-Type": "application/json",},body: JSON.stringify({action: "swap",chain: "base",amount_usd: 10000,}),});const{ verdict, decision }=awaitresponse.json();if(verdict!=="proceed"){console.log("Blocked:",decision.reason);return;}// safe to execute

ElizaOS plugin

importtype{Action,IAgentRuntime,Memory}from"@elizaos/core";exportconstguardAction: Action={name: "GUARD_CHECK",description: "Run VerifyProceed pre-execution safety check before any on-chain action",asynchandler(runtime: IAgentRuntime,message: Memory){constres=awaitfetch("https://decision-verification-agent.onrender.com/v1/acp/guard",{method: "POST",headers: {"Authorization": `Bearer ${process.env.VERIFYPROCEED_API_KEY}`,"Content-Type": "application/json",},body: JSON.stringify({action: message.content.action??"generic",chain: "base",amount_usd: message.content.amount_usd??0,}),});constverdict=awaitres.json();if(verdict.verdict!=="proceed"){return{text: `Action blocked: ${verdict.decision.reason}`};}return{text: "Guard check passed — proceeding."};},};

LangChain tool

fromlangchain.toolsimporttoolimportrequests@tooldefguard_check(action: str, chain: str="base", amount_usd: float=0) ->str:
"""Run a pre-execution safety check before any DeFi action."""response=requests.post(
"https://decision-verification-agent.onrender.com/v1/acp/guard",
headers={"Authorization": f"Bearer {VERIFYPROCEED_API_KEY}"},
json={"action": action, "chain": chain, "amount_usd": amount_usd},
)
result=response.json()
returnf"verdict:{result['verdict']} confidence:{result['confidence']}"

Endpoints

Base URL:https://decision-verification-agent.onrender.com

MethodPathAuthCostDescription
GET/healthNoneFreeLiveness check
GET/v1/capabilitiesNoneFreeCapability manifest
GET/v1/agentsNoneFreeList available agents
POST/v1/acp/guardBearer or x402$0.01ACP pre-execution guard
POST/v1/acp/decideBearer or x402$0.01ACP policy-driven decision
POST/functions/v1/guardBearerFree tierKey-authenticated guard
POST/functions/v1/api-key-signupNoneFreeGet API key

Guard request schema

{
"action": "swap | transfer | bridge | yield_deposit | approve | mint | stake | add_liquidity | contract_call | generic",
"chain": "base | ethereum | arbitrum | optimism | polygon",
"pair_address": "0x... (optional — for DEX checks)",
"stablecoin_asset_id": "usd-coin (optional — for depeg checks)",
"rpc_url": "https://... (optional — overrides default RPC)",
"bridge_status_url": "https://... (optional — for bridge exploit check)",
"amount_usd": 50000,
"strict_mode": true
}

What we check

CheckWhat it detects
RPC healthCorrupted or lagging RPC node data
Stablecoin depegUSDC / USDT / DAI deviation from $1.00 peg
Bridge exploit monitorLive exploits and active incidents
DEX price integrityManipulation signals and liquidity drain
Rug pull riskPair age, FDV ratio, liquidity depth
Approval riskUnlimited/unusual token approvals
Contract verificationUnverified or suspicious contract bytecode

All checks run in parallel. Total latency: <300ms p99.


Verdict schema

{
"verdict": "proceed | wait | block",
"confidence": 0.95,
"risk": "low | medium | high",
"expires_in": 300,
"decision": {
"action": "execute | retry | halt",
"reason": "All safety checks passed.",
"constraints": {}
},
"evidence": [...],
"failure_modes": []
}
VerdictMeaning
proceedAll checks passed — safe to execute
waitTransient failure (timeout, rate limit) — retry in expires_in seconds
blockHard failure detected — do not execute

Payments

Free tier

Get an API key at verifyproceed.com/get-api-key. 100 calls/month. No card. No expiry.

x402 — pay per call

Agents pay $0.01 USDC on Base per call, autonomously, via the x402 protocol. No accounts. No billing portals. Machine-native payments for machine-native infrastructure.

POST /v1/acp/guard (no key)
← HTTP 402 + payment challenge
→ Agent pays $0.01 USDC on Base
→ Retry with X-PAYMENT header
← HTTP 200 + verdict

Compatible with

FrameworkIntegration
Virtuals ACPNative — Evaluator agent + /v1/acp/* endpoints
Coinbase ACPNative — ACP endpoints (/v1/acp/*)
ElizaOS / ai16zPlugin (see example above)
LangChainTool (see example above)
Solana Agent KitHTTP call before any action
Any HTTP clientcurl, requests, fetch, axios

Self-hosting

Requirements

Run locally

git clone https://github.com/verifyproceed/verifyproceed.git
cd verifyproceed
pip install -r requirements.txt
cp .env.example .env
# Edit .env with your keys
uvicorn app:app --reload --port 8000

Environment variables

VariableRequiredDescription
OPENROUTER_API_KEYYesLLM verdict generation
SUPABASE_URLYesAPI key validation
SUPABASE_SERVICE_KEYYesSupabase service role key
COINGECKO_API_KEYRecommendedHigher rate limits on price checks
PAYMENT_WALLETYesUSDC payment recipient address
OPENROUTER_MODELNoDefault: openai/gpt-4o-mini
API_KEYNoGlobal key for private endpoints

Docker

docker build -t verifyproceed-guard .
docker run -p 8000:8000 --env-file .env verifyproceed-guard

API reference and tools

ResourceLink
Websiteverifyproceed.com
Full documentationverifyproceed.com/docs
Interactive playgroundverifyproceed.com/playground
Marketplace / ACP kitverifyproceed.com/marketplace-kit
Get API keyverifyproceed.com/get-api-key

(Confirm exact paths match your live site's routing before publishing — inferred from the site's page structure, not independently verified.)


Support

  • Website:verifyproceed.com
  • X / Twitter:(add current handle)
  • Email:(add current support email)

License

MIT

Popular repositories Loading

  1. verifyproceed verifyproceedPublic

    Pre-execution guard API for AI DeFi agents — binary verdict in <300ms, $0.01 USDC via x402

    Python 1