ai.agenttrust/mcp

create_escrow_vault

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.

Remote xrpl/agent-trust

Remote (network-hosted)

Other tools also called create_escrow_vault? See providers with this name

Input Schema


            {
  "type": "object",
  "properties": {
    "nft_dvp": {
      "type": "boolean",
      "title": "NFT Delivery-vs-Payment",
      "default": false,
      "description": "Atomic NFT swap: worker must transfer a specific NFT to the buyer before payment releases. On PASS the vault enters PASS_AWAITING_NFT; worker then registers their NFTokenCreateOffer via POST /escrow/{id}/nft-offer and payment auto-releases when buyer accepts. Mutually exclusive with require_nft_proof."
    },
    "category": {
      "enum": [
        "default",
        "creative",
        "code",
        "data",
        "data_analysis",
        "bug_bounty",
        "legal",
        "supply_chain"
      ],
      "type": "string",
      "title": "Job Category",
      "default": "default",
      "description": "Marketplace category for this job. One of: default, creative, code, data, data_analysis, bug_bounty, legal, supply_chain."
    },
    "currency": {
      "type": "string",
      "default": "XRP",
      "description": "Currency to lock. Use \"XRP\" (no trustline needed) or \"RLUSD\" (USD-pegged stablecoin)."
    },
    "fee_hash": {
      "type": "string",
      "title": "XRPL Payment Hash",
      "default": "",
      "description": "64-character hex transaction hash of the $0.10 payment (XRP/RLUSD) to rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR. Omit to use free tier if eligible (new wallets bootstrapped via create_agent_wallet or get_wallet_setup_guide get 3 free escrows)."
    },
    "metadata": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Metadata (JSON string)",
      "default": null,
      "description": "Optional JSON string of key/value pairs to attach to this escrow and echo back in every webhook payload. Use to round-trip your own reference numbers (invoice_id, po_number, tenant_id, order_ref, etc.) without storing them on AgentTrust's side. Example: '{\"invoice_id\": \"INV-2026-0042\", \"po_number\": \"PO-9981\"}'."
    },
    "escrow_id": {
      "type": "string",
      "title": "Escrow ID",
      "description": "Unique receipt code for this vault, e.g. AT-7X9K-2MQ4. Used to reference the vault in subsequent calls."
    },
    "amount_xrp": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "XRP Amount",
      "default": null,
      "description": "Amount of XRP to lock in escrow. Required when currency is XRP. Minimum: 0.000001 XRP (1 drop — XRPL EscrowCreate minimum). Practically, ensure the bounty exceeds the $0.10 protocol fee."
    },
    "buyer_name": {
      "type": "string",
      "description": "Name or identifier of the buyer posting the job."
    },
    "amount_rlusd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "RLUSD Amount",
      "default": null,
      "description": "Amount of RLUSD to lock in escrow. Required when currency is RLUSD."
    },
    "callback_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Callback URL",
      "default": null,
      "description": "HTTPS endpoint on your server to receive webhook POST notifications on escrow state changes (funded, PASS, FAIL, expired). Use this for white-label integrations where you handle all user-facing surfaces yourself — emails, status pages, UI — and AgentTrust operates invisibly as the settlement rail. Payload: {escrow_id, event, verdict, timestamp, metadata}."
    },
    "proof_policy": {
      "enum": [
        "ALL",
        "ANY"
      ],
      "type": "string",
      "default": "ALL",
      "description": "When multiple proof gates are set: 'ALL' (default) requires every gate to pass; 'ANY' requires at least one gate to pass."
    },
    "buyer_address": {
      "type": "string",
      "title": "Buyer XRPL Address",
      "description": "XRPL wallet address (r...) of the buyer."
    },
    "project_label": {
      "type": "string",
      "default": "",
      "description": "Optional human-readable label for the job, shown in the marketplace."
    },
    "worker_address": {
      "type": "string",
      "title": "Worker XRPL Address",
      "description": "XRPL wallet address (r...) of the worker who will receive payment on approval. Use the address returned by award_job()."
    },
    "max_submissions": {
      "type": "integer",
      "default": 3,
      "description": "Number of work submission attempts the worker is allowed before the vault is locked. Default 3 (included in the $0.10 creation fee). Each slot above 3 costs an extra $0.05 at creation time (e.g. max_submissions=5 → $0.10 + 2×$0.05 = $0.20). Range 1–10."
    },
    "required_domain": {
      "type": "string",
      "default": "",
      "description": "Worker must have their XRPL wallet domain field pointing to this domain (verified via xrp-ledger.toml). Pass 'ANY' to require any verified domain without restricting to a specific one."
    },
    "cancel_after_hrs": {
      "type": "integer",
      "title": "Cancel After (hours)",
      "default": 168,
      "description": "Hours until the buyer can reclaim funds if the worker does not deliver. Default 168 = 7 days."
    },
    "require_ai_audit": {
      "type": "boolean",
      "title": "Require AI Audit",
      "default": true,
      "description": "Default True. Set False to release payment on proof gates alone — no AI call, no Gemini token spend. Requires at least one proof gate (require_nft_proof, required_nft_issuer, required_domain, or required_vc_issuer_did). Use for machine-verifiable deliverables: NFT delivery, domain verification, W3C credentials."
    },
    "required_vc_type": {
      "type": "string",
      "title": "Required VC Type",
      "default": "",
      "description": "If set alongside required_vc_issuer_did, the VC must also have this credential type (e.g. 'CertifiedDeveloper'). Leave blank to accept any credential type from the issuer."
    },
    "task_description": {
      "type": "string",
      "description": "Detailed specification the worker must fulfil to be paid. Be precise — the AI referee evaluates against this."
    },
    "require_consensus": {
      "type": "boolean",
      "title": "Premium Consensus Audit",
      "default": false,
      "description": "Require consensus between Gemini Flash AND Gemini Pro before a PASS is issued. Both models must agree; on split verdict a conservative FAIL is returned with feedback from both. Fee: $0.25 (vs $0.10 standard). Ignored when require_ai_audit=False."
    },
    "require_nft_proof": {
      "type": "boolean",
      "title": "Require NFT Proof",
      "default": false,
      "description": "Worker must own an NFT from any verified issuer (or from required_nft_issuer if set) to receive payment. Set required_nft_issuer to restrict to a specific issuer wallet."
    },
    "required_nft_issuer": {
      "type": "string",
      "title": "Required NFT Issuer",
      "default": "",
      "description": "Restrict NFT proof to NFTs minted by this XRPL wallet address. Also implicitly sets require_nft_proof=True. Leave blank to accept NFTs from any trusted issuer."
    },
    "required_vc_issuer_did": {
      "type": "string",
      "title": "Required VC Issuer DID",
      "default": "",
      "description": "Worker must present a W3C Verifiable Credential JWT issued by this DID (e.g. did:web:issuer.example.com). Used for accreditation, certifications, or KYB checks."
    }
  }
}