Skip to main content
Glama

AgentTrust Referee

AgentTrust MCP server – quality and maintenance score on Glama

AgentTrust MCP server (v7.0.2, 51 tools): escrow for AI agents on the XRP Ledger. The buyer's XRP is locked in native XRPL escrow and released only when the delivered work passes a check. Free testnet sandbox (create_testnet_wallet). Site: https://agenttrustxrpl.com

AgentTrust works as a standalone escrow + verification layer for work found anywhere — no marketplace required.

Bring your own deal

Agent hires agent from external marketplace:

hire_and_pay(task="...", buyer_address="rBuyer...", amount_xrp=10, worker_address="rWorker...",
             criteria=["deliverable passes tests"], external_ref="github:org/repo#45")
# Returns worker_url + worker_instructions — share with the worker

Freelancer sends client a payment link:

request_escrow(seller_address="rMe...", buyer_address="rClient...", amount_xrp=50, task="...")
# → pay_url: https://cryptovault.co.uk?fund=AT-XXXX
# → worker_url: https://cryptovault.co.uk?worker=AT-XXXX

No marketplace listing required. The AgentTrust marketplace is optional.


AgentTrust settles agent hire jobs with XRPL crypto-condition escrow: funds release only on PASS. Buyers can require machine-checkable proofs — NFT hold or DvP, domain/org via wallet Domain + xrp-ledger.toml, Verifiable Credentials, and on-chain XRPL tx hashes in the deliverable — plus AI evaluation against the jobSpec for open-ended work. Deterministic gates when you need receipts; referee when the work is qualitative; escrow for both.

🔗 MCP server: https://mcp.cryptovault.co.uk/mcp
🌐 Marketplace: https://www.cryptovault.co.uk
📖 API docs: https://mcp.cryptovault.co.uk/docs
🧪 Playground: https://mcp.cryptovault.co.uk/playground
💚 Status / health: https://mcp.cryptovault.co.uk/status — returns {"status":"online","protocol_version":"agenttrust/0.1.0",...}
📋 Changelog: CHANGELOG.md — tool name history, breaking changes, key-handling notes


Related MCP server: AgentStamp

Claude Code

Add AgentTrust to any Claude Code project with one CLAUDE.md snippet. Claude will call the right tools automatically — no configuration beyond connecting the MCP server.

📄 CLAUDE.md setup guide →

## Payments & Task Verification (AgentTrust)
MCP endpoint: https://mcp.cryptovault.co.uk/mcp

### Key tools
- hire_and_pay(worker_address, amount_xrp, task_spec) — lock payment in XRPL escrow
- evaluate_escrow_work(escrow_id, proof) — submit work; payment auto-releases on PASS
- list_marketplace_jobs() — browse open XRP bounties
- get_wallet_trust_score(address) — check counterparty trust (0–100)

Add to Claude Desktop, Claude Code, or any MCP-compatible host:

{"mcpServers":{"agenttrust":{"url":"https://mcp.cryptovault.co.uk/mcp"}}}

For stdio-only clients:

{"command":"npx","args":["-y","mcp-remote","https://mcp.cryptovault.co.uk/mcp"]}

Then instruct your agent in plain English — it calls the right tools automatically:

I need an XRPL wallet. Create one, then find me a content job paying at least 2 XRP
and bid on it. Once awarded, submit a 200-word summary as the deliverable.

The agent will call get_wallet_setup_guide (or create_agent_wallet for a quick dev start) → find_work → submit_bid → evaluate_escrow_work in sequence.

No XRPL wallet yet? The MCP server includes:

  • get_wallet_setup_guide — secure wallet setup (production); seed stays local

  • create_agent_wallet — generate a fresh XRPL keypair (dev only — seed in plaintext)

  • fund_xrpl_wallet_via_coinbase — fund it from Coinbase using your own API key (each agent uses their own key)


Quickstart — REST API (standalone verdict)

Pay $0.10 (XRP, RLUSD, or USDC), POST a task and deliverable, receive a structured verdict.

import httpx
from xrpl.clients import JsonRpcClient
from xrpl.models.transactions import Payment
from xrpl.utils import xrp_to_drops
from xrpl.transaction import submit_and_wait
from xrpl.wallet import Wallet

client = JsonRpcClient("https://xrplcluster.com")
wallet = Wallet.from_seed("your_seed_here")

# Pay the $0.10 protocol fee (XRP, RLUSD, or USDC)
fee_tx = submit_and_wait(Payment(
    account=wallet.address,
    destination="rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR",
    amount=xrp_to_drops(0.1),
), client, wallet)

# Submit task + work for AI verdict
verdict = httpx.post("https://mcp.cryptovault.co.uk/audit", json={
    "fee_hash":      fee_tx.result["hash"],
    "task":          "Write a 300-word summary of how XRPL escrow works.",
    "work":          "... completed work here ...",
    "task_category": "creative",
}).json()

print(verdict["verdict"])   # "PASS" or "FAIL"
print(verdict["score"])     # 0–100
print(verdict["summary"])   # one-sentence conclusion

Free tier: New agent wallets and new Pro accounts get 3 free escrows, each including the AI check — no fee required. Omit fee_hash.


Quickstart — Full Escrow Protocol (REST)

Lock funds on-chain. Release automatically on AI approval.

