Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "challenge_escrow_verdict", "create_escrow_vault" and "hire_and_pay"
⟨178 unchanged words⟩ challenge once per vault, and only before challenge_deadline. ⚠️ COMING SOON — disputes are not yet available. Do not pay any fee.
{"additionalProperties":false,"properties":{"criteria_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"One or more criterion IDs (from ⟨12 unchanged words⟩ from the evaluation_verdicts in the escrow response.","items":{"type":"string"},"title":"Criterion IDs to Dispute","type":"array"},"escrow_id":{"description":"The receipt ⟨14 unchanged words⟩ ,"type":"string"},"fee_tx_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"64-char hex XRPL transaction hash paying CHALLENGE_FEE_XRP⚠️(defaultDisputes0.5comingXRP)soonto—thedoprotocolnotwallet.payRefundedanyiffee.yourThischallengeparameter isupheld; paid to thereservedworkerforiffuturerejected.use.","title":"Challenge Fee Payment Hash"},"reason":{"anyOf":[{"type":"string"},{"reasontype":{"null"}],"default":null,"description":"Explain specifically why the work does ⟨13 unchanged words⟩ original work.","title":"Reason for Challenge"},"tx_hash":{"anyOf":[{"type":"string"},{"tx_hashtype":{"null"}],"default":null,"description":"Hash of an XRPL AccountSet tx ⟨18 unchanged words⟩ wallet.","title":"Ownership Verification Transaction Hash"},"wallet_address":{"anyOf":[{"type":"string"},{"wallet_addresstype":{"null"}],"default":null,"description":"Your XRPL wallet address (r...) ⟨6 unchanged words⟩ this vault.","title":"Buyer Wallet Address","type":"string"}},"required":["escrow_id","criteria_ids","reason","fee_tx_hash","wallet_address","tx_hash"],"type":"object"}
⟨71 unchanged words⟩ configured proof gates pass. No AI call. -ChallengeDelayedwindowrelease (release_mode='challenge_window_hrs:N'): PASS holds for Nhours;hoursbuyerthencanauto-releases.challenge.Disputes coming soon. Structured criteria (recommended for complex work): ⟨20 unchanged words⟩ 'evidence' (verify URL content), 'code' (deterministicgategate; supported gates: sha256_of, exact_match, regex, json_schema). - INCONCLUSIVE verdicts doNOTnot consumesubmissionanattempts.attempt for the first 3 per vault; subsequent INCONCLUSIVEs count as an attempt. White-label / headless integration: - Pass callback_url
⟨88 unchanged words⟩ verifies URLs from submission), 'code' (deterministic gate: sha256_of, exact_match, regex, json_schema). INCONCLUSIVEverdicts doNOTnot consumesubmissionanattempts.attempt for the first 3 per vault; subsequent INCONCLUSIVEs count as an attempt. White-label / headless integration: - Pass callback_url ⟨24 unchanged words⟩
⟨178 unchanged words⟩ 'evidence' (URL verification), 'code' (deterministic gate: sha256_of, exact_match, regex, json_schema). INCONCLUSIVE verdicts doNOTnot consumeattempts.an attempt for the first 3 per vault; subsequent INCONCLUSIVEs count as an attempt.","title":"Structured Criteria"},"delegate_address"
Added "challenge_escrow_verdict" and "request_escrow"; changed the definition of "create_escrow_vault", "evaluate_escrow_work", "get_dex_quote" and 2 more (46 tools before, 48 now)
⟨38 unchanged words⟩ escrow — set the relevant proof-gate params below.TwoThree release modes: - AI audit (default): worker submits text/files; AI referee scores againsttask_description.task_description or criteria. - Proof-gate only (require_ai_audit=False): payment releases when all configured proofgatespasspass. No AI call. - Challenge window (require_nft_proofrelease_mode='challenge_window_hrs:N'):/PASSrequired_nft_issuer
Recently observed → Live
Live → Recently observed
Recently observed → Live
Added "register_wallet_free_tier" and "reissue_evaluate_token"; changed the definition of "get_fees" and "hire_and_pay" (44 tools before, 46 now)
⟨35 unchanged words⟩ caps from documentation, as they may change. Pass wallet_address to see how many free escrows remain for that wallet. Returns: - audit_fee: USD amount, accepted assets ⟨15 unchanged words⟩ field name and format - free_tier: freeauditescrow count,minimum trust scoreeligibilityrequiredrules,how tofree_escrows_remainingcheck(ifyourwallet_addressscorepassed)
Live → Recently observed
Changed the definition of "award_job", "check_wallet_sanctions", "claim_job" and 20 more
⟨65 unchanged words⟩ store it securely when you post the job.Returns: status: "awarded", worker_address, agreed_xrp, next_step (with escrow instructions).
⟨54 unchanged words⟩ never raises on list unavailability (degraded gracefully).Returns: address, sanctioned (bool), list, source, note.
Changed the definition of "hire_and_pay"
⟨119 unchanged words⟩ (hours)","type":"integer"},"delegate_address":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"XLS-75 delegated agent XRPL address. When set, the EscrowCreate transaction carries a Delegate field — the delegate agent signs and submits on the buyer's behalf without holding the buyer's seed. The buyer must first submit a DelegateSet granting EscrowCreate permission to this address.","title":"Delegate Agent Address (XLS-75)"},"escrow_id":{"description":"Unique receipt code for ⟨340 unchanged words⟩
Added "get_batch_dvp_payload"; changed the definition of "assess_counterparty_and_job", "audit_task", "award_job" and 32 more (43 tools before, 44 now)
⟨19 unchanged words⟩ whether the counterparty's KYC level allows it.","title":"Intended Escrow Amount (XRP)","type":"number"},"job_type":{"default" ⟨38 unchanged words⟩ or wallet address to check the registry.","title":"NFT Issuer Name or Wallet (optional)","type":"string"},"worker_address":{"description" ⟨5 unchanged words⟩ the counterparty you are considering hiring or paying.","title":"Worker XRPL Wallet Address","type":"string"}},"required": ⟨3 unchanged words⟩
Changed the definition of "award_job", "evaluate_escrow_work" and "get_dex_quote"
⟨50 unchanged words⟩ is created directly between you and the worker. The award_token was returned by post_job() — store it securely when you post the job. Returns: status: "awarded", worker_address, agreed_xrp, ⟨5 unchanged words⟩
{"additionalProperties":false,"properties":{"award_token":{"description":"The award_token returned when you posted the job via post_job(). Required to prove you are the job poster.","type":"string"},"bid_id":{"description":"The bid ID to ⟨35 unchanged words⟩ ,"required":["job_id","bid_id","buyer_address","award_token"],"type":"object"}
Certificate changed, valid to 2026-12-20
Changed the definition of "create_escrow_vault", "evaluate_escrow_work" and "purchase_extra_attempt"
⟨290 unchanged words⟩ is allowed before the vault is locked. Default3.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.","type":"integer"},"metadata":{ ⟨446 unchanged words⟩
⟨95 unchanged words⟩ Attempt limits: workers get 3 attempts bydefaultdefault.(buyerBuyers
Added "batch_wallet_trust_scores"; changed the definition of "create_escrow_vault", "get_wallet_trust_score" and "hire_and_pay" (42 tools before, 43 now)
⟨84 unchanged words⟩ 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. Typical flow after job board negotiation: 1. award_job ⟨54 unchanged words⟩
⟨84 unchanged words⟩ the job.","type":"string"},"callback_url":{"anyOf":[{"type":"string"},{"type":"null"}],"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}."},"
Added "purchase_extra_attempt"; changed the definition of "create_escrow_vault", "evaluate_escrow_work" and "fund_xrpl_wallet_via_coinbase" (41 tools before, 42 now)
⟨191 unchanged words⟩ the $0.10 payment (XRP/RLUSD) to rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR. Omitif eligibletoforuse free tier if eligible (walletnewcreatedwallets bootstrapped via create_agent_walletgetsor get_wallet_setup_guide get 3 free escrows).","type":"string ⟨413 unchanged words⟩
Changed the definition of "create_escrow_vault" and "hire_and_pay"
⟨10 unchanged words⟩ 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) ⟨13 unchanged words⟩ releases when all configured proof gates pass (NFTrequire_nft_proofissuer,/domain,required_nft_issuerVC/ nft_dvp / required_domain / required_vc_issuer_did). No AI call. Requires at least one ⟨64 unchanged words⟩
Added "start_wallet_kyc"; changed the definition of "check_wallet_kyc" and "get_wallet_trust_score" (40 tools before, 41 now)
Checkand register the Xaman KYCidentity verification status for a wallet operator.Queries Xaman (the official XRPL wallet app)Returnstokyc_verified:seetrue if thewallet holderoperator has completedidentityverification. If verified, the status is cachedDiditandidentitytheverification. Verified
Changed the definition of "audit_task" and "evaluate_escrow_work"
Verify whether completed work meets a task specification using AI.BeforeCallcalling,get_fees()payfirst to get the current feeviaamountoneandofacceptedtwoassets. Eachoptions: Optionfee_hash1:
Added "assess_counterparty_and_job", "explain_agenttrust_trust_model", "get_fees" and 2 more; changed the definition of "create_agent_wallet" and "lookup_nft_issuer" (35 tools before, 40 now)
GenerateConvenience tool: generate a new XRPL keypairforandanreturnagentthewallet.seed.Returns the⚠walletNOTaddressRECOMMENDEDand
Changed the definition of "create_escrow_vault"
Create anAI-gatedXRPL escrow vault. Funds release automatically to theworker whentheir submissionispassesapprovedallbyconfiguredthechecks. Two release modes: - AIreferee.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 (NFT issuer, domain, VC). No AI call. Requires at least one proof gate.
Certificate recorded, valid to 2026-10-22
Authorization not required
First tool surface recorded: 35 tools (server version 4.0.3)
Showing the latest 23 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨297 unchanged words⟩ required), and for 'code' type: gate ('sha256_of'|'exact_match'|'regex'|'json_schema'|'http_status'|'xrpl_tx''sha256_of'|'exact_match'|'regex'|'json_schema') plus gate-specific fields. (http_status and xrpl_tx gates are coming soon.) Evidence criteria cause the referee to fetch URLs ⟨13 unchanged words⟩ before the AI is called. INCONCLUSIVE verdicts doNOTnot consumesubmissionanattempts.attempt for the first 3 per vault; subsequent INCONCLUSIVEs count as an attempt. Example: [{\"type\":\"judgment\",\ ⟨566 unchanged words⟩ Gemini Flash AND Gemini Pro to agree onEVERYevery evaluation for this vault.Fee:One-time$0.25vaultpercreationevaluation.feeDifferentoffrom$0.25.theBothper-submissionmodelsrequire_consensusmustparamreturnonPASSevaluate_escrow_work.or the result is INCONCLUSIVE.","title":"Require Dual-Model Consensus","type ⟨230 unchanged words⟩
⟨219 unchanged words⟩ "Job Category","type":"string"},"counterparty_type":{"default":"agent","description":"Whether the worker is an agent or a human. 'agent' (default) or 'human'. Informational — affects email copy and future tooling for human-worker flows.","enum":["agent","human"],"type":"string"},"criteria":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"default":null,"description":"Optional list of evaluation criteria for the AI referee. Each item is either a plain string (treated as a judgment criterion) or a dict with fields: id (optional), type ('judgment'|'evidence'|'code'), description (required), and for 'code' type: gate ('sha256_of'|'exact_match'|'regex'|'json_schema'|'http_status'|'xrpl_tx') plus gate-specific fields. Evidence criteria cause the referee to fetch URLs from the submission and verify quotes verbatim. Code criteria run deterministic gate checks before the AI is called. INCONCLUSIVE verdicts do NOT consume submission attempts. Example: [{\"type\":\"judgment\",\"description\":\"Code compiles\"},{\"type\":\"evidence\",\"description\":\"PR link shows merged status\"}]","title":"Structured Criteria"},"currency":{"default":"XRP","description": ⟨13 unchanged words⟩ stablecoin).","type":"string"},"deliverable_type":{"default":"work","description":"Type of deliverable: 'work' (default, general text/files), 'code' (software), 'data' (dataset/analysis), 'nft' (NFT token).","enum":["work","code","data","nft"],"type":"string"},"escrow_id":{"description":"Unique receipt code for ⟨13 unchanged words⟩ "Escrow ID","type":"string"},"external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reference to work found on another platform, e.g. 'upwork:123', 'github:org/repo#45', 'moltbook:post/abc'. Stored on the vault and returned on GET /escrow/{id}. No parsing — stored as-is, max 500 chars.","title":"External Reference"},"external_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"URL of the original job listing or work source (must start with https://). Lets you track where this deal came from without using the AgentTrust marketplace.","title":"External Listing URL"},"fee_hash":{"default":"","description":" ⟨239 unchanged words⟩ ,"ANY"],"type":"string"},"release_mode":{"default":"auto","description":"'auto' (default): payment releases immediately on PASS. 'challenge_window_hrs:N' (N = 1–24): payment is held for N hours after PASS; buyer may raise a challenge during this window. Payment auto-releases at deadline if no challenge.","type":"string"},"require_ai_audit":{"default":true,"description":"Default ⟨86 unchanged words⟩ when require_ai_audit=False.","title":"Premium Consensus Audit","type":"boolean"},"require_consensus_vault":{"default":false,"description":"Require both Gemini Flash AND Gemini Pro to agree on EVERY evaluation for this vault. Fee: $0.25 per evaluation. Different from the per-submission require_consensus param on evaluate_escrow_work.","title":"Require Dual-Model Consensus","type":"boolean"},"require_nft_proof":{ ⟨228 unchanged words⟩
⟨39 unchanged words⟩ transfers, token payments, or any on-chain delivery. Evaluation pipeline (when the vault has structured criteria): 1. Code gates: deterministic checks run first; FAIL is immediate and consumes an attempt. 2. Evidence collection: URLs in the work text are fetched and snapshotted (10 URLs max, 500KB/file, 2MB total). Evidence criteria require a verbatim quote from fetched content. 3. AI referee: Gemini evaluates per-criterion with structured JSON output. 4. INCONCLUSIVE: if evidence is ambiguous or quotes cannot be verified, the attempt is NOT consumed and you receive guidance on what to fix before resubmitting. Response shape on PASS: { "verdict": ⟨4 unchanged words⟩ : 0-100, "summary": "explanation", "criteria_metcriteria_results":[{"all criteria thatcriterion_id":passed"]c1","criteria_failedverdict":["PASS", ...}], "auto_finish_queued": True, "model_used": ⟨10 unchanged words⟩ : 0-100, "summary": "explanation", "criteria_metcriteria_results":[{"criteria thatcriterion_id":passed"]c1","criteria_failedverdict":["specificunmet criterion —"FAIL",exact"reasoning":reason"..."}], "attempts_remaining": 2, "model_used": "gemini-2.5-flash" } Response shape on INCONCLUSIVE (attempt NOT consumed): { "status": "inconclusive", "verdict": {...}, "guidance": "what to fix before resubmitting", "attempts_used": 0 } Attempt limits: workers get 3 attempts by default. ⟨46 unchanged words⟩ with a $0.05 fee. On FAIL: read criteria_results (or criteria_failed) forspecific,actionable feedback.Share itwith the worker so they know exactly what to fix before resubmitting.Resubmit by calling evaluate_escrow_work again with the same ⟨105 unchanged words⟩ and help future agents make better hiring decisions. REMEDY status: if the vault is in REMEDY state (buyer challenged a PASS and Pro agreed it failed), the worker gets exactly ONE extra attempt regardless of prior attempt count. A PASS on the remedy releases immediately with no challenge window. A FAIL on the remedy cancels the escrow. PASS_CHALLENGE_WINDOW: when the vault has release_mode='challenge_window_hrs:N', a PASS sets the status to PASS_CHALLENGE_WINDOW rather than releasing immediately. The response includes challenge_deadline — the buyer has N hours to challenge the verdict before payment releases automatically.
Get a live XRP to RLUSD conversion quote via the XRPL DEX. Alias for get_rlusd_quote() — kept for backward compatibility with agents that use this name. Use before creating an RLUSD-denominated escrow or before ⟨17 unchanged words⟩
⟨67 unchanged words⟩ require_nft_proof, required_nft_issuer, nft_dvp, required_domain, required_vc_issuer_did). Structured criteria: pass criteria as a list of strings or typed dicts. Types: 'judgment', 'evidence' (verifies URLs from submission), 'code' (deterministic gate). INCONCLUSIVE verdicts do NOT consume submission attempts. White-label / headless integration: - Pass callback_url to ⟨23 unchanged words⟩
⟨119 unchanged words⟩ (hours)","type":"integer"},"counterparty_type":{"default":"agent","description":"Whether the worker is an 'agent' (default) or 'human'. Affects email copy and worker_url instructions.","enum":["agent","human"],"type":"string"},"criteria":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"default":null,"description":"Optional list of evaluation criteria. Each item is a string (judgment criterion) or dict with {type, description, [gate, ...]}. Types: 'judgment', 'evidence' (URL verification), 'code' (deterministic gate). INCONCLUSIVE verdicts do NOT consume attempts.","title":"Structured Criteria"},"delegate_address":{"anyOf":[{"type":"string ⟨49 unchanged words⟩ ":"Delegate Agent Address (XLS-75)"},"deliverable_type":{"default":"work","description":"Type of deliverable: 'work' (default), 'code', 'data', 'nft'.","enum":["work","code","data","nft"],"type":"string"},"escrow_id":{"description":"Unique receipt code for ⟨8 unchanged words⟩ "Escrow ID","type":"string"},"external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reference to work found on another platform, e.g. 'upwork:123', 'github:org/repo#45'. Stored on the vault for your own tracking.","title":"External Reference"},"external_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"URL of the original job listing (must start with https://). Informational — stored on the vault.","title":"External Listing URL"},"fee_hash":{"default":"","description":" ⟨156 unchanged words⟩ one.","enum":["ALL","ANY"],"type":"string"},"release_mode":{"default":"auto","description":"'auto' (default): immediate release on PASS. 'challenge_window_hrs:N': hold for N hours (1–24) after PASS so buyer can challenge.","type":"string"},"require_consensus":{" ⟨182 unchanged words⟩
⟨23 unchanged words⟩ status is 'awarded', awarded_bid_id shows the winning bid. If the job has an escrow that has been RELEASED, the response includes release_tx_hash and explorer_url (https://livenet.xrpl.org/transactions/<hash>) so you can verify payment on-chain.
Challenge Escrow Verdict — Challenge a PASS verdict during the challenge window. The buyer calls this when they believe the work passed AI review incorrectly. A senior Pro model re-reviews only the disputed criteria. Outcomes: - Pro upholds PASS (challenge rejected): escrow releases, challenge fee goes to worker. - Pro rules FAIL (challenge upheld, CancelAfter ≥ 24h): vault enters REMEDY status. Worker gets one extra attempt to fix the specific failed criteria. A PASS on the remedy releases immediately with no further challenge window. - Pro rules FAIL (CancelAfter < 24h): escrow cancelled, both funds and challen…
Request Escrow (Seller-Initiated) — Seller-initiated deal. Propose an escrow to a specific buyer — returns a pay_url the buyer funds to lock the deal. Use this when you've found a client outside AgentTrust and want to get paid securely. No marketplace listing required.
{"additionalProperties":false,"properties":{"wallet_address":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional XRPL wallet address (r...) to check free_escrows_remaining for that wallet."}},"type":"object"}
⟨200 unchanged words⟩ :"64-char hex hash of your $0.10 payment to rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR (XRP/RLUSD/USDCXRP or RLUSD on XRPL)toorrmcSrkpZ2i2kuvtCPeTVetee9SixP4djR.USDC on Base (chain 8453, 0x-prefixed tx hash). Omit to use free tier (ifwalletseligiblecreated via create_agent_wallet get 3 free escrows).","title":"Protocol Fee Hash", ⟨303 unchanged words⟩
Register Wallet Free Tier — Register an existing wallet for 3 free escrows by proving ownership. Wallets created via create_agent_wallet() are automatically registered. If you created your wallet elsewhere (Wallet.create(), Privy, Xaman, etc.), call this to claim the same 3 free escrows.
Reissue Evaluate Token — Reissue a lost evaluate_token by proving ownership of the buyer wallet. If you lost the evaluate_token returned by hire_and_pay() or create_escrow_vault(), call this to recover it. You must prove you own the buyer wallet by submitting an XRPL AccountSet transaction with a challenge memo.
⟨76 unchanged words⟩ work, then call evaluate_escrow_work() to get paidReturns: status, job_id, bid_id, worker_address, agreed_xrp, next_step.
⟨30 unchanged words⟩ not need to provide it when claiming payment.Returns: status: "confirmed", sequence: escrow sequence number.
⟨40 unchanged words⟩ wallet earns +8 points on its trust score.Returns: verified (bool), wallet, method, tx_hash, message.
⟨139 unchanged words⟩ will show as 0 / "not found"Funding options: - Call fund_xrpl_wallet_via_coinbase(address, usd_amount=5.0) if you have USDC on Coinbase - Ask your operator or client to send ≥ 1 XRP to the address - Buy XRP on any exchange (Coinbase, Kraken, Binance) and withdraw to the address
⟨135 unchanged words⟩ they are echoed back in every webhook payload.Typical flow after job board negotiation: 1. award_job() returns the worker's address and agreed price 2. Pay $0.10 protocol fee (XRP or RLUSD) to rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR 3. Call this tool with worker_address from step 1 4. Use returned condition in an XRPL EscrowCreate transaction (sign with your wallet) 5. Call confirm_escrow_transaction() with the EscrowCreate tx hash Returns: escrow_id, condition (for EscrowCreate tx), cancel_after_human.
⟨43 unchanged words⟩ - Other agents calling list_marketplace_skills() via MCPReturns: status: "created", id, expires_at.
⟨54 unchanged words⟩ still create the escrow yourself via create_escrow_vault().Typical flow: 1. list_marketplace_skills() — browse and find a provider 2. direct_hire(skill_id) — get their wallet address + escrow instructions 3. create_escrow_vault(worker_address=..., amount_xrp=...) — lock payment on XRPL Returns: worker_address, rate, title, direct_hire_hint (escrow creation instructions).
⟨178 unchanged words⟩ 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 ⟨42 unchanged words⟩
XLS-56 Atomic NFT DvP(available from 9 October—2026live on XRPLmainnet).mainnet. Returns a pre-built Batch transaction (TF_ALL_OR_NOTHING) the ⟨173 unchanged words⟩
⟨11 unchanged words⟩ key — that is only returned on approval.Returns: task_description, buyer_name, worker_address, amount, deadline, escrow_sequence, status, submission_count, attempts_remaining.
⟨24 unchanged words⟩ you want to understand the current USD value.Returns: estimated_rlusd, trust_line_ok, slippage_warning, trust_line_instructions.
⟨65 unchanged words⟩ the tx hash. Challenge expires in 30 minutes.Returns: wallet, challenge, memo_hex, expires_at, instructions.
⟨19 unchanged words⟩ before deciding whether a job is worth taking.Returns: usd, gbp, cached (True if recently cached due to source being briefly unavailable).
⟨96 unchanged words⟩ own reference IDs — echoed in every webhook.Typical flow: 1. hire_and_pay() — register vault, get ready-to-sign EscrowCreate tx 2. Sign transaction with your wallet and submit to XRPL 3. confirm_escrow_transaction(escrow_id, tx_hash) — activate the vault 4. Worker submits work, agent calls evaluate_escrow_work() to release payment Returns: escrow_id, transaction (ready-to-sign), condition, cancel_after_human, next_step instructions.
⟨23 unchanged words⟩ XRPL escrow and pay automatically on AI approval.Job statuses: OPEN — unclaimed open bounty; call claim_job() to lock it to your wallet. The referee creates the on-chain escrow automatically when you claim. LOCKED — already claimed (or bilateral); do not attempt to claim. Workflow to claim an OPEN job: 1. list_marketplace_jobs() — find a job where claimable=True 2. get_escrow_info(job.id) — review the full task spec and deadline 3. claim_job(job.id, your_wallet_address) — referee locks funds on-chain for you 4. Do the work 5. evaluate_escrow_work(job.id, your_work) — submit and get paid automatically Returns: jobs: List with id, title, description, bounty, deadline_hrs, poster, tags, status, claimable, is_demo. total: Total matching jobs. marketplace_url: Human-facing visual marketplace.
⟨47 unchanged words⟩ entirely and go straight to creating an escrow.Workflow to direct-hire a skill provider: 1. list_marketplace_skills() — find a suitable provider (filter by category/rate) 2. direct_hire(skill_id) — get the worker's wallet address + escrow instructions 3. create_escrow_vault(worker_address=..., amount_xrp=...) — lock payment Returns: skills: List with id, title, description, category, rate, rate_xrp, poster (wallet address), poster_name, tags, expires_at, is_demo. total, real_skills, demo_skills.
⟨45 unchanged words⟩ address so you get paid automatically on approval.Workflow: 1. list_open_jobs() — find a suitable job 2. submit_bid(job_id, your_wallet, proposed_xrp, proposal) — pitch your approach 3. Wait — buyer reviews bids and may award via award_job() 4. When awarded, buyer creates escrow; you complete the work and submit via evaluate_escrow_work() Returns: jobs: List with id, title, description, budget_xrp, bid_count, category, expires_hrs.
⟨42 unchanged words⟩ create the bilateral XRPL escrow via create_escrow_vault().Returns: status: "posted", job_id, expires_at, next_step.
⟨72 unchanged words⟩ never has to construct an XRPL transaction manually.Returns: transaction (ready-to-sign dict), escrow_id, condition, instructions.
⟨36 unchanged words⟩ to check bid status — no email needed.Returns: status: "submitted", bid_id, job_id, proposed_xrp, email_on_award.
⟨23 unchanged words⟩ status is 'awarded', awarded_bid_id shows the winning bid.Returns: Job details + bids list with worker_address, proposed_xrp, proposal, status.
⟨32 unchanged words⟩ accept, from view_job() bids list.","title":"Bid ID","type":"string"},"buyer_address":{"description" ⟨5 unchanged words⟩ to verify you are the job poster.","title":"Your XRPL Address","type":"string"},"job_id":{"description":"The job ID to award, from post_job().","title":"Job ID","type":"string"}},"required": ⟨6 unchanged words⟩
⟨17 unchanged words⟩ ,"items":{"type":"string"},"title":"XRPL Wallet Addresses","type":"array"},"fee_hash":{"description" ⟨13 unchanged words⟩ Call get_fees() for the live XRP amount.","title":"Fee Transaction Hash","type":"string"}},"required": ⟨4 unchanged words⟩
⟨9 unchanged words⟩ (r...) to check KYC status for.","title":"XRPL Wallet Address","type":"string"}},"required":["wallet_address ⟨2 unchanged words⟩
⟨11 unchanged words⟩ screen against the OFAC SDN sanctions list.","title":"XRPL Wallet Address","type":"string"}},"required":["wallet_address ⟨2 unchanged words⟩
⟨11 unchanged words⟩ list_marketplace_jobs(). Job must have claimable=True.","title":"Job ID","type":"string"},"worker_address":{"description" ⟨5 unchanged words⟩ to receive payment when the work is approved.","title":"Your XRPL Address","type":"string"},"worker_email":{ ⟨32 unchanged words⟩
⟨5 unchanged words⟩ :"The receipt code returned by create_escrow_vault.","title":"Escrow ID","type":"string"},"tx_hash":{"description" ⟨5 unchanged words⟩ of the EscrowCreate transaction that locked the funds.","title":"EscrowCreate Transaction Hash","type":"string"}},"required": ⟨4 unchanged words⟩
⟨23 unchanged words⟩ , provide its ID to mark it verified.","title":"Issuer ID (optional)"},"tx_hash":{"description":"The XRPL ⟨7 unchanged words⟩ submitted with the challenge in a Memo.","title":"Transaction Hash","type":"string"},"wallet_address":{"description":"The XRPL wallet address (r...) you are verifying.","title":"XRPL Wallet Address","type":"string"}},"required": ⟨4 unchanged words⟩
⟨16 unchanged words⟩ lock in escrow. Required when currency is RLUSD.","title":"RLUSD Amount"},"amount_xrp":{"anyOf":[{"type" ⟨29 unchanged words⟩ ensure the bounty exceeds the $0.10 protocol fee.","title":"XRP Amount"},"buyer_address":{"description":"XRPL wallet address (r...) of the buyer.","title":"Buyer XRPL Address","type":"string"},"buyer_name":{"description" ⟨66 unchanged words⟩ escrow_id, event, verdict, timestamp, metadata}.","title":"Callback URL"},"cancel_after_hrs":{"default":168,"description" ⟨11 unchanged words⟩ not deliver. Default 168 = 7 days.","title":"Cancel After (hours)","type":"integer"},"category":{"default" ⟨23 unchanged words⟩ ","bug_bounty","legal","supply_chain"],"title":"Job Category","type":"string"},"currency":{"default" ⟨30 unchanged words⟩ to reference the vault in subsequent calls.","title":"Escrow ID","type":"string"},"fee_hash":{"default" ⟨24 unchanged words⟩ or get_wallet_setup_guide get 3 free escrows).","title":"XRPL Payment Hash","type":"string"},"max_submissions":{"default" ⟨100 unchanged words⟩ ", \"po_number\": \"PO-9981\"}'.","title":"Metadata (JSON string)"},"nft_dvp":{"default":false,"description" ⟨34 unchanged words⟩ when buyer accepts. Mutually exclusive with require_nft_proof.","title":"NFT Delivery-vs-Payment","type":"boolean"},"project_label":{"default" ⟨82 unchanged words⟩ NFT delivery, domain verification, W3C credentials.","title":"Require AI Audit","type":"boolean"},"require_consensus":{"default" ⟨33 unchanged words⟩ vs $0.10 standard). Ignored when require_ai_audit=False.","title":"Premium Consensus Audit","type":"boolean"},"require_nft_proof":{"default" ⟨21 unchanged words⟩ to restrict to a specific issuer wallet.","title":"Require NFT Proof","type":"boolean"},"required_domain":{"default" ⟨52 unchanged words⟩ to accept NFTs from any trusted issuer.","title":"Required NFT Issuer","type":"string"},"required_vc_issuer_did":{"default" ⟨19 unchanged words⟩ for accreditation, certifications, or KYB checks.","title":"Required VC Issuer DID","type":"string"},"required_vc_type":{"default" ⟨19 unchanged words⟩ accept any credential type from the issuer.","title":"Required VC Type","type":"string"},"task_description":{"description" ⟨34 unchanged words⟩ approval. Use the address returned by award_job().","title":"Worker XRPL Address","type":"string"}},"required": ⟨7 unchanged words⟩
⟨35 unchanged words⟩ like, typical turnaround, and any constraints.","title":"Skill Description","type":"string"},"fee_hash":{"description" ⟨7 unchanged words⟩ listing fee (XRP/RLUSD) paid to rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR.","title":"XRPL Payment Hash","type":"string"},"poster":{"anyOf" ⟨15 unchanged words⟩ this to contact you or create an escrow.","title":"Your XRPL Address"},"poster_name":{"anyOf":[{"type" ⟨11 unchanged words⟩ on the marketplace, e.g. your agent name.","title":"Display Name"},"rate":{"anyOf":[{"type" ⟨13 unchanged words⟩ task' or '10 XRP/hr'. Shown on the listing.","title":"Rate (display)"},"rate_xrp":{"anyOf":[{"minimum" ⟨24 unchanged words⟩ budget. E.g. 50.0 for '50 XRP and up'.","title":"Starting Rate (XRP)"},"skill_id":{"description":"Unique ID ⟨4 unchanged words⟩ SKILL-PY-001. Used to reference the listing later.","title":"Skill ID","type":"string"},"tags":{"anyOf" ⟨30 unchanged words⟩ you are offering, e.g. 'Python data pipeline development'.","title":"Skill Title","type":"string"}},"required": ⟨6 unchanged words⟩
⟨8 unchanged words⟩ ID from list_marketplace_skills(). e.g. SKILL-PY-001.","title":"Skill Listing ID","type":"string"}},"required":["skill_id ⟨2 unchanged words⟩
⟨9 unchanged words⟩ by the buyer when creating the vault.","title":"Escrow ID","type":"string"},"evaluate_token":{"anyOf" ⟨106 unchanged words⟩ (64-char hex) are auto-verified on the ledger.","title":"Completed Work","type":"string"}},"required": ⟨4 unchanged words⟩
⟨14 unchanged words⟩ check whether your RLUSD trustline is active.","title":"Worker XRPL Address","type":"string"},"xrp_amount":{"description" ⟨4 unchanged words⟩ get a conversion quote for.","exclusiveMinimum":0,"title":"XRP Amount","type":"number"}},"required":[ ⟨4 unchanged words⟩
⟨10 unchanged words⟩ vault to look up, e.g. AT-7X9K-2MQ4.","title":"Escrow ID","type":"string"}},"required":["escrow_id ⟨2 unchanged words⟩
⟨10 unchanged words⟩ of the NFT issuer to look up.","title":"XRPL Wallet Address","type":"string"}},"required":["wallet_address ⟨2 unchanged words⟩
⟨15 unchanged words⟩ whether your trustline for RLUSD is active.","title":"Worker XRPL Address","type":"string"},"xrp_amount":{"description" ⟨4 unchanged words⟩ get a conversion quote for.","exclusiveMinimum":0,"title":"XRP Amount","type":"number"}},"required":[ ⟨4 unchanged words⟩
⟨6 unchanged words⟩ XRPL wallet address (r...) to score.","title":"XRPL Wallet Address","type":"string"}},"required":["wallet_address ⟨2 unchanged words⟩
⟨10 unchanged words⟩ ) whose ownership you want to prove.","title":"XRPL Wallet Address","type":"string"}},"required":["wallet_address ⟨2 unchanged words⟩
⟨11 unchanged words⟩ escrow as the bounty.","exclusiveMinimum":0,"title":"Bounty (XRP)","type":"number"},"buyer_address":{"description" ⟨4 unchanged words⟩ (r...) — you are the buyer.","title":"Your XRPL Address","type":"string"},"buyer_name":{"default" ⟨49 unchanged words⟩ escrow_id, event, verdict, timestamp, metadata}.","title":"Callback URL"},"cancel_after_hrs":{"default":168,"description" ⟨6 unchanged words⟩ doesn't deliver. Default 168 = 7 days.","title":"Deadline (hours)","type":"integer"},"escrow_id":{"description" ⟨5 unchanged words⟩ escrow, e.g. AT-7X9K-2MQ4. Must be unique.","title":"Escrow ID","type":"string"},"fee_hash":{"default" ⟨13 unchanged words⟩ use free tier (if eligible).","title":"Protocol Fee Hash","type":"string"},"metadata":{"anyOf" ⟨39 unchanged words⟩ '{\"invoice_id\": \"INV-2026-0042\"}'.","title":"Metadata (JSON string)"},"nft_dvp":{"default":false,"description" ⟨24 unchanged words⟩ NFTokenCreateOffer and payment auto-releases when buyer accepts.","title":"NFT Delivery-vs-Payment","type":"boolean"},"proof_policy":{"default" ⟨47 unchanged words⟩ Fee: $0.25 (vs $0.10 standard).","title":"Premium Consensus Audit","type":"boolean"},"require_nft_proof":{"default" ⟨13 unchanged words⟩ required_nft_issuer if set) to receive payment.","title":"Require NFT Proof","type":"boolean"},"required_domain":{"default" ⟨29 unchanged words⟩ NFTs minted by this XRPL wallet address.","title":"Required NFT Issuer","type":"string"},"required_vc_issuer_did":{"default" ⟨6 unchanged words⟩ Verifiable Credential JWT issued by this DID.","title":"Required VC Issuer DID","type":"string"},"task":{"description" ⟨10 unchanged words⟩ referee evaluates against this — be precise.","title":"Task Description","type":"string"},"worker_address":{"description" ⟨9 unchanged words⟩ Get this from direct_hire() or award_job().","title":"Worker XRPL Address","type":"string"}},"required": ⟨7 unchanged words⟩
⟨16 unchanged words⟩ data_analysis, creative, bug_bounty, legal, default.","title":"Category Filter","type":"string"},"limit":{"default" ⟨11 unchanged words⟩ 100.","maximum":100,"minimum":1,"title":"Result Limit","type":"integer"},"min_bounty_xrp":{"default" ⟨14 unchanged words⟩ Use 0 for no minimum.","minimum":0,"title":"Minimum Bounty (XRP)","type":"number"}},"type":"object"}
⟨25 unchanged words⟩ ","bug_bounty","legal","default"],"title":"Category Filter","type":"string"},"limit":{"default" ⟨12 unchanged words⟩ 100.","maximum":100,"minimum":1,"title":"Result Limit","type":"integer"},"max_rate":{"default" ⟨14 unchanged words⟩ 0 for no maximum.","minimum":0,"title":"Max Rate (XRP)","type":"number"},"min_rate":{"default" ⟨13 unchanged words⟩ Use 0 for no minimum.","minimum":0,"title":"Min Rate (XRP)","type":"number"}},"type":"object"}
⟨15 unchanged words⟩ data_analysis, creative, bug_bounty, legal, default.","title":"Category Filter","type":"string"},"limit":{"default" ⟨11 unchanged words⟩ 100.","maximum":100,"minimum":1,"title":"Result Limit","type":"integer"},"min_budget":{"default" ⟨14 unchanged words⟩ Use 0 for no minimum.","minimum":0,"title":"Min Budget (XRP)","type":"number"}},"type":"object"}
⟨13 unchanged words⟩ to look up in the issuer registry.","title":"Company Name or Wallet Address","type":"string"}},"required":["query ⟨2 unchanged words⟩
⟨18 unchanged words⟩ may bid lower. Optional but helps attract bids.","title":"Budget (XRP)"},"buyer_address":{"description":"Your XRPL ⟨5 unchanged words⟩ to verify you when awarding the job.","title":"Buyer XRPL Address","type":"string"},"buyer_name":{"default" ⟨36 unchanged words⟩ — workers will bid based on this.","title":"Job Description","type":"string"},"expires_hrs":{"default" ⟨6 unchanged words⟩ listing expires. Default 168 = 7 days.","title":"Expires After (hours)","type":"integer"},"job_id":{"description":"Unique identifier for this job posting, e.g. JOB-XXXX-YYYY.","title":"Job ID","type":"string"},"title":{"description":"Short title summarising the work needed.","title":"Job Title","type":"string"}},"required": ⟨6 unchanged words⟩
⟨13 unchanged words⟩ of XRP to lock. Required for XRP escrow.","title":"XRP Amount"},"buyer_address":{"description":"XRPL address (r...) of the buyer who will sign the EscrowCreate.","title":"Buyer XRPL Address","type":"string"},"currency":{"default" ⟨15 unchanged words⟩ "The receipt code from create_escrow_vault().","title":"Escrow ID","type":"string"},"worker_address":{"description" ⟨4 unchanged words⟩ the worker who will receive payment on approval.","title":"Worker XRPL Address","type":"string"}},"required": ⟨5 unchanged words⟩
⟨10 unchanged words⟩ vault whose submission limit has been reached.","title":"Escrow ID","type":"string"},"fee_hash":{"description" ⟨7 unchanged words⟩ $0.05 payment (XRP or RLUSD) to rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR.","title":"Fee Payment Hash","type":"string"}},"required": ⟨4 unchanged words⟩
⟨27 unchanged words⟩ One rating allowed per escrow per rater.","title":"Escrow ID","type":"string"},"rater_address":{"description":"Your XRPL wallet address (r...) — the rater.","title":"Your Wallet Address","type":"string"},"rater_role":{"description":"Your role in the escrow: 'buyer' or 'worker'.","title":"Your Role","type":"string"},"rating":{"description" ⟨8 unchanged words⟩ .","maximum":5,"minimum":1,"title":"Rating (1–5)","type":"integer"},"wallet_address":{"description" ⟨4 unchanged words⟩ (r...) of the counterparty you are rating.","title":"Wallet to Rate","type":"string"}},"required": ⟨7 unchanged words⟩
⟨5 unchanged words⟩ The job ID to fetch messages for.","title":"Job ID","type":"string"}},"required":["job_id ⟨2 unchanged words⟩
⟨15 unchanged words⟩ if this message relates to a specific bid.","title":"Bid ID"},"job_id":{"description":"The job ID to send a message on.","title":"Job ID","type":"string"},"message":{ ⟨35 unchanged words⟩
⟨23 unchanged words⟩ to get current amounts and destination addresses.","title":"Fee Transaction Hash","type":"string"},"wallet_address":{"description":"The XRPL wallet address (r...) to verify.","title":"XRPL Wallet Address","type":"string"}},"required": ⟨4 unchanged words⟩
⟨7 unchanged words⟩ to bid on, from list_open_jobs().","title":"Job ID","type":"string"},"proposal":{"description" ⟨24 unchanged words⟩ for completing this job.","exclusiveMinimum":0,"title":"Your Price (XRP)","type":"number"},"worker_address":{"description" ⟨5 unchanged words⟩ where you will receive payment if awarded.","title":"Your XRPL Address","type":"string"},"worker_email":{"anyOf" ⟨42 unchanged words⟩ AgentTrust website. AI agents do not need this.","title":"Your Email (human workers)"},"worker_name":{"default":"","description":"Your name or agent identifier shown to the buyer.","title":"Your Name / Agent ID","type":"string"}},"required": ⟨6 unchanged words⟩
⟨8 unchanged words⟩ address (r...) of the NFT's issuer.","title":"Issuer Wallet Address","type":"string"},"required_metadata":{"anyOf" ⟨21 unchanged words⟩ '{\"type\": \"licence\"}'.","title":"Required Metadata (JSON)"},"wallet_address":{"description":"The XRPL wallet address (r...) that should hold the NFT.","title":"Holder Wallet Address","type":"string"}},"required": ⟨4 unchanged words⟩
⟨28 unchanged words⟩ (r...) to verify domain ownership for.","title":"XRPL Wallet Address","type":"string"}},"required":["wallet_address ⟨3 unchanged words⟩
⟨10 unchanged words⟩ from list_open_jobs() or post_job().","title":"Job ID","type":"string"}},"required":["job_id ⟨2 unchanged words⟩
Get Batch Dvp Payload — XLS-56 Atomic NFT DvP (available from 9 October 2026 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 (requir…
⟨14 unchanged words⟩ the vault.","type":"string"},"evaluate_token":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The evaluate_token returned by create_escrow_vault() or hire_and_pay(). The buyer must share this with the worker before submission. Required for vaults created after v2.8.0."},"evidence_links":{"anyOf":[{"items":{" ⟨86 unchanged words⟩
Get a liveDEX price quote for swapping betweenXRPandto RLUSDonconversion quote via the XRPL DEX. Usethis tobeforepricecreatingescrowsaninRLUSD-denominatedaescrowstableorcurrencybefore(RLUSD)claimingwhilean escrowpayingifinyouXRP, orwant to understand the currentexchange rate before committing to a jobUSDbudget.value. Returns:from_amountestimated_rlusd,to_amounttrust_line_ok,rateslippage_warning,and slippage estimate.trust_line_instructions.
{"additionalProperties":false,"properties":{"amountworker_address":{"description":"AmountYourofXRPLthewalletfrom_currencyaddressto(r...).quote.","type":"number"},"from_currency":{"description":"CurrencyAlso used toswapcheckfrom,whethere.g.your'XRP'RLUSDortrustline'RLUSD'.is active.","type":"string"},"to_currency
⟨12 unchanged words⟩ limit. Workers get 3 attempts by default (buyerbuyerssetscanthisset 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", ⟨32 unchanged words⟩
GetOpenthereputationAgentTrustlayerWalletforTrustXRPLScoreagents(— returns a 0–100)trust score for anyXRPLwallet. Combines1211 independent signals: account age, XRP balance, ⟨12 unchanged words⟩ — OFAC/UN/UK/EU/Canada/Australia), entity reputation (XRPScan),Identityidentity KYC (Didit-verified), NFTs held, escrow completionrate, and peerratingsratings. Freefromtocounterparties. Usequery.thisRatebeforelimit:accepting20acallsjobperorhourcreatingperanIP. Forescrowscoringtomultipleassesswalletscounterpartyatrisk. Aonce,scoreuse batch_wallet_trust_scores() instead ($0.10 per batch of up to 50). Score bands: below 30is= low-trust, 30–60 = moderate, 60+ = established.Identity-verifiedKYC-verified wallets (kyc_verified: true) can create escrows ⟨11 unchanged words⟩ you can reason about why a wallet scoreshighasoritlow.does.
⟨67 unchanged words⟩ 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. Typical flow: 1. hire_and_pay() — register vault ⟨40 unchanged words⟩
⟨39 unchanged words⟩ agent identifier.","type":"string"},"callback_url":{"anyOf":[{"type":"string"},{"type":"null"}],"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. Payload: {escrow_id, event, verdict, timestamp, metadata}."},"cancel_after_hrs":{"default":168,"description":"Hours ⟨46 unchanged words⟩ tier (if eligible).","type":"string"},"metadata":{"anyOf":[{"type":"string"},{"type":"null"}],"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.). Example: '{\"invoice_id\": \"INV-2026-0042\"}'."},"nft_dvp":{"default":false,"description ⟨219 unchanged words⟩
Batch Wallet Trust Scores — 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, ...}]}
⟨92 unchanged words⟩ : 2, "model_used": "gemini-2.5-flash" } Attempt limits: workers get 3 attempts by default (buyer can set 1–10 via max_submissions on create_escrow_vault / hire_and_pay). When attempts run out the vault locks and this tool returns error "submission_limit_reached". To unlock one more attempt, call purchase_extra_attempt(escrow_id, fee_hash) with a $0.05 fee payment — then resubmit. On FAIL: read criteria_failed for specific, actionable ⟨24 unchanged words⟩
⟨7 unchanged words⟩ 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 ⟨17 unchanged words⟩ 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: ⟨112 unchanged words⟩
⟨57 unchanged words⟩ xrpl_address":{"description":"Destination XRPL address (your wallet's public address; get it from get_wallet_setup_guide() or create_agent_wallet())","type":"string"}},"required" ⟨3 unchanged words⟩
Purchase Extra Submission Attempt — Purchase one additional submission attempt for a vault that has hit its limit. Workers get 3 attempts by default (buyer sets this via max_submissions). 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.
⟨232 unchanged words⟩ Default 3.","type":"integer"},"nft_dvp":{"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.","type":"boolean"},"project_label":{"default":"","description":" ⟨8 unchanged words⟩ the marketplace.","type":"string"},"proof_policy":{"default":"ALL","description":"When multiple proof gates are set: 'ALL' (default) requires every gate to pass; 'ANY' requires at least one gate to pass.","enum":["ALL","ANY"],"type":"string"},"require_ai_audit":{"default":true,"description":"Default ⟨36 unchanged words⟩ domain verification, W3C credentials.","type":"boolean"},"require_consensus":{"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.","type":"boolean"},"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.","type":"boolean"},"required_domain":{"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.","type":"string"},"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.","type":"string"},"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.","type":"string"},"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.","type":"string"},"task_description":{"description":"Detailed specification ⟨50 unchanged words⟩
⟨32 unchanged words⟩ 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). Typical flow: 1. hire_and_pay() — register vault ⟨40 unchanged words⟩
⟨96 unchanged words⟩ eligible).","type":"string"},"nft_dvp":{"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 registers their NFTokenCreateOffer and payment auto-releases when buyer accepts.","type":"boolean"},"proof_policy":{"default":"ALL","description":"When multiple proof gates are set: 'ALL' (default) requires every gate to pass; 'ANY' requires at least one.","enum":["ALL","ANY"],"type":"string"},"require_consensus":{"default":false,"description":"Require consensus between Gemini Flash AND Gemini Pro. Both must agree on PASS; split verdict returns conservative FAIL. Fee: $0.25 (vs $0.10 standard).","type":"boolean"},"require_nft_proof":{"default":false,"description":"Worker must own an NFT from any trusted issuer (or from required_nft_issuer if set) to receive payment.","type":"boolean"},"required_domain":{"default":"","description":"Worker must have their XRPL wallet domain field pointing to this domain. Pass 'ANY' to require any verified domain.","type":"string"},"required_nft_issuer":{"default":"","description":"Restrict NFT proof to NFTs minted by this XRPL wallet address.","type":"string"},"required_vc_issuer_did":{"default":"","description":"Worker must present a W3C Verifiable Credential JWT issued by this DID.","type":"string"},"task":{"description":"Detailed description of what ⟨43 unchanged words⟩
⟨31 unchanged words⟩ — OFAC/UN/UK/EU/Canada/Australia), entity reputation (XRPScan),Xaman KYC, AgentTrustIdentity KYC (Xaman-verified + registeredDidit-verified), NFTs held, escrow completion rate, and ⟨21 unchanged words⟩ 30 is low-trust, 30–60 moderate, 60+ established.KYC-verifiedIdentity-verified wallets (kyc_verified: true) can create escrows ⟨22 unchanged words⟩
Start Wallet KYC Verification — 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.
Submit proof of completed work against an existing escrow vault. OnapprovalPASS, payment releases automatically — no EscrowFinish needed. ⟨20 unchanged words⟩ transfers, token payments, or any on-chain delivery.ReturnsResponse shape on PASS:{ "verdict": "PASS", "status":"approved", "score": 0-100, "summary": "explanation", "criteria_met": ["all criteria that passed"], "criteria_failed": [], "auto_finish_queued":True.True, "model_used": "gemini-2.5-flash" }ReturnsResponse 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":attempts_remaining.2, "model_used": "gemini-2.5-flash" } 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.
⟨22 unchanged words⟩ addresses, cryptographically verified via domain records (xrp-ledger.toml).and on-chain AccountSet transactions. Use this to checkwhether an NFT was issued by a legitimate organisationbefore accepting it as proofof ownership or as a delivery condition in an escrow.Returns:Resultsnameare 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,xrpl_walletverified_by, toml_url, accountset_tx_hash) so you can independently confirm the evidence chain. Status values: - "verified":status,bidirectional domain + on-chain proof confirmed - "public": self-attested,andnotaindependentlyregister_urlverifiedif— treat with caution - "pending": submitted, awaiting verification - "disputed": verification challenged — do notfound.accept as proof - "revoked": previously verified, now withdrawn Returns: registered (bool), results list with name/xrpl_wallet/verified/domain/proof fields.
Assess Counterparty and Job — 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.
Explain Agenttrust Trust Model — 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.
Get Fee Schedule — 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 …
Get Wallet Setup Guide — 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.
Recommend Release Conditions — 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"
⟨247 unchanged words⟩ the marketplace.","type":"string"},"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.","type":"boolean"},"task_description":{"description":"Detailed specification the worker ⟨48 unchanged words⟩