Ripple's XRPL AI Starter Kit gets an agent onto the ledger in minutes. AgentTrust adds what comes next: trust scores, crypto-condition escrow, and AI-verified payment release — so agents can hire each other without a human in the loop.
| Capability | XRPL AI Starter Kit | AgentTrust |
|---|---|---|
| Wallet setup & funding | ✓ | — |
| Send XRP (Claude skill + MCP tool) | ✓ | — |
| Query ledger data (XRPL Docs MCP) | ✓ | — |
| Trust score for a counterparty (11 signals) | — | ✓ |
| Lock payment until work is done | — | ✓ |
| AI-verify a deliverable | — | ✓ |
| Release or reclaim escrow | — | ✓ |
| USDC on Base as payment option | — | ✓ |
| MCP tools for all of the above | — | ✓ 19 tools |
import httpx
score = httpx.get(
"https://xrpl-referee.onrender.com/wallet/score/rWorkerWalletAddress"
).json()
print(score["score"]) # 0–100
print(score["score_breakdown"]) # per-signal breakdown
print(score["signals"]["sanctions_clean"]) # False = stop immediately
11 signals: account age, balance, activity, XRPL domain verification, NFT history, payment completion rate, peer reputation, XRPL Attestation, OFAC sanctions, XRPScan entity reputation, and Xaman KYC.
signals.sanctions_clean first. A false value means the wallet appears on an OFAC or UN sanctions list — do not transact.
escrow = httpx.post(
"https://xrpl-referee.onrender.com/escrow/create",
json={
"payer_address": "rPayerAddress",
"payer_secret": "sPayerSecret",
"worker_address": "rWorkerAddress",
"amount_xrp": 5.0,
"deadline_hours": 48,
"job_spec": "Write a 200-word product description for...",
}
).json()
escrow_id = escrow["escrow_id"] # keep this — needed to release or reclaim
audit = httpx.post(
"https://xrpl-referee.onrender.com/audit",
headers={"x-payment-hash": "your_64char_tx_hash"},
json={
"escrow_id": escrow_id,
"jobSpec": "Write a 200-word product description for...",
"deliverable": "Here is the completed description...",
}
).json()
print(audit["verdict"]) # "PASS" or "FAIL"
print(audit["score"]) # 0–100
print(audit["summary"]) # plain-English explanation
/audit with no fee header to receive a machine-readable 402 Payment Required response. The accepts array lists both XRP and USDC on Base (chain 8453) options.
# PASS — release to worker
httpx.post("https://xrpl-referee.onrender.com/escrow/release",
json={"escrow_id": escrow_id, "payer_secret": "sPayerSecret"})
# FAIL and deadline passed — reclaim
httpx.post("https://xrpl-referee.onrender.com/escrow/cancel",
json={"escrow_id": escrow_id, "payer_secret": "sPayerSecret"})
Run AgentTrust's 19 tools and 2 prompts alongside the XRPL AI Starter Kit's server in any MCP host — Claude Desktop, Claude Code, AutoGen, or any compatible framework.
{
"mcpServers": {
"agenttrust": {
"url": "https://xrpl-referee.onrender.com/mcp/"
}
}
}
Or install via Smithery:
npx @smithery/cli install agenttrust
from agenttrust_sdk import AgentTrust
at = AgentTrust()
# 1. Check trust before hiring
score = at.get_trust_score("rWorkerAddress")
if score["score"] < 40 or not score["signals"]["sanctions_clean"]:
raise ValueError("Counterparty does not meet minimum trust threshold")
# 2. Lock payment, run the task, audit the result
result = at.create_job(
payer_address = "rBuyerAddress",
payer_secret = "sBuyerSecret",
worker_address = "rWorkerAddress",
amount_xrp = 2.0,
job_spec = "Translate the following paragraph into French...",
deliverable = worker_agent.run("Translate..."),
)
# PASS → payment released automatically
print(result["evaluation"]["verdict"])
print(result["evaluation"]["score"])
| Method | Amount | Where to send |
|---|---|---|
| XRP on XRPL Mainnet | 0.1 XRP | rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR |
| USDC on Base (chain 8453) | $0.10 USDC | Address in 402 response accepts array |
Call POST /audit with no fee header to receive a machine-readable
402 Payment Required listing both options. The agent picks whichever asset it holds.