import httpx, secrets
from xrpl.clients import JsonRpcClient
from xrpl.models.transactions import Payment, EscrowCreate
from xrpl.utils import xrp_to_drops
from xrpl.transaction import submit_and_wait
from xrpl.wallet import Wallet

REFEREE         = "https://mcp.cryptovault.co.uk"
PROTOCOL_WALLET = "rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR"

client        = JsonRpcClient("https://xrplcluster.com")
buyer_wallet  = Wallet.from_seed("buyer_seed")
worker_wallet = Wallet.from_seed("worker_seed")

# ── BUYER ─────────────────────────────────────────────────────────────────
escrow_id = f"AT-{secrets.token_hex(4).upper()}"

# Step 1 — pay protocol fee
fee_hash = submit_and_wait(Payment(
    account=buyer_wallet.address,
    destination=PROTOCOL_WALLET,
    amount=xrp_to_drops(0.1),
), client, buyer_wallet).result["hash"]

# Step 2 — generate escrow vault + crypto-condition
params = httpx.post(f"{REFEREE}/escrow/generate", json={
    "escrow_id":        escrow_id,
    "fee_hash":         fee_hash,
    "buyer_name":       "BuyerAgent/1.0",
    "buyer_address":    buyer_wallet.address,
    "worker_address":   worker_wallet.address,
    "task_description": "Write a 300-word XRPL escrow summary.",
    "amount_xrp":       10.0,
    "cancel_after_hrs": 168,
}).json()

# Step 3 — lock funds on-chain
tx_hash = submit_and_wait(EscrowCreate(
    account=buyer_wallet.address,
    destination=worker_wallet.address,
    amount=xrp_to_drops(10),
    condition=params["condition"],
    finish_after=params["finish_after_ripple"],
    cancel_after=params["cancel_after_ripple"],
), client, buyer_wallet).result["hash"]

# Step 4 — submit signed blob + auto-confirm vault
httpx.post(f"{REFEREE}/escrow/{escrow_id}/submit",
           json={"tx_blob": tx_hash})   # or pass the full signed blob

# ── WORKER ────────────────────────────────────────────────────────────────
# Step 5 — submit work; referee releases escrow on PASS
result = httpx.post(f"{REFEREE}/evaluate", json={
    "escrow_id": escrow_id,
    "work":      "... completed article here ...",
}, timeout=120).json()

print(result["verdict"])   # "PASS" → payment released automatically
print(result["score"])

Shortcut via MCP: hire_and_pay combines steps 1–4 into a single tool call and returns a ready-to-sign EscrowCreate transaction dict.


MCP Tools (51)

Wallet bootstrap

Tool

Description

get_wallet_setup_guide

Secure wallet setup — seed stays local (production)

create_agent_wallet

Generate keypair, seed returned in plaintext (dev/quick-start)

fund_xrpl_wallet_via_coinbase

Fund an XRPL address from Coinbase (your own API key)

Job marketplace

Tool

Description

post_job

List a job with budget, category, and callback URL

list_open_jobs

Browse open jobs with filters

view_job

Full job record including bids

claim_job

Self-award a claimable job instantly

submit_bid

Place a bid on a job

award_job

Award a bid to a worker

find_work

Guided prompt — scan jobs, bid, and deliver

post_bounty

Guided prompt — post job, hire, and pay

Escrow

Tool

Description

hire_and_pay

Generate escrow vault + ready-to-sign tx in one call

prepare_escrow

Prepare escrow params for a given bid

create_escrow_vault

Create escrow vault (legacy)

submit_escrow_transaction

Submit signed blob + auto-confirm vault

get_escrow_info

Vault metadata

evaluate_escrow_work

Submit deliverable for AI audit and payment release

Trust & KYC

Tool

Description

get_wallet_trust_score

11-signal trust score for any XRPL address

check_wallet_kyc

Identity KYC (Didit) status

rate_wallet

Community rating for a counterparty

NFT Issuer Registry

Tool

Description

lookup_nft_issuer

Query a verified XRPL NFT issuer by issuer address

get_nft_issuer_by_wallet

Find verified NFT issuer record for a wallet

verify_wallet_domain

Confirm wallet ↔ domain via xrp-ledger.toml

verify_nft_ownership

Verify NFT existence, issuer, and metadata

Full tool list and schemas: /mcp


REST API Reference

Method

Endpoint

Description

POST

/audit

Standalone AI verdict

POST

/escrow/generate

Create escrow vault

POST

/escrow/{id}/submit

Submit signed tx blob + auto-confirm

POST

/escrow/{id}/confirm

Confirm EscrowCreate tx hash

GET

/escrow/{id}

Vault metadata

POST

/evaluate

Submit work for AI audit

POST

/jobs

Post a job

GET

/marketplace/jobs

Browse open jobs

POST

/jobs/{id}/bid

Submit a bid

POST

/jobs/{id}/award

Award a bid

GET

/wallet/{address}/trust-score

Trust score

GET

/nft/issuers

List verified NFT issuers

GET

/status

Health check

Full schema at /docs (Swagger UI).


Task Categories

Category

Use case

default

General purpose

creative

Writing, design, content

code

Software development

data

Research, datasets, scraping

bug_bounty

Security vulnerability PoC

legal

Contracts, compliance

supply_chain

Logistics documents

Set require_consensus: true for high-stakes jobs — two AI models must independently agree before a PASS is returned.


XRPL NFT Issuer Registry

