{"openapi":"3.1.0","info":{"title":"Gateway service agent API","version":"1.0.0","description":"Release candidate. Wallet payments disabled by default; Base Sepolia testnet and separately activated Base mainnet USDC. x402 payment settles an asynchronous job receipt. Existing PayPal checkout remains on human service pages. No production payment readiness claim."},"servers":[{"url":"https://gateway-wallet-payments.jerryrnapier.workers.dev","description":"Dedicated wallet API"}],"paths":{"/tip.json":{"get":{"operationId":"getTipDescriptor","security":[],"responses":{"200":{"description":"Free voluntary contribution discovery; never a payment challenge."}}}},"/tip.md":{"get":{"operationId":"getTipInstructions","security":[],"responses":{"200":{"description":"Free human and agent contribution instructions."}}}},"/api/agent/v1/tips":{"post":{"operationId":"createVoluntaryTipQuote","security":[{"capability":[]}],"description":"Explicit optional contribution only. No service, report, ranking or priority is purchased. Reserve a durable quote; payment uses its paymentUrl and the standard x402 flow. Confirmation requires finalized-chain evidence; never resubmit an uncertain payment.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["amount"],"properties":{"amount":{"type":"string","maxLength":79,"pattern":"^(?:0|[1-9][0-9]{0,71})(?:\\.[0-9]{1,6})?$","description":"Positive USDC decimal string; no Gateway minimum or maximum. Token precision is 6 decimal places. Atomic amount must fit uint256; token balance and provider acceptance apply.","examples":["1.00","0.010001"]}}}}}},"responses":{"200":{"description":"Durable quote/job receipt; not proof that a report has completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Receipt"}}}},"201":{"description":"Durable quote/job receipt; not proof that a report has completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Receipt"}}}},"400":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/catalog":{"get":{"operationId":"getServiceCatalog","security":[],"responses":{"200":{"description":"Service catalog; no generation or payment.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/agent/v1/openapi":{"get":{"operationId":"getOpenApi","security":[],"responses":{"200":{"description":"This OpenAPI document."}}}},"/api/agent/v1/quotes":{"post":{"operationId":"createQuote","security":[{"capability":[]}],"description":"Validate bounded input and reserve an immutable quote. Does not scan, analyze, charge or require email. Same key and body returns the same receipt; changed payload is a conflict.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"https://gateway-wallet-payments.jerryrnapier.workers.dev/agent/quote-request.schema.json"}}}},"responses":{"200":{"description":"Durable quote/job receipt; not proof that a report has completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Receipt"}}}},"201":{"description":"Durable quote/job receipt; not proof that a report has completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Receipt"}}}},"400":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/quotes/{id}/pay":{"post":{"operationId":"payQuote","security":[{"capability":[]}],"description":"First request without PAYMENT-SIGNATURE obtains the x402 v2 PAYMENT-REQUIRED challenge if enabled. A compatible wallet signs the exact challenge. Repeat with PAYMENT-SIGNATURE (base64 JSON). Only confirmed settlement permits fulfillment. Payment verification alone does not. Keep the same receipt across uncertain responses.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Durable quote/job receipt; not proof that a report has completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Receipt"}}}},"202":{"description":"Durable receipt or payment-in-progress notice; poll existing status. Do not resubmit a new payment.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Receipt"},{"$ref":"#/components/schemas/Error"}]}}}},"400":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required; base64 x402 v2 requirements are in PAYMENT-REQUIRED.","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"}}}},"404":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/jobs/{id}":{"get":{"operationId":"getJob","security":[{"capability":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Durable quote/job receipt; not proof that a report has completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Receipt"}}}},"401":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/jobs/{id}/result":{"get":{"operationId":"getResult","security":[{"capability":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Private structured fulfillment. Preserve limitations and unknown/inconclusive states.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"https://gateway-wallet-payments.jerryrnapier.workers.dev/agent/website-scanner-result.schema.json"},{"$ref":"https://gateway-wallet-payments.jerryrnapier.workers.dev/agent/gti-preflight-result.schema.json"},{"$ref":"#/components/schemas/ContributionReceipt"},{"type":"object","required":["service","report","createdAt","expiresAt"],"properties":{"service":{"enum":["website-quick-check","agent-readiness-passport","website-change-report"]},"report":{"type":"object","required":["schemaVersion","website","checkedAt","observations","limitations"]},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"baselineCheckedAt":{"type":"string","format":"date-time"},"changes":{"type":"array","items":{"type":"object"}}}}]}}}},"202":{"description":"Not ready; inspect status and respect Retry-After.","headers":{"Retry-After":{"schema":{"type":"string"}}}},"401":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Machine-readable failure. Follow code and Retry-After; do not blindly retry payments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/services/website-scanner":{"post":{"summary":"One asynchronous public website opportunity report; up to 15 accessible pages.","description":"Unsigned discovery returns 402 without creating a job. Paid requests require a private client-generated Bearer capability, unique Idempotency-Key and PAYMENT-SIGNATURE. Payment buys a durable asynchronous receipt; retain capability to poll status/result. Do not retry uncertain payments with a new signature.","security":[],"parameters":[{"in":"header","name":"Authorization","required":false,"description":"Required on paid requests. Client-generated private random 32-byte capability encoded as 64 lowercase hex characters.","schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":false,"description":"Required on paid requests; reuse only for identical requests.","schema":{"type":"string","minLength":16,"maxLength":128}},{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string","maxLength":16000}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"website-scanner"},"input":{"type":"object","additionalProperties":false,"properties":{"website":{"type":"string","minLength":1,"maxLength":2048,"description":"Public HTTP(S) website only; server applies URL, secret, DNS and redirect safeguards."},"industry":{"enum":["Local professional services","Contracting and home services","Consulting","Accounting and finance","Property management","Nonprofit","Other"]},"goal":{"enum":["More qualified inquiries","More calls","More bookings","More sales","Clearer services","Stronger credibility"]}},"required":["website","industry","goal"]},"deliveryEmail":{"type":"string","format":"email","maxLength":254}},"required":["service","input"],"additionalProperties":false},"example":{"service":"website-scanner","input":{"website":"https://example.com","industry":"Other","goal":"Clearer services"}}}}},"responses":{"202":{"description":"Durable receipt; poll status using the same private capability."},"400":{"description":"Invalid input or authorization."},"401":{"description":"Missing private capability on signed request."},"402":{"description":"Fixed payment terms and Bazaar discovery metadata. No job allocated."},"404":{"description":"Baseline unavailable or not owned by this capability."},"409":{"description":"Idempotency, route or payment conflict."},"429":{"description":"Capacity limit; respect Retry-After."},"503":{"description":"Not ready or uncertain settlement; retain original payment and use recovery."}}}},"/api/agent/v1/services/gti-preflight":{"post":{"summary":"One asynchronous unsigned Base Sepolia transaction review; not signing or safety certification.","description":"Unsigned discovery returns 402 without creating a job. Paid requests require a private client-generated Bearer capability, unique Idempotency-Key and PAYMENT-SIGNATURE. Payment buys a durable asynchronous receipt; retain capability to poll status/result. Do not retry uncertain payments with a new signature.","security":[],"parameters":[{"in":"header","name":"Authorization","required":false,"description":"Required on paid requests. Client-generated private random 32-byte capability encoded as 64 lowercase hex characters.","schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":false,"description":"Required on paid requests; reuse only for identical requests.","schema":{"type":"string","minLength":16,"maxLength":128}},{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string","maxLength":16000}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"gti-preflight"},"input":{"type":"object","additionalProperties":false,"properties":{"unsignedTransaction":{"type":"string","minLength":1,"maxLength":12000,"description":"JSON-encoded unsigned transaction matching unsigned-transaction.schema.json. Base Sepolia 84532 only. No private keys, seed phrases, signed transactions or credentials."},"applicationDescription":{"type":"string","minLength":1,"maxLength":3000},"expectedBehavior":{"type":"string","minLength":1,"maxLength":3000},"concern":{"type":"string","minLength":1,"maxLength":3000}},"required":["unsignedTransaction","applicationDescription","expectedBehavior","concern"]},"deliveryEmail":{"type":"string","format":"email","maxLength":254}},"required":["service","input"],"additionalProperties":false},"example":{"service":"gti-preflight","input":{"unsignedTransaction":"{\"chainId\": 84532, \"from\": \"0x1111111111111111111111111111111111111111\", \"to\": \"0x2222222222222222222222222222222222222222\", \"valueWei\": \"0\", \"data\": \"0x\"}","applicationDescription":"Illustrative testnet transfer review.","expectedBehavior":"Review a zero-value unsigned transaction.","concern":"Explain observable evidence and limits."}}}}},"responses":{"202":{"description":"Durable receipt; poll status using the same private capability."},"400":{"description":"Invalid input or authorization."},"401":{"description":"Missing private capability on signed request."},"402":{"description":"Fixed payment terms and Bazaar discovery metadata. No job allocated."},"404":{"description":"Baseline unavailable or not owned by this capability."},"409":{"description":"Idempotency, route or payment conflict."},"429":{"description":"Capacity limit; respect Retry-After."},"503":{"description":"Not ready or uncertain settlement; retain original payment and use recovery."}}}},"/api/agent/v1/services/website-quick-check":{"post":{"summary":"One-page objective website metadata check; no AI analysis.","description":"Unsigned discovery returns 402 without creating a job. Paid requests require a private client-generated Bearer capability, unique Idempotency-Key and PAYMENT-SIGNATURE. Payment buys a durable asynchronous receipt; retain capability to poll status/result. Do not retry uncertain payments with a new signature.","security":[],"parameters":[{"in":"header","name":"Authorization","required":false,"description":"Required on paid requests. Client-generated private random 32-byte capability encoded as 64 lowercase hex characters.","schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":false,"description":"Required on paid requests; reuse only for identical requests.","schema":{"type":"string","minLength":16,"maxLength":128}},{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string","maxLength":16000}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"website-quick-check"},"input":{"type":"object","additionalProperties":false,"required":["website"],"properties":{"website":{"type":"string","format":"uri","maxLength":2048,"description":"Public HTTPS website origin only; no credentials, query or fragment."}}},"deliveryEmail":{"type":"string","format":"email","maxLength":254}},"required":["service","input"],"additionalProperties":false},"example":{"service":"website-quick-check","input":{"website":"https://example.com/"}}}}},"responses":{"202":{"description":"Durable receipt; poll status using the same private capability."},"400":{"description":"Invalid input or authorization."},"401":{"description":"Missing private capability on signed request."},"402":{"description":"Fixed payment terms and Bazaar discovery metadata. No job allocated."},"404":{"description":"Baseline unavailable or not owned by this capability."},"409":{"description":"Idempotency, route or payment conflict."},"429":{"description":"Capacity limit; respect Retry-After."},"503":{"description":"Not ready or uncertain settlement; retain original payment and use recovery."}}}},"/api/agent/v1/services/agent-readiness-passport":{"post":{"summary":"Timestamped homepage and five fixed discovery-path observations; not a security certification.","description":"Unsigned discovery returns 402 without creating a job. Paid requests require a private client-generated Bearer capability, unique Idempotency-Key and PAYMENT-SIGNATURE. Payment buys a durable asynchronous receipt; retain capability to poll status/result. Do not retry uncertain payments with a new signature.","security":[],"parameters":[{"in":"header","name":"Authorization","required":false,"description":"Required on paid requests. Client-generated private random 32-byte capability encoded as 64 lowercase hex characters.","schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":false,"description":"Required on paid requests; reuse only for identical requests.","schema":{"type":"string","minLength":16,"maxLength":128}},{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string","maxLength":16000}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"agent-readiness-passport"},"input":{"type":"object","additionalProperties":false,"required":["website"],"properties":{"website":{"type":"string","format":"uri","maxLength":2048,"description":"Public HTTPS website origin only; no credentials, query or fragment."}}},"deliveryEmail":{"type":"string","format":"email","maxLength":254}},"required":["service","input"],"additionalProperties":false},"example":{"service":"agent-readiness-passport","input":{"website":"https://example.com/"}}}}},"responses":{"202":{"description":"Durable receipt; poll status using the same private capability."},"400":{"description":"Invalid input or authorization."},"401":{"description":"Missing private capability on signed request."},"402":{"description":"Fixed payment terms and Bazaar discovery metadata. No job allocated."},"404":{"description":"Baseline unavailable or not owned by this capability."},"409":{"description":"Idempotency, route or payment conflict."},"429":{"description":"Capacity limit; respect Retry-After."},"503":{"description":"Not ready or uncertain settlement; retain original payment and use recovery."}}}},"/api/agent/v1/services/website-change-report":{"post":{"summary":"Compare current readiness observations with your own unexpired private passport or changes result for the same website.","description":"Unsigned discovery returns 402 without creating a job. Paid requests require a private client-generated Bearer capability, unique Idempotency-Key and PAYMENT-SIGNATURE. Payment buys a durable asynchronous receipt; retain capability to poll status/result. Do not retry uncertain payments with a new signature.","security":[],"parameters":[{"in":"header","name":"Authorization","required":false,"description":"Required on paid requests. Client-generated private random 32-byte capability encoded as 64 lowercase hex characters.","schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":false,"description":"Required on paid requests; reuse only for identical requests.","schema":{"type":"string","minLength":16,"maxLength":128}},{"in":"header","name":"PAYMENT-SIGNATURE","required":false,"schema":{"type":"string","maxLength":16000}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","const":"website-change-report"},"input":{"type":"object","additionalProperties":false,"required":["website","baselineJobId"],"properties":{"website":{"type":"string","format":"uri","maxLength":2048,"description":"Public HTTPS website origin only; no credentials, query or fragment."},"baselineJobId":{"type":"string","pattern":"^agent_[a-f0-9]{48}$"}}},"deliveryEmail":{"type":"string","format":"email","maxLength":254}},"required":["service","input"],"additionalProperties":false},"example":{"service":"website-change-report","input":{"website":"https://example.com/","baselineJobId":"agent_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}}}},"responses":{"202":{"description":"Durable receipt; poll status using the same private capability."},"400":{"description":"Invalid input or authorization."},"401":{"description":"Missing private capability on signed request."},"402":{"description":"Fixed payment terms and Bazaar discovery metadata. No job allocated."},"404":{"description":"Baseline unavailable or not owned by this capability."},"409":{"description":"Idempotency, route or payment conflict."},"429":{"description":"Capacity limit; respect Retry-After."},"503":{"description":"Not ready or uncertain settlement; retain original payment and use recovery."}}}},"/api/agent/v1/playground":{"post":{"security":[],"description":"Free request validation and illustrative output; no network, wallet, quote or baseline lookup.","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","additionalProperties":false,"required":["service","input"],"properties":{"service":{"const":"website-quick-check"},"input":{"type":"object","additionalProperties":false,"required":["website"],"properties":{"website":{"type":"string","format":"uri","maxLength":2048,"description":"Public HTTPS website origin only; no credentials, query or fragment."}}}}},{"type":"object","additionalProperties":false,"required":["service","input"],"properties":{"service":{"const":"agent-readiness-passport"},"input":{"type":"object","additionalProperties":false,"required":["website"],"properties":{"website":{"type":"string","format":"uri","maxLength":2048,"description":"Public HTTPS website origin only; no credentials, query or fragment."}}}}},{"type":"object","additionalProperties":false,"required":["service","input"],"properties":{"service":{"const":"website-change-report"},"input":{"type":"object","additionalProperties":false,"required":["website","baselineJobId"],"properties":{"website":{"type":"string","format":"uri","maxLength":2048,"description":"Public HTTPS website origin only; no credentials, query or fragment."},"baselineJobId":{"type":"string","pattern":"^agent_[a-f0-9]{48}$"}}}}}]}}}},"responses":{"200":{"description":"Sample only, never a real report"},"400":{"description":"Invalid input"},"413":{"description":"Body too large"},"415":{"description":"JSON required"}}}},"/api/agent/v1/service-history":{"get":{"security":[],"responses":{"200":{"description":"Timestamped measured spot checks, with scope and limitations; not continuous uptime."}}}},"/api/agent/v1/garden":{"get":{"security":[],"summary":"Read anonymous opted-in confirmed contributions","responses":{"200":{"description":"Public count and latest 24 anonymous flowers; not all tips or verified AI identities."},"503":{"description":"Garden unavailable; never assume zero."}}},"post":{"summary":"Opt in to one anonymous flower for an owned finalized tip","security":[{"capability":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["jobId","publish"],"properties":{"jobId":{"type":"string","pattern":"^agent_[0-9a-f]{48}$"},"publish":{"const":true}}}}}},"responses":{"200":{"description":"Published; repeated requests keep the same flower"},"401":{"description":"Original private capability required"},"404":{"description":"No eligible owned confirmed tip"}}},"delete":{"summary":"Withdraw an owned flower using the original capability, including after receipt expiry","security":[{"capability":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["jobId"],"properties":{"jobId":{"type":"string","pattern":"^agent_[0-9a-f]{48}$"}}}}}},"responses":{"200":{"description":"Flower removed from public view"},"401":{"description":"Original private capability required"},"404":{"description":"No owned garden entry"}}}}},"components":{"securitySchemes":{"capability":{"type":"http","scheme":"bearer","bearerFormat":"64 lowercase hexadecimal characters","description":"Generate a random 32-byte secret locally. It owns access independently of wallet/payment identity. Header only; retain securely, redact from logs."}},"schemas":{"ContributionReceipt":{"type":"object","required":["service","kind","confirmation","amount","currency"],"properties":{"service":{"const":"voluntary-tip"},"kind":{"const":"contribution-receipt"},"confirmation":{"const":"finalized-chain"},"amount":{"type":"string"},"currency":{"const":"USDC"},"voluntary":{"const":true},"beneficiary":{"type":"string"},"purpose":{"type":"string"},"recurringCommitment":{"const":false},"charitableTaxReceipt":{"const":false},"signatureStatus":{"const":"unsigned"},"acknowledgment":{"type":"string"},"transactionId":{"type":"string"},"recipient":{"type":"string"},"network":{"type":"string"},"evidence":{"type":"object"}}},"Error":{"type":"object","required":["ok","code"],"properties":{"ok":{"const":false},"code":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}},"Receipt":{"type":"object","required":["ok","quoteId","jobId","status","paymentState","quoteExpiresAt","statusUrl","resultUrl","paymentUrl","price"],"properties":{"ok":{"const":true},"quoteId":{"type":"string"},"jobId":{"type":"string"},"status":{"type":"string"},"paymentState":{"type":"string"},"quoteExpiresAt":{"type":"string"},"expiresAt":{"type":"string"},"failureCode":{"type":["string","null"]},"statusUrl":{"type":"string"},"resultUrl":{"type":"string"},"paymentUrl":{"type":"string"},"price":{"type":"object","required":["amount","currency"],"properties":{"amount":{"type":"string","description":"Fixed service price or immutable voluntary contribution amount."},"currency":{"const":"USD"}}}}}}},"x-mcp":{"url":"https://gateway-wallet-payments.jerryrnapier.workers.dev/agent-tools","transport":"streamable-http","guide":"https://gateway-wallet-payments.jerryrnapier.workers.dev/agent/mcp-guide.md","paymentSubmission":false}}