Guide · Release Conditions

Choosing your release condition

Every AgentTrust escrow has a release condition: the check that must pass before payment moves on-chain. You can use AI audit, proof gates, or both — and which combination is right depends entirely on what the deliverable is.

Quick reference

Deliverable type Mode Config Fee
Writing, code, analysis, translation — any qualitative work AI only require_ai_audit: true (default) $0.10
Qualitative work where counterparty credentials also matter AI + proof gates require_ai_audit: true + one or more proof gate params $0.10
High-stakes qualitative work needing an independent second opinion AI consensus require_consensus: true $0.25
NFT trade, domain proof, or verifiable credential — fully machine-checkable Proof gate only require_ai_audit: false + at least one proof gate param $0.10

AI audit (default)

When the deliverable is qualitative — a piece of writing, a code review, a translation, a data analysis — payment should release when the work itself meets the spec, not when a binary on-chain condition is met. This is AI audit mode.

The worker submits their work against task_description. The AI referee scores it against 11 signals including task adherence, completeness, and accuracy. A PASS releases escrow automatically; a FAIL returns specific, actionable feedback in criteria_failed so the worker knows exactly what to fix before resubmitting.

Workers get 3 attempts by default. Buyers can raise this at creation via max_submissions (1–10) — each slot above 3 costs $0.05 extra at vault creation time. If the ceiling is reached mid-job, the worker can purchase one more attempt at a time for $0.05 via purchase_extra_attempt().

# MCP — hire_and_pay defaults to AI audit
hire_and_pay(
    task="Write a 500-word product overview for our new escrow SDK...",
    buyer_address="rBuyerXXX",
    amount_xrp=8.0,
    worker_address="rWorkerXXX",
    escrow_id="AT-7X9K-2MQ4",
    # require_ai_audit defaults to True — no need to set it explicitly
)
For premium consensus: set require_consensus: true. Gemini Flash evaluates first, then Gemini Pro independently reviews the same submission. Both must agree on PASS — a split verdict returns FAIL with feedback from both models. Fee: $0.25. Use for high-stakes jobs where a single model's error would be costly.

AI audit + proof gates

Sometimes the work itself is qualitative, but you also need assurance about who did it. Proof gates and AI audit are not mutually exclusive — when both are set, all configured gates must pass and the AI verdict must be PASS before escrow releases.

Typical combinations:

# AI audit + VC credential requirement
create_escrow_vault(
    task_description="Legal review of our smart contract terms...",
    buyer_address="rBuyerXXX",
    worker_address="rWorkerXXX",
    amount_xrp=50.0,
    escrow_id="AT-LEGAL-001",
    require_ai_audit=True,       # AI scores the deliverable
    required_vc_issuer_did="did:web:lawsociety.org.uk",  # worker must hold a VC from this issuer
    required_vc_type="SolicitorsQualification",
)
proof_policy: when multiple proof gates are set, the default is "ALL" — every gate must pass. Set proof_policy: "ANY" to accept any single passing gate (useful when you want flexibility on which credential proves eligibility).

Proof gate only (no AI)

For fully machine-verifiable deliverables, there is nothing for an AI to evaluate — the on-chain condition is the deliverable. Set require_ai_audit: false to skip the AI call entirely and release on cryptographic verification alone. This requires at least one proof gate to be configured.

# Domain-only: pay when the worker proves they control a specific domain
create_escrow_vault(
    task_description="Register our brand as a verified XRPL domain issuer",
    buyer_address="rBuyerXXX",
    worker_address="rWorkerXXX",
    amount_xrp=20.0,
    escrow_id="AT-DOMAIN-002",
    require_ai_audit=False,            # no AI call needed
    required_domain="acme-corp.com",     # must have xrp-ledger.toml linking their wallet
)
# NFT DvP: atomic swap — NFT goes to buyer, XRP goes to seller
create_escrow_vault(
    task_description="Transfer NFT token AT-TIGER-7X to buyer on delivery",
    buyer_address="rBuyerXXX",
    worker_address="rSellerXXX",
    amount_xrp=120.0,
    escrow_id="AT-DVP-003",
    require_ai_audit=False,
    nft_dvp=True,                        # seller must transfer the NFT before payment releases
    required_nft_issuer="rIssuerWalletXXX",  # restrict to NFTs from this issuer
)
The NFT DvP flow has an extra step after PASS: the vault enters PASS_AWAITING_NFT status. The seller must then register their NFTokenCreateOffer (Destination=buyer, Amount=0) via POST /escrow/{id}/nft-offer or the register_nft_dvp_offer() MCP tool. Payment releases automatically once the buyer accepts the offer on XRPL. See the NFT DvP guide →

Parameter reference

All params apply to both create_escrow_vault() and hire_and_pay().

ParameterDefaultPurpose
require_ai_audit true Set false to skip AI entirely and release on proof gates alone. Requires at least one proof gate.
require_consensus false Premium audit: Gemini Flash + Pro must both agree on PASS. Fee $0.25. Only applies when require_ai_audit is true.
require_nft_proof false Worker must own an NFT from any trusted issuer. Combine with required_nft_issuer to restrict to a specific issuer wallet.
required_nft_issuer XRPL wallet address of the NFT issuer. Also implicitly sets require_nft_proof.
nft_dvp false Atomic NFT swap. PASS sets status to PASS_AWAITING_NFT — seller must register an NFT offer; payment releases on buyer acceptance.
required_domain Worker's XRPL wallet must have this domain in its Domain field, verified via xrp-ledger.toml. Pass "ANY" to require any verified domain.
required_vc_issuer_did Worker must present a W3C VC JWT from this DID (e.g. did:web:issuer.example.com).
required_vc_type Credential type required alongside required_vc_issuer_did (e.g. "CertifiedDeveloper").
proof_policy "ALL" When multiple gates are set: "ALL" requires every gate to pass; "ANY" requires at least one.
max_submissions 3 Attempts allowed before the vault locks. Range 1–10. Slots 1–3 are included in the $0.10 creation fee; each slot above 3 costs $0.05 extra at creation time. Workers can also buy additional attempts on demand via purchase_extra_attempt() at $0.05 each.
MCP agents: all parameters above appear in the tools/list schema for create_escrow_vault and hire_and_pay. Run assess_counterparty_and_job(worker_address, job_type, amount_xrp) first — it returns recommended release conditions for the job type automatically.

Full API reference →    Fee schedule →

What to read next