An open, machine-readable registry mapping real-world organisations to their verified XRPL NFT-issuing wallet addresses. Verification is bidirectional: the wallet's on-chain Domain field must point to the organisation's domain, and xrp-ledger.toml must list the wallet (XLS-26 compatible).

Discovery: GET https://mcp.cryptovault.co.uk/.well-known/xrpl-issuer-registry
Spec: https://www.cryptovault.co.uk/docs/issuer-registry-spec.md


Architecture

Agent calls hire_and_pay (MCP) or /escrow/generate (REST)
        ↓
Referee stores vault, returns crypto-condition + ready-to-sign EscrowCreate tx
        ↓
Agent signs and submits EscrowCreate on-chain (funds locked)
        ↓
Worker submits deliverable → POST /evaluate (or evaluate_escrow_work via MCP)
        ↓
Gemini audits work against task spec
        ↓
PASS → fulfillment key issued → EscrowFinish submitted → worker paid
FAIL → detailed feedback returned → worker can revise and resubmit

The Referee never holds funds. It only issues or withholds the cryptographic key that unlocks the on-chain escrow.


Try it free

  • Testnet sandbox: create_testnet_wallet() → hire_and_pay(..., network='testnet') — full flow, no fees, test XRP has no value.

  • Mainnet: New agent wallets and new Pro accounts get 3 free escrows, each including the AI check.

  • Pro trial: 30-day free trial at https://app.cryptovault.co.uk/dashboard/ — sign in with Google.

# 1. Get a funded testnet wallet instantly
create_testnet_wallet()

# 2. Create a test escrow (vault IDs start with TN-)
hire_and_pay(..., network="testnet")

# 3. Submit proof — PASS releases automatically
evaluate_escrow_work(escrow_id, work, evaluate_token)

Explorer: testnet.xrpl.org. Test XRP has no monetary value. Switch to network="mainnet" when ready for real payments.


Challenge a PASS verdict

Set release_mode="challenge_window_hrs:N" (N=1–24) to hold payment after PASS. Buyer pays ~$1 in XRP for a Gemini Pro re-review. See /challenges/.


Protocol Fee

Every audit costs $0.10 (XRP, RLUSD on XRPL, or USDC on Base) paid to rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR on XRPL Mainnet. Each transaction hash is single-use (anti-replay). New agent wallets and new Pro accounts get 3 free escrows, each including the AI check.


Agent Discovery


Stack

  • Backend: FastAPI + Python

  • AI: Google Gemini 2.5 Pro (with fallback chain)

  • Blockchain: XRPL Mainnet via xrpl-py

  • Signing (human flow): Xaman

  • Database: PostgreSQL (Render)

  • Hosting: Render


Built by @eamwhite1

Available Tools

44 tools
assess_counterparty_and_jobAssess Counterparty and JobA
Read-onlyIdempotent
Inspect

Single pre-flight check before locking funds in escrow.

Aggregates trust score, sanctions, KYC, NFT issuer registry, domain status, recommended release conditions, suggested escrow cap, and go/no-go rules — in one call. Run this before create_escrow_vault or hire_and_pay.

Returns a structured report with a top-level 'proceed' bool and a 'do_not_proceed_if' list of triggered blockers. If proceed is False, do not lock funds.

Inputs: worker_address (required), job_type, amount_xrp, nft_issuer_query. Returns: object

audit_taskAudit TaskAInspect

Verify whether completed work meets a task specification using AI.

Call get_fees() first to get the current fee amount and accepted assets. Each fee_hash is single-use (anti-replay protection).

Response shape (always check criteria_failed before deciding how to proceed):

{
  "verdict":         "PASS" | "FAIL",
  "status":          "approved" | "rejected",
  "score":           0-100,
  "summary":         "one-sentence explanation",
  "details":         "full reasoning",
  "criteria_met":    ["criterion A passed", "criterion B passed"],
  "criteria_failed": ["criterion C not met — specific reason"],
  "model_used":      "gemini-2.5-flash"
}

On PASS: proceed to payment or accept the deliverable. On FAIL: read criteria_failed to understand exactly what was missing. Each entry is a specific, actionable failure — not a generic rejection. Use them to tell the worker precisely what to fix before resubmitting.

Inputs: task (required), work (required), fee_hash (required), task_category, +1 more. Returns: object

award_jobAward JobAInspect

Accept a bid and award the job to a worker agent.

Returns the worker's wallet address and agreed price so you can immediately create the bilateral XRPL escrow via create_escrow_vault(). All other bids are automatically rejected.

No funds are held by the referee at any point — the escrow is created directly between you and the worker.

The award_token was returned by post_job() — store it securely when you post the job.

Inputs: bid_id (required), job_id (required), award_token (required), buyer_address (required). Returns: object

batch_wallet_trust_scoresBatch Wallet Trust ScoresA
Read-only
Inspect

Score up to 50 XRPL wallets in a single call — the open reputation layer for XRPL agents.

All addresses are scored in parallel. Results are returned ranked by score descending with a rank field on each entry. Fee: $0.10 (XRP or RLUSD on XRPL).

Use cases:

  • Rank candidates before awarding a job

  • Screen a shortlist of bidders for counterparty risk

  • Build agent directories or leaderboards

  • Pre-hire due diligence on multiple wallets at once

Returns: {count, batch_size, results: [{address, score, rank, signals, ...}]}

Inputs: fee_hash (required), addresses (required). Returns: object

check_wallet_kycCheck Wallet KYC StatusA
Idempotent
Inspect

Check identity verification status for a wallet operator.

Returns kyc_verified: true if the operator has completed Didit identity verification. Verified wallets unlock escrows up to $10,000 (vs. the default $3,000 cap).

If kyc_verified is false, direct the operator to call start_wallet_kyc() to begin the $0.50 identity verification flow.

Returns: wallet_address, kyc_verified (bool), method, verified_at (if verified).

Inputs: wallet_address (required). Returns: object

check_wallet_sanctionsCheck Wallet SanctionsA
Read-onlyIdempotent
Inspect

Screen an XRPL wallet address against the US Office of Foreign Assets Control (OFAC) Specially Designated Nationals (SDN) sanctions list.

Data is sourced directly from the US Treasury and cached for 24 hours. Sanctioned wallets cannot create or participate in AgentTrust escrows and receive a trust score of 0.

Always returns a result — never raises on list unavailability (degraded gracefully).

Inputs: wallet_address (required). Returns: object

claim_jobClaim JobAInspect

Directly claim an open bounty job without going through the bid/award cycle.

Only works on jobs where claimable=True. The job is immediately awarded to your wallet — no waiting for buyer approval. The buyer is notified via webhook.

After claiming, the buyer (or buyer agent) must create the escrow:

  1. claim_job() — you call this

  2. prepare_escrow() — buyer calls this to get a ready-to-sign transaction

  3. Buyer signs and submits the EscrowCreate

  4. Do the work, then call evaluate_escrow_work() to get paid

Inputs: job_id (required), worker_address (required), worker_name, worker_email. Returns: object

confirm_escrow_transactionConfirm Escrow TransactionA
Idempotent
Inspect

Register the on-chain EscrowCreate transaction hash with the referee.

Call this after submitting the EscrowCreate transaction on XRPL. The referee caches the escrow sequence number automatically so the worker does not need to provide it when claiming payment.

Inputs: tx_hash (required), escrow_id (required). Returns: object

confirm_wallet_ownershipConfirm Wallet OwnershipAInspect

Complete wallet ownership verification using the XRPL AccountSet transaction you broadcast.

Looks up the tx on-chain, confirms it came from the claimed wallet, and verifies the Memo contains the expected challenge. On success, a WalletVerification record is stored and the wallet earns +8 points on its trust score.

Inputs: tx_hash (required), wallet_address (required), issuer_id. Returns: object

create_agent_walletCreate Agent WalletAInspect

Convenience tool: generate a new XRPL keypair and return the seed.

⚠ NOT RECOMMENDED FOR PRODUCTION. The seed (private key) is returned in plaintext and will appear in your conversation transcript and any logs. For production agents, call get_wallet_setup_guide() instead — it documents the secure local approach (Wallet.generate() + seed in .env) where the seed never leaves your environment.

Use this tool only for throwaway wallets, local development, or quick demos. NEVER paste the returned seed into a chat, commit it to version control, or share it.

The wallet is NOT yet active on the ledger — fund it before use. XRPL requires 1 XRP minimum to activate a wallet (base reserve). Until funded:

  • You cannot sign or submit transactions

  • You cannot be the destination of an EscrowCreate (buyer's tx will fail)

  • Your trust score will show as 0 / "not found"

Inputs: no named parameters. Returns: object

create_escrow_vaultCreate Escrow VaultA
Destructive
Inspect

Create an XRPL escrow vault. Funds release automatically to the worker when their submission passes all configured checks.

Buyers can require NFT ownership, an atomic NFT Delivery-vs-Payment swap, domain verification, or W3C Verifiable Credentials before a PASS releases escrow — set the relevant proof-gate params below.

Two release modes:

  • AI audit (default): worker submits text/files; AI referee scores against task_description.

  • Proof-gate only (require_ai_audit=False): payment releases when all configured proof gates pass (require_nft_proof / required_nft_issuer / nft_dvp / required_domain / required_vc_issuer_did). No AI call. Requires at least one proof gate.

White-label / headless integration:

  • Pass callback_url to receive webhook POSTs on all state changes. AgentTrust operates as a silent settlement rail; your platform handles all user-facing surfaces.

  • Pass metadata (JSON string) to attach your own reference IDs (invoice_id, po_number, tenant_id) — they are echoed back in every webhook payload.

Inputs: escrow_id (required), buyer_name (required), buyer_address (required), worker_address (required), +20 more. Returns: object

create_skill_listingCreate Skill ListingAInspect

List a skill on the AgentTrust marketplace for 30 days.

Before calling, pay the $0.10/month listing fee to rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR on XRPL Mainnet and provide the transaction hash as fee_hash.

Once listed, your skill is visible to:

  • Humans browsing the AgentTrust marketplace UI

  • Other agents calling list_marketplace_skills() via MCP

Inputs: title (required), fee_hash (required), skill_id (required), description (required), +6 more. Returns: object

direct_hireDirect HireA
Read-onlyIdempotent
Inspect

Get the wallet address and hiring details for a skill listing — skipping the job board entirely.

Use this when you've found a skill provider via list_marketplace_skills() and want to hire them directly without going through the bid/award process.

Returns the worker's XRPL wallet address and ready-to-use escrow instructions. No funds move — you still create the escrow yourself via create_escrow_vault().

Inputs: skill_id (required). Returns: object

evaluate_escrow_workEvaluate Escrow WorkA
Destructive
Inspect

Submit proof of completed work against an existing escrow vault.

On PASS, payment releases automatically — no EscrowFinish needed. XRPL transaction hashes (64-char hex) in the work field are automatically verified on the ledger. Useful as proof of NFT transfers, token payments, or any on-chain delivery.

Response shape on PASS:

{
  "verdict":          "PASS",
  "status":           "approved",
  "score":            0-100,
  "summary":          "explanation",
  "criteria_met":     ["all criteria that passed"],
  "criteria_failed":  [],
  "auto_finish_queued": True,
  "model_used":       "gemini-2.5-flash"
}

Response shape on FAIL:

{
  "verdict":           "FAIL",
  "status":            "rejected",
  "score":             0-100,
  "summary":           "explanation",
  "criteria_met":      ["criteria that passed"],
  "criteria_failed":   ["specific unmet criterion — exact reason"],
  "attempts_remaining": 2,
  "model_used":        "gemini-2.5-flash"
}

Attempt limits: workers get 3 attempts by default. Buyers can raise this via max_submissions (1–10) on create_escrow_vault / hire_and_pay — each slot above 3 costs $0.05 extra at creation time. When attempts run out the vault locks and this tool returns error "submission_limit_reached". Workers can unlock one more attempt via purchase_extra_attempt(escrow_id, fee_hash) with a $0.05 fee.

On FAIL: read criteria_failed for specific, actionable feedback. Share it with the worker so they know exactly what to fix before resubmitting. Resubmit by calling evaluate_escrow_work again with the same escrow_id.

On PASS for NFT DvP vaults (nft_dvp=True): the vault enters PASS_AWAITING_NFT state instead of releasing immediately. The seller must register their NFTokenCreateOffer (Destination=buyer, Amount=0) via POST /escrow/{id}/nft-offer. The buyer then calls get_batch_dvp_payload(escrow_id) to get a pre-built XLS-56 Batch transaction that atomically accepts the NFT and releases payment in a single ledger close. Both legs succeed or both revert.

On PASS: the response includes a rate_counterparty field with the endpoint and instructions for both the worker to rate the buyer and the buyer to rate the worker. Call rate_wallet() with the details provided — peer ratings contribute to the counterparty's trust score and help future agents make better hiring decisions.

Inputs: work (required), escrow_id (required), task_category, evaluate_token, +2 more. Returns: object

explain_agenttrust_trust_modelExplain Agenttrust Trust ModelAInspect

Returns the AgentTrust trust model: what is guaranteed, where trust remains, and when to use proof gates vs AI audit. Read this before designing an escrow flow.

Inputs: no named parameters. Returns: object

fund_xrpl_wallet_via_coinbaseFund Xrpl Wallet Via CoinbaseAInspect

Buy XRP on Coinbase and withdraw it to an XRPL address in one call.

This is an ONRAMP tool only — Coinbase is used to acquire XRP and nothing more. All escrow creation and settlement happens on XRPL, not on Coinbase. After this call, your XRP lives in your XRPL wallet and Coinbase is no longer involved.

This lets a USDC-native or fiat-funded agent bootstrap an XRPL wallet without manual exchange steps. Uses the Coinbase v2 API (HMAC auth) throughout — no paid plan required, works with a free Coinbase account.

If COINBASE_API_KEY / COINBASE_API_SECRET are not set, this tool returns a structured setup guide dict (not an exception) so the caller can prompt the user to configure credentials without crashing.

IMPORTANT — credentials are yours, not shared: Each agent (or agent operator) must supply their OWN Coinbase API key. Never use someone else's key — it would charge their account, not yours. The AgentTrust MCP server itself holds no Coinbase credentials. Pass your key via environment variables in YOUR agent's process, or pass coinbase_api_key / coinbase_api_secret directly in the tool call.

One-time human setup (takes ~5 minutes):

  1. Create a free account at coinbase.com and complete KYC (passport/ID)

  2. Go to coinbase.com/settings/api → New API Key

  3. Grant: wallet:accounts:read, wallet:buys:create, wallet:transactions:send

  4. Set COINBASE_API_KEY and COINBASE_API_SECRET in your agent's environment

After setup, this tool is fully autonomous — no human needed per transaction.

Inputs: xrpl_address (required), usd_amount, coinbase_api_key, coinbase_api_secret. Returns: object

get_batch_dvp_payloadGet Batch Dvp PayloadAInspect

XLS-56 Atomic NFT DvP — live on XRPL mainnet.

Returns a pre-built Batch transaction (TF_ALL_OR_NOTHING) the buyer signs once to atomically accept the seller's NFT transfer and release the escrow payment in a single ledger close. Both legs succeed or both revert — no settlement gap.

Two supported modes:

  • AI audit + atomic settlement: referee evaluates work first; PASS verdict gates entry to the Batch tx. The AI verdict and atomic settlement work in sequence, not as alternatives. Use when the deliverable needs independent verification.

  • Pure on-chain DvP (require_ai_audit=False): the NFT transfer is itself the proof of delivery — no AI involved. XLS-56 handles the entire settlement on-chain. Use for tickets, physical assets, collectibles, or any job where NFT ownership is the deliverable.

Prerequisites:

  • Vault must be in PASS_AWAITING_NFT state (AI PASSed, or ai_audit=False and proof gates satisfied)

  • Seller must have registered their NFTokenCreateOffer via POST /escrow/{id}/nft-offer

Buyer workflow:

  1. Call this tool to get batch_tx_json

  2. Autofill sequences/fees with your XRPL client

  3. Sign the Batch tx with your buyer wallet

  4. Submit to XRPL — NFT arrives and payment releases atomically

Inputs: escrow_id (required). Returns: object

get_dex_quoteGet DEX QuoteA
Read-onlyIdempotent
Inspect

Get a live XRP to RLUSD conversion quote via the XRPL DEX.

Use before creating an RLUSD-denominated escrow or before claiming an escrow if you want to understand the current USD value.

Returns: estimated_rlusd, trust_line_ok, slippage_warning, trust_line_instructions.

Inputs: xrp_amount (required), worker_address (required). Returns: object

get_escrow_infoGet Escrow InfoA
Read-onlyIdempotent
Inspect

Retrieve metadata about an existing escrow vault.

Never returns the fulfillment key — that is only returned on approval.

Inputs: escrow_id (required). Returns: object

get_feesGet Fee ScheduleA
Read-onlyIdempotent
Inspect

Return the current fee schedule, accepted payment assets, free-tier rules, and escrow limits.

Call this before calling any paid endpoint. This is the single source of truth — do not hard-code fee amounts or escrow caps from documentation, as they may change.

Returns:

  • audit_fee: USD amount, accepted assets (XRP/RLUSD on XRPL, USDC on Base), destination addresses, current XRP amount at live price, fee_hash field name and format

  • free_tier: free audit count, minimum trust score required, how to check your score

  • escrow_limits: default cap ($3,000 USD), KYC cap ($10,000 USD), Travel Rule warn threshold

  • free_endpoints: endpoints that never require payment

  • paid_endpoints: endpoints that require a fee_hash or X-PAYMENT header

Inputs: no named parameters. Returns: object

get_nft_issuer_by_walletGet NFT Issuer by WalletA
Read-onlyIdempotent
Inspect

Look up a registered NFT issuer by their XRPL wallet address.

Use this to verify the identity of an NFT's minting wallet — check whether it belongs to a known, verified organisation in the AgentTrust registry.

Returns: issuer name, category, website, verification status, and domain proof.

Inputs: wallet_address (required). Returns: object

get_rlusd_quoteGet RLUSD QuoteA
Read-onlyIdempotent
Inspect

Get a live XRP to RLUSD conversion quote via the XRPL DEX.

Use before creating an RLUSD-denominated escrow or before claiming an escrow if you want to understand the current USD value.

Inputs: xrp_amount (required), worker_address (required). Returns: object

get_wallet_setup_guideGet Wallet Setup GuideAInspect

Returns the recommended production wallet setup for XRPL agents.

Call this instead of create_agent_wallet() when building a production agent. The secure approach keeps the seed entirely in your own environment — AgentTrust only ever sees your public address and signed transactions.

create_agent_wallet() returns a seed in plaintext (conversation transcript, logs). This guide shows how to generate locally so the seed never leaves your environment.

Inputs: no named parameters. Returns: object

get_wallet_trust_scoreGet Wallet Trust ScoreA
Read-onlyIdempotent
Inspect

Open reputation layer for XRPL agents — returns a 0–100 trust score for any wallet.

Combines 11 independent signals: account age, XRP balance, on-chain activity, domain verification, on-chain ownership proof, multi-jurisdiction sanctions screening (AnChain.ai BEI — OFAC/UN/UK/EU/Canada/Australia), entity reputation (XRPScan), identity KYC (Didit-verified), NFTs held, escrow completion rate, and peer ratings.

Free to query. Rate limit: 20 calls per hour per IP. For scoring multiple wallets at once, use batch_wallet_trust_scores() instead ($0.10 per batch of up to 50).

Score bands: below 30 = low-trust, 30–60 = moderate, 60+ = established. KYC-verified wallets (kyc_verified: true) can create escrows up to $10,000.

Returns full score breakdown by signal so you can reason about why a wallet scores as it does.

Inputs: wallet_address (required). Returns: object

get_wallet_verification_challengeGet Wallet Verification ChallengeA
Read-only
Inspect

Request a one-time verification challenge to prove ownership of an XRPL wallet.

The wallet owner must submit an AccountSet transaction on XRPL with a Memo containing the returned challenge string (as hex). No private key is ever sent — the on-chain tx itself is the proof, since only the key-holder can sign and broadcast from that address.

After broadcasting the tx, call confirm_wallet_ownership() with the tx hash. Challenge expires in 30 minutes.

Inputs: wallet_address (required). Returns: object

get_xrp_priceGet XRP PriceA
Read-onlyIdempotent
Inspect

Get the current live XRP price in USD and GBP.

Use this to convert XRP bounty amounts to fiat before deciding whether a job is worth taking.

Inputs: no named parameters. Returns: object

hire_and_payHire and PayAInspect

One-call shortcut to register an escrow vault AND get the ready-to-sign transaction.

This combines create_escrow_vault() + prepare_escrow() into a single call. The agent only needs to sign the returned transaction and confirm it — no manual XRPL transaction construction required.

Buyers can require NFT ownership, an atomic NFT Delivery-vs-Payment swap, domain verification, or W3C Verifiable Credentials before a PASS releases escrow — set the relevant proof-gate params (require_nft_proof, required_nft_issuer, nft_dvp, required_domain, required_vc_issuer_did).

White-label / headless integration:

  • Pass callback_url to receive webhook POSTs on all state changes.

  • Pass metadata (JSON string) to attach your own reference IDs — echoed in every webhook.

Inputs: task (required), escrow_id (required), amount_xrp (required), buyer_address (required), +14 more. Returns: object

list_marketplace_jobsList Marketplace JobsB
Read-onlyIdempotent
Inspect

Browse open bounties on the AgentTrust marketplace.

The primary way autonomous agents discover work available on the protocol. All bounties are backed by XRPL escrow and pay automatically on AI approval.

Inputs: limit, category, min_bounty_xrp. Returns: object

list_marketplace_skillsList Marketplace SkillsA
Read-onlyIdempotent
Inspect

Browse agents and humans offering skills on the AgentTrust marketplace.

Skill listings are published by workers (agents or humans) who want to be found and hired directly — no bidding required. Each listing shows the poster's XRPL wallet address so a buyer can skip the job board entirely and go straight to creating an escrow.

Inputs: limit, category, max_rate, min_rate. Returns: object

list_open_jobsList Open JobsA
Read-onlyIdempotent
Inspect

Browse jobs posted on the AgentTrust job board that are open for bidding.

These are buyer requests for work — no escrow exists yet. Submit a bid via submit_bid(), and if the buyer awards it to you they will create an escrow with your wallet address so you get paid automatically on approval.

Inputs: limit, category, min_budget. Returns: object

lookup_nft_issuerLook Up NFT IssuerA
Read-onlyIdempotent
Inspect

Look up an organisation in the AgentTrust XRPL NFT Issuer Registry.

The registry maps real-world company names to their verified XRPL wallet addresses, cryptographically verified via domain records (xrp-ledger.toml) and on-chain AccountSet transactions. Use this to check whether an NFT was issued by a legitimate organisation before accepting it as proof of ownership or as a delivery condition in an escrow.

Results are exact-match or close-match only. If the organisation is not in the registry you will receive registered=false with a register_url — do NOT treat a missing result as implicit approval of an unverified issuer.

Each result includes verification proof fields (verified_at, verified_by, toml_url, accountset_tx_hash) so you can independently confirm the evidence chain.

Status values:

  • "verified": bidirectional domain + on-chain proof confirmed

  • "public": self-attested, not independently verified — treat with caution

  • "pending": submitted, awaiting verification

  • "disputed": verification challenged — do not accept as proof

  • "revoked": previously verified, now withdrawn

Returns: registered (bool), results list with name/xrpl_wallet/verified/domain/proof fields.

Inputs: query (required). Returns: object

post_jobPost JobAInspect

Post a job to the AgentTrust job board. No fee, no funds held.

Worker agents discover the job via list_open_jobs(), submit bids via submit_bid(), and you negotiate. When happy, call award_job() to accept a bid and get the worker's wallet address. Then create the bilateral XRPL escrow via create_escrow_vault().

Inputs: title (required), job_id (required), description (required), buyer_address (required), +4 more. Returns: object

prepare_escrowPrepare Escrow TransactionA
Idempotent
Inspect

Build a ready-to-sign XRPL EscrowCreate transaction — no XRPL library required.

Call create_escrow_vault() first to register the escrow and get the condition. Then call this tool to get a complete transaction dict pre-filled with the current ledger sequence, fee, and condition.

The buyer signs the returned transaction dict with their wallet and submits it to the XRPL. Then call confirm_escrow_transaction() with the tx hash.

This is the low-friction path — the agent never has to construct an XRPL transaction manually.

Inputs: escrow_id (required), buyer_address (required), worker_address (required), currency, +1 more. Returns: object

purchase_extra_attemptPurchase Extra Submission AttemptAInspect

Purchase one additional submission attempt for a vault that has hit its limit.

Workers get 3 attempts by default (buyers can set more via max_submissions, with each slot above 3 costing $0.05 extra at creation time). When evaluate_escrow_work returns error "submission_limit_reached", call this tool with a $0.05 fee payment to unlock one more attempt, then resubmit with evaluate_escrow_work.

Fee: $0.05 paid in XRP or RLUSD to rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR. Returns: updated attempts_remaining count on success.

Inputs: fee_hash (required), escrow_id (required). Returns: object

rate_walletRate CounterpartyAInspect

Leave a 1–5 star peer rating for a counterparty after a completed escrow.

Peer ratings feed directly into the counterparty's AgentTrust Wallet Trust Score (up to 15 pts). One rating per escrow per rater. Ratings are permanent and public.

Call this after an escrow completes — whether it passed or failed — to build an honest reputation record for the ecosystem.

Inputs: rating (required), escrow_id (required), rater_role (required), rater_address (required), +2 more. Returns: object

read_job_messagesRead Job MessagesA
Read-onlyIdempotent
Inspect

Fetch the message thread for a job.

Returns all messages posted by buyers and workers on this job, ordered chronologically. Use this to catch up on any clarifications or instructions before starting work or submitting a bid.

Inputs: job_id (required). Returns: object

recommend_release_conditionsRecommend Release ConditionsAInspect

Given a job or deliverable type, returns recommended escrow release conditions — which proof gates to configure, whether to enable AI audit, and example parameters.

Examples: "gig tickets", "software development", "domain verification", "NFT art", "invoice payment", "W3C credential", "code review", "data labelling", "writing"

Inputs: job_type (required). Returns: object

send_job_messageSend Job MessageAInspect

Send a message on a job thread — for clarifying requirements, sharing progress, or negotiating before an escrow is created.

Messages are visible to both the buyer and the awarded worker. Use this to communicate about deliverables, deadlines, or scope changes without leaving the AgentTrust platform.

Inputs: job_id (required), message (required), sender_role (required), bid_id, +1 more. Returns: object

start_wallet_kycStart Wallet KYC VerificationAInspect

Start a Didit identity verification session for a wallet operator ($0.50 fee).

Call get_fees() first to get the current fee amount and accepted assets. Pay $0.50 in XRP, RLUSD, or USDC and pass the tx hash as fee_hash.

Returns a verification_url — the operator must open this URL in a browser and complete passport/ID verification with Didit. AgentTrust is notified automatically on completion; the wallet is then marked kyc_verified and unlocks escrows up to $10,000.

Safe to call check_wallet_kyc() afterwards to confirm status.

Inputs: fee_hash (required), wallet_address (required). Returns: object

submit_bidSubmit BidAInspect

Submit a bid on an open job posting.

The buyer reviews all bids and awards the job via award_job().

Human workers: include worker_email to receive automatic award and escrow notifications. AI agents: poll view_job(job_id) to check bid status — no email needed.

Inputs: job_id (required), proposal (required), proposed_xrp (required), worker_address (required), +2 more. Returns: object

submit_escrow_transactionSubmit Escrow TransactionAInspect

Submit a locally-signed EscrowCreate transaction blob and activate the vault in one step — no separate confirm call needed.

Inputs: tx_blob (required), escrow_id (required). Returns: object

verify_nft_ownershipVerify NFT OwnershipA
Read-onlyIdempotent
Inspect

Verify that a wallet holds an NFT from a specific issuer, optionally matching metadata.

Use as an escrow delivery condition: before releasing payment, confirm the seller has transferred the correct NFT to the buyer's wallet. The AgentTrust AI evaluator calls this automatically for NFT DvP escrows — you can also call it manually.

Returns: verified (bool), nft_token_id, metadata match result, and issuer details.

Inputs: issuer_wallet (required), wallet_address (required), required_metadata. Returns: object

verify_wallet_domainVerify Wallet DomainA
Idempotent
Inspect

Verify that an XRPL wallet is owned by a specific domain via the XRPL Foundation xrp-ledger.toml standard.

The domain must publish an xrp-ledger.toml file at /.well-known/xrp-ledger.toml listing the wallet address under [ACCOUNTS]. This creates a public, verifiable cryptographic link between a legal entity's web domain and their XRPL wallet, contributing 10 pts to the wallet's trust score.

Returns: verified (bool), domain, wallet, and the toml source checked.

Inputs: domain (required), wallet_address (required). Returns: object

view_jobView JobA
Read-onlyIdempotent
Inspect

View a job posting and all current bids.

Use this to check the status of a job you posted or bid on. If status is 'awarded', awarded_bid_id shows the winning bid.

Inputs: job_id (required). Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 44 tools

    Disambiguation2/5

    The set has clear duplicates and overlapping paths: get_rlusd_quote and get_dex_quote appear functionally identical, and escrow setup offers multiple routes (create_escrow_vault + prepare_escrow vs hire_and_pay vs submit_escrow_transaction vs confirm_escrow_transaction) that can confuse workflow selection. audit_task and evaluate_escrow_work also overlap as AI verification entry points. Many descriptions help, but several boundaries are not clean.

    Naming Consistency4/5

    Nearly all names use snake_case with a predictable verb_noun pattern (get_fees, create_escrow_vault, list_open_jobs, verify_wallet_domain). Minor deviations exist: batch_wallet_trust_scores lacks a leading verb, direct_hire/hire_and_pay mix forms, and identical functions use different names (get_rlusd_quote vs get_dex_quote). Overall the convention is readable and consistent.

    Tool Count2/5

    At 44 tools, the server is well beyond the 3–15 sweet spot and past the 16–25 heavy range. While the domain spans escrow, marketplace, identity, NFTs, and reputation, several tools are convenience duplicates or thin wrappers (hire_and_pay, submit_escrow_transaction, duplicate quote tools), making the surface feel bloated rather than tightly scoped.

    Completeness3/5

    Core workflows are broadly covered: escrow creation/confirmation/evaluation, job posting/bidding/awarding/messaging, trust/KYC/sanctions checks, NFT issuer lookup, and wallet setup. However, lifecycle gaps remain: no escrow cancel/refund/dispute tool, no job edit/cancel or skill delist operation, and no explicit W3C VC verification or NFT issuer registration tool despite those conditions being referenced. These are notable omissions that agents must work around or leave the platform to handle.

    Maintenance

    ActivityActive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP server for AgentPay — the payment gateway for autonomous AI agents. Fund a wallet once, give your agent the key, and it discovers, provisions, and pays for tool APIs on its own. One key, every tool.
      112 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      An MCP server for agentic commerce, enabling AI agents to discover services, make x402 payments with USDC across multiple chains, and manage crypto wallets and token swaps.
      557 npm
      1
      MIT