{"openapi":"3.1.0","info":{"title":"Tollary — Agent Transaction Guard","version":"2026-08-29","description":"A machine-to-machine pre-sign safety gate for one narrow action: a complete EIP-1559 Base Mainnet official-USDC transfer(address,uint256).\n\nThe exact request root is {transaction, mandate}. mandate.message is signed separately by an owner-controlled EIP-712 issuer and binds sender, token, recipient, amount, unsignedTxDigest, fee ceiling, validity window, nonce, and the exact HTTPS Guard audience. Caller policy is forbidden and derived only from the verified mandate.\n\nmandate.signature is required. Never submit a private key, seed phrase, signed transaction, x402 payment authorization, or session secret. Signature recovery authenticates an address but does not decide whether the buyer trusts it; pin message.issuer out of band.\n\nThe v3 response uses base-usdc-guard-rpc-v3: canonicalSafe preserves independently agreed audit evidence while executionRecent pins fresh state and simulation. signBy is the hard signing deadline.\n\nA valid ALLOW or state-derived BLOCK verdict costs $0.01 USDC through x402. Malformed, structurally blocked, expired, and service-failure requests are not settled.\n\nGenerate and sign fresh mandate.notBefore, mandate.validUntil, nonce, audience, and unsignedTxDigest values. The signed lifetime must not exceed five minutes; timestamps and signatures in discovery examples are historical and must never be copied.\n\nALLOW is short-lived and bounded by verification.signBy. The signer must require the expected mandate issuer and compare every returned intent.transaction field and unsignedTxDigest with the exact bytes before and after signing. It is not a guarantee of recipient identity, legality, profitability, inclusion, or future execution.\n\nEvery paid and recovered proof carries an Ed25519 service attestation over the UTF-8 guardId. Pin the public descriptor from current /api/product metadata and verify the header independently; the x402 PAYMENT-RESPONSE remains separate settlement evidence."},"servers":[{"url":"https://tollary.p-e.kr"}],"paths":{"/api/product":{"get":{"operationId":"getAgentTransactionGuardProduct","summary":"Read the authoritative Guard price, payment network, trust pins, and endpoint metadata","tags":["Agent Transaction Guard"],"responses":{"200":{"description":"Machine-readable tollary-product-catalog-v1 with Agent Transaction Guard as the top-level product and the legacy demo isolated under product.freeDemo."}}}},"/api/health":{"get":{"operationId":"getTollaryHealth","summary":"Check HTTP service liveness without treating legacy demo state as Guard readiness","tags":["Agent Transaction Guard"],"responses":{"200":{"description":"The HTTP service is alive."}}}},"/api/readiness":{"get":{"operationId":"getAgentTransactionGuardReadiness","summary":"Check whether the Guard can safely issue a current x402 payment challenge","description":"This readiness is independent from the legacy blockspace demonstration. It verifies the Guard attestation signer, durable mandate and receipt capacity, and the current testnet or explicitly approved Mainnet payment gate.","tags":["Agent Transaction Guard"],"responses":{"200":{"description":"The Guard can accept a structurally valid request and issue a current payment challenge."},"503":{"description":"At least one Guard delivery or payment prerequisite is unavailable. Do not pay."}}}},"/api/commerce":{"get":{"operationId":"getAgentTransactionGuardCommerce","summary":"Read aggregate testnet, external revenue, and unresolved-liability counters","tags":["Agent Transaction Guard"],"responses":{"200":{"description":"Aggregate counters. Testnet and operator activity are not external revenue."}}}},"/api/legal":{"get":{"operationId":"getTollaryCommercialDisclosure","summary":"Read commercial, privacy, retention, and Mainnet sales readiness disclosures","tags":["Agent Transaction Guard"],"responses":{"200":{"description":"Public commercial disclosure. Incomplete fields keep Mainnet sales disabled."}}}},"/api/v1/base/usdc/guard":{"post":{"operationId":"guardBaseUsdcTransfer","summary":"Check an owner-authorized EIP-1559 Base USDC transaction before signing","description":"Asynchronously verifies the exact EIP-712 mandate signature and derives policy only from that signed message. After x402 payment verification, exactly two independent Base RPC operators establish both canonicalSafe audit evidence and executionRecent pinned state. The result includes signBy, both block timestamps and ages, safe/latest head lag, sender code classification and recent nonce, an advisory pending nonce only on two-provider agreement, balances, official-USDC state, simulation, gas estimate, and execution plus L1 fee ceilings. The service never signs or broadcasts the transaction.","tags":["Agent Transaction Guard"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["transaction","mandate"],"additionalProperties":false,"properties":{"transaction":{"type":"object","required":["type","chainId","from","to","data","value","nonce","gasLimit","maxFeePerGasWei","maxPriorityFeePerGasWei","accessList"],"additionalProperties":false,"properties":{"type":{"const":"0x2"},"chainId":{"const":8453},"from":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"to":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"data":{"type":"string","pattern":"^0xa9059cbb[0-9a-f]{128}$"},"value":{"const":"0"},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact sender nonce."},"gasLimit":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Exact non-zero gas limit."},"maxFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 fee cap."},"maxPriorityFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 priority-fee cap."},"accessList":{"type":"array","maxItems":0}},"description":"Complete canonical-lowercase unsigned Base Mainnet EIP-1559 transaction."},"mandate":{"type":"object","required":["message","signature"],"additionalProperties":false,"properties":{"message":{"type":"object","required":["issuer","sender","token","recipient","amountAtomic","unsignedTxDigest","maxTotalFeeWei","notBefore","validUntil","nonce","audience"],"additionalProperties":false,"properties":{"issuer":{"type":"string","pattern":"^0x[a-f0-9]{40}$","description":"Authenticated EIP-712 signer. The buyer must pin the expected issuer out of band."},"sender":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"token":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"recipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"amountAtomic":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Official Base USDC atomic amount."},"unsignedTxDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Maximum execution plus Base L1 data fee."},"notBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$","description":"Signed validity end; lifetime from notBefore must not exceed five minutes."},"nonce":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"Owner-chosen unique bytes32 nonce. Reuse is rejected durably by the service."},"audience":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"keccak256 of the exact canonical public HTTPS origin plus Guard path."}}},"signature":{"type":"string","pattern":"^0x[a-f0-9]{128}(?:1b|1c)$","description":"65-byte EIP-712 signature over ProofOfUtilityAgentGuardMandate v1."}},"description":"Owner-signed authorization. It is not a payment signature and contains no private key."}},"description":"Exact v3 request. Caller policy is forbidden; the Guard derives it only after viem verifies the EIP-712 owner mandate."}}}},"responses":{"200":{"description":"Paid, digest-bound ALLOW or state-derived BLOCK guard proof. Treat an expired result as historical evidence, never as permission to sign.","headers":{"PAYMENT-RESPONSE":{"description":"x402 settlement response. Validate it independently from the JSON proof.","schema":{"type":"string"}},"agent-transaction-guard-attestation":{"description":"Canonical base64url Ed25519 attestation envelope bound to this response guardId.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["schemaVersion","resource","guardId","generatedAt","validUntil","intent","inspection","issuerTrust","verification","decision","reasonCodes","payment"],"additionalProperties":false,"properties":{"schemaVersion":{"const":"agent-transaction-guard-v3"},"resource":{"const":"agent-transaction-guard"},"guardId":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"generatedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"intent":{"type":"object","required":["transaction","mandate","policy"],"additionalProperties":false,"properties":{"transaction":{"type":"object","required":["type","chainId","from","to","data","value","nonce","gasLimit","maxFeePerGasWei","maxPriorityFeePerGasWei","accessList"],"additionalProperties":false,"properties":{"type":{"const":"0x2"},"chainId":{"const":8453},"from":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"to":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"data":{"type":"string","pattern":"^0xa9059cbb[0-9a-f]{128}$"},"value":{"const":"0"},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact sender nonce."},"gasLimit":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Exact non-zero gas limit."},"maxFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 fee cap."},"maxPriorityFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 priority-fee cap."},"accessList":{"type":"array","maxItems":0}},"description":"Complete canonical-lowercase unsigned Base Mainnet EIP-1559 transaction."},"mandate":{"type":"object","required":["message","signature"],"additionalProperties":false,"properties":{"message":{"type":"object","required":["issuer","sender","token","recipient","amountAtomic","unsignedTxDigest","maxTotalFeeWei","notBefore","validUntil","nonce","audience"],"additionalProperties":false,"properties":{"issuer":{"type":"string","pattern":"^0x[a-f0-9]{40}$","description":"Authenticated EIP-712 signer. The buyer must pin the expected issuer out of band."},"sender":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"token":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"recipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"amountAtomic":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Official Base USDC atomic amount."},"unsignedTxDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Maximum execution plus Base L1 data fee."},"notBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$","description":"Signed validity end; lifetime from notBefore must not exceed five minutes."},"nonce":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"Owner-chosen unique bytes32 nonce. Reuse is rejected durably by the service."},"audience":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"keccak256 of the exact canonical public HTTPS origin plus Guard path."}}},"signature":{"type":"string","pattern":"^0x[a-f0-9]{128}(?:1b|1c)$","description":"65-byte EIP-712 signature over ProofOfUtilityAgentGuardMandate v1."}},"description":"Owner-signed authorization. It is not a payment signature and contains no private key."},"policy":{"type":"object","required":["expectedRecipient","expectedAmount","validUntil","maxTotalFeeWei"],"additionalProperties":false,"properties":{"expectedRecipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"expectedAmount":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}},"description":"Server-derived only from the verified mandate; never accepted from the caller."}},"description":"Canonical signed intent and its strictly derived internal policy."},"inspection":{"type":"object","required":["schemaVersion","decision","intentId","unsignedTxDigest","intent","mandateVerification","issuerTrust","reasonCodes","validUntil","decodedEffects"],"additionalProperties":false,"properties":{"schemaVersion":{"const":"base-usdc-transfer-intent-v3"},"decision":{"const":"ALLOW"},"intentId":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"unsignedTxDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"intent":{"type":"object","required":["transaction","mandate","policy"],"additionalProperties":false,"properties":{"transaction":{"type":"object","required":["type","chainId","from","to","data","value","nonce","gasLimit","maxFeePerGasWei","maxPriorityFeePerGasWei","accessList"],"additionalProperties":false,"properties":{"type":{"const":"0x2"},"chainId":{"const":8453},"from":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"to":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"data":{"type":"string","pattern":"^0xa9059cbb[0-9a-f]{128}$"},"value":{"const":"0"},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact sender nonce."},"gasLimit":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Exact non-zero gas limit."},"maxFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 fee cap."},"maxPriorityFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 priority-fee cap."},"accessList":{"type":"array","maxItems":0}},"description":"Complete canonical-lowercase unsigned Base Mainnet EIP-1559 transaction."},"mandate":{"type":"object","required":["message","signature"],"additionalProperties":false,"properties":{"message":{"type":"object","required":["issuer","sender","token","recipient","amountAtomic","unsignedTxDigest","maxTotalFeeWei","notBefore","validUntil","nonce","audience"],"additionalProperties":false,"properties":{"issuer":{"type":"string","pattern":"^0x[a-f0-9]{40}$","description":"Authenticated EIP-712 signer. The buyer must pin the expected issuer out of band."},"sender":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"token":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"recipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"amountAtomic":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Official Base USDC atomic amount."},"unsignedTxDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Maximum execution plus Base L1 data fee."},"notBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$","description":"Signed validity end; lifetime from notBefore must not exceed five minutes."},"nonce":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"Owner-chosen unique bytes32 nonce. Reuse is rejected durably by the service."},"audience":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"keccak256 of the exact canonical public HTTPS origin plus Guard path."}}},"signature":{"type":"string","pattern":"^0x[a-f0-9]{128}(?:1b|1c)$","description":"65-byte EIP-712 signature over ProofOfUtilityAgentGuardMandate v1."}},"description":"Owner-signed authorization. It is not a payment signature and contains no private key."},"policy":{"type":"object","required":["expectedRecipient","expectedAmount","validUntil","maxTotalFeeWei"],"additionalProperties":false,"properties":{"expectedRecipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"expectedAmount":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}},"description":"Server-derived only from the verified mandate; never accepted from the caller."}},"description":"Canonical signed intent and its strictly derived internal policy."},"mandateVerification":{"type":"object","required":["schemaVersion","scheme","domainName","domainVersion","chainId","domainSalt","typedDataDigest","recoveredIssuer","signatureValid","audience","audienceResource","verifiedAt","issuerTrust"],"additionalProperties":false,"properties":{"schemaVersion":{"const":"base-usdc-agent-guard-mandate-v1"},"scheme":{"const":"EIP-712/secp256k1"},"domainName":{"const":"ProofOfUtilityAgentGuardMandate"},"domainVersion":{"const":"1"},"chainId":{"const":8453},"domainSalt":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"typedDataDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"recoveredIssuer":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"signatureValid":{"const":true},"audience":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"audienceResource":{"type":"string","pattern":"^https://.+"},"verifiedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"issuerTrust":{"const":"out-of-band-pin-required","description":"Signature validity authenticates an address; it does not decide which issuer the buyer trusts."}}},"issuerTrust":{"const":"out-of-band-pin-required"},"reasonCodes":{"type":"array","maxItems":0},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"decodedEffects":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","required":["type","chainId","token","from","recipient","amountAtomic","nativeValue"],"additionalProperties":false,"properties":{"type":{"const":"erc20-transfer"},"chainId":{"const":8453},"token":{"const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"from":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"recipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"amountAtomic":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78},"nativeValue":{"const":"0"}}}}}},"issuerTrust":{"const":"out-of-band-pin-required"},"verification":{"type":"object","required":["schemaVersion","chainId","decision","intentId","unsignedTxDigest","reasonCodes","validUntil","verifiedAt","signBy","canonicalSafe","executionRecent","checks"],"additionalProperties":false,"properties":{"schemaVersion":{"const":"base-usdc-guard-rpc-v3"},"chainId":{"const":"0x2105"},"decision":{"enum":["ALLOW","BLOCK"]},"intentId":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"unsignedTxDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"reasonCodes":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"verifiedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"signBy":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$","description":"Hard client deadline: sign and broadcast only before this instant."},"canonicalSafe":{"type":"object","required":["block","providers"],"additionalProperties":false,"properties":{"block":{"type":"object","required":["number","numberHex","hash","timestamp","timestampUnix","ageSeconds","baseFeePerGasWei"],"additionalProperties":false,"properties":{"number":{"type":"integer","minimum":0},"numberHex":{"type":"string","pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$"},"hash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"timestamp":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"timestampUnix":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"ageSeconds":{"type":"integer","minimum":0},"baseFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}}},"providers":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"object","required":["hostname","operator","safeHeadNumber","safeHeadHash","commonSafeLagBlocks"],"additionalProperties":false,"properties":{"hostname":{"type":"string","minLength":1},"operator":{"type":"string","minLength":1},"safeHeadNumber":{"type":"integer","minimum":0},"safeHeadHash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"commonSafeLagBlocks":{"type":"integer","minimum":0}}},"description":"Exactly two independently operated RPC safe heads bound to one canonical safe block."}}},"executionRecent":{"type":"object","required":["block","providers"],"additionalProperties":false,"properties":{"block":{"type":"object","required":["number","numberHex","hash","timestamp","timestampUnix","ageSeconds","baseFeePerGasWei"],"additionalProperties":false,"properties":{"number":{"type":"integer","minimum":0},"numberHex":{"type":"string","pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$"},"hash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"timestamp":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"timestampUnix":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"ageSeconds":{"type":"integer","minimum":0},"baseFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}}},"providers":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"object","required":["hostname","operator","latestHeadNumber","latestHeadHash","commonLatestLagBlocks"],"additionalProperties":false,"properties":{"hostname":{"type":"string","minLength":1},"operator":{"type":"string","minLength":1},"latestHeadNumber":{"type":"integer","minimum":0},"latestHeadHash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"commonLatestLagBlocks":{"type":"integer","minimum":0}}},"description":"Exactly two independently operated RPC latest heads bound to recent execution state."}}},"checks":{"type":"object","required":["token","sender","balances","policy","simulation","fees"],"additionalProperties":false,"properties":{"token":{"type":"object","required":["address","codeHash"],"additionalProperties":false,"properties":{"address":{"const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"codeHash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"}}},"sender":{"oneOf":[{"type":"object","required":["address","codeEmpty","codeHash","nonce","pendingNonceAdvisory"],"additionalProperties":false,"properties":{"address":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"codeEmpty":{"const":true},"codeHash":{"type":"null"},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"pendingNonceAdvisory":{"anyOf":[{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},{"type":"null"}],"description":"Advisory only; null unless both RPC operators agree on a non-regressing pending nonce."}}},{"type":"object","required":["address","codeEmpty","codeHash","nonce","pendingNonceAdvisory"],"additionalProperties":false,"properties":{"address":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"codeEmpty":{"const":false},"codeHash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"pendingNonceAdvisory":{"anyOf":[{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},{"type":"null"}]}}}]},"balances":{"type":"object","required":["usdcAtomic","nativeWei"],"additionalProperties":false,"properties":{"usdcAtomic":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"nativeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}}},"policy":{"type":"object","required":["paused","senderBlacklisted","recipientBlacklisted"],"additionalProperties":false,"properties":{"paused":{"type":"boolean"},"senderBlacklisted":{"type":"boolean"},"recipientBlacklisted":{"type":"boolean"}}},"simulation":{"type":"object","required":["success","estimatedGas"],"additionalProperties":false,"properties":{"success":{"type":"boolean"},"estimatedGas":{"anyOf":[{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},{"type":"null"}]}}},"fees":{"type":"object","required":["gasLimit","estimatedGas","maxFeePerGasWei","maxPriorityFeePerGasWei","executionBaseFeePerGasWei","executionFeeUpperBoundWei","l1FeeUpperBoundWei","unsignedTxSizeBytes","totalFeeUpperBoundWei","maxTotalFeeWei"],"additionalProperties":false,"properties":{"gasLimit":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78},"estimatedGas":{"anyOf":[{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},{"type":"null"}]},"maxFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"maxPriorityFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"executionBaseFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"executionFeeUpperBoundWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"l1FeeUpperBoundWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"unsignedTxSizeBytes":{"type":"integer","minimum":1},"totalFeeUpperBoundWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}}}}}}},"decision":{"enum":["ALLOW","BLOCK"]},"reasonCodes":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true},"payment":{"type":"object","required":["protocol","status","network","amount","asset","attestedByProof","verification"],"additionalProperties":false,"properties":{"protocol":{"const":"x402"},"status":{"const":"external-evidence-required"},"network":{"enum":["eip155:84532","eip155:8453"]},"amount":{"const":"$0.01"},"asset":{"const":"USDC"},"attestedByProof":{"const":false},"verification":{"const":"payment-response-required"}}}},"description":"Signed-mandate v3 pre-sign result. Pin both the Guard Ed25519 key and expected mandate issuer."}}}},"400":{"description":"Malformed, structurally blocked, expired, or non-canonical request. No payment is requested."},"402":{"description":"Structurally valid, fresh request; x402 payment authorization required. Obtain this response immediately before paying rather than relying on cached discovery metadata."},"409":{"description":"The mandate nonce was consumed or already bound, or the request/digest changed or expired while being evaluated. Payment is not settled."},"503":{"description":"Independent evidence or launch readiness unavailable. Payment is not settled."}}},"get":{"responses":{"405":{"description":"Use POST."}}},"head":{"responses":{"405":{"description":"Use POST."}}}},"/api/v1/base/usdc/guard/lint":{"post":{"operationId":"lintBaseUsdcTransaction","summary":"Free signed-mandate and structural lint with no RPC or x402 payment","description":"Asynchronously recovers the EIP-712 mandate issuer, verifies its exact Guard audience and signed validity window, derives policy from the mandate, canonicalizes every Guard v3 transaction field, and returns local ALLOW or BLOCK. Caller policy is forbidden. This endpoint never queries an RPC, reserves the single-use mandate nonce, or asks for payment. A local ALLOW is not a state verdict and only means the same fresh signed request may proceed to the paid endpoint, where the nonce is durably reserved before payment.","tags":["Agent Transaction Guard"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["transaction","mandate"],"additionalProperties":false,"properties":{"transaction":{"type":"object","required":["type","chainId","from","to","data","value","nonce","gasLimit","maxFeePerGasWei","maxPriorityFeePerGasWei","accessList"],"additionalProperties":false,"properties":{"type":{"const":"0x2"},"chainId":{"const":8453},"from":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"to":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"data":{"type":"string","pattern":"^0xa9059cbb[0-9a-f]{128}$"},"value":{"const":"0"},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact sender nonce."},"gasLimit":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Exact non-zero gas limit."},"maxFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 fee cap."},"maxPriorityFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 priority-fee cap."},"accessList":{"type":"array","maxItems":0}},"description":"Complete canonical-lowercase unsigned Base Mainnet EIP-1559 transaction."},"mandate":{"type":"object","required":["message","signature"],"additionalProperties":false,"properties":{"message":{"type":"object","required":["issuer","sender","token","recipient","amountAtomic","unsignedTxDigest","maxTotalFeeWei","notBefore","validUntil","nonce","audience"],"additionalProperties":false,"properties":{"issuer":{"type":"string","pattern":"^0x[a-f0-9]{40}$","description":"Authenticated EIP-712 signer. The buyer must pin the expected issuer out of band."},"sender":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"token":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"recipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"amountAtomic":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Official Base USDC atomic amount."},"unsignedTxDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Maximum execution plus Base L1 data fee."},"notBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$","description":"Signed validity end; lifetime from notBefore must not exceed five minutes."},"nonce":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"Owner-chosen unique bytes32 nonce. Reuse is rejected durably by the service."},"audience":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"keccak256 of the exact canonical public HTTPS origin plus Guard path."}}},"signature":{"type":"string","pattern":"^0x[a-f0-9]{128}(?:1b|1c)$","description":"65-byte EIP-712 signature over ProofOfUtilityAgentGuardMandate v1."}},"description":"Owner-signed authorization. It is not a payment signature and contains no private key."}},"description":"Exact v3 request. Caller policy is forbidden; the Guard derives it only after viem verifies the EIP-712 owner mandate."}}}},"responses":{"200":{"description":"Free local ALLOW or BLOCK with intentId, unsignedTxDigest, and stable reason codes."},"400":{"description":"Malformed or non-canonical request."}}},"get":{"responses":{"405":{"description":"Use POST."}}}},"/api/v1/base/usdc/guard/receipts/{paymentIdentifier}":{"get":{"operationId":"recoverGuardProof","summary":"Recover an already-paid guard response without paying again","parameters":[{"in":"path","name":"paymentIdentifier","required":true,"schema":{"type":"string","pattern":"^pou_[a-f0-9]{12}4[a-f0-9]{3}[89ab][a-f0-9]{15}$"}}],"responses":{"200":{"description":"Original immutable guard proof. Recovery does not extend validUntil or make an expired ALLOW signable again.","headers":{"agent-transaction-guard-attestation":{"description":"The same deterministic Ed25519 attestation over the recovered guardId.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["schemaVersion","resource","guardId","generatedAt","validUntil","intent","inspection","issuerTrust","verification","decision","reasonCodes","payment"],"additionalProperties":false,"properties":{"schemaVersion":{"const":"agent-transaction-guard-v3"},"resource":{"const":"agent-transaction-guard"},"guardId":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"generatedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"intent":{"type":"object","required":["transaction","mandate","policy"],"additionalProperties":false,"properties":{"transaction":{"type":"object","required":["type","chainId","from","to","data","value","nonce","gasLimit","maxFeePerGasWei","maxPriorityFeePerGasWei","accessList"],"additionalProperties":false,"properties":{"type":{"const":"0x2"},"chainId":{"const":8453},"from":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"to":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"data":{"type":"string","pattern":"^0xa9059cbb[0-9a-f]{128}$"},"value":{"const":"0"},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact sender nonce."},"gasLimit":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Exact non-zero gas limit."},"maxFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 fee cap."},"maxPriorityFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 priority-fee cap."},"accessList":{"type":"array","maxItems":0}},"description":"Complete canonical-lowercase unsigned Base Mainnet EIP-1559 transaction."},"mandate":{"type":"object","required":["message","signature"],"additionalProperties":false,"properties":{"message":{"type":"object","required":["issuer","sender","token","recipient","amountAtomic","unsignedTxDigest","maxTotalFeeWei","notBefore","validUntil","nonce","audience"],"additionalProperties":false,"properties":{"issuer":{"type":"string","pattern":"^0x[a-f0-9]{40}$","description":"Authenticated EIP-712 signer. The buyer must pin the expected issuer out of band."},"sender":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"token":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"recipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"amountAtomic":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Official Base USDC atomic amount."},"unsignedTxDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Maximum execution plus Base L1 data fee."},"notBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$","description":"Signed validity end; lifetime from notBefore must not exceed five minutes."},"nonce":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"Owner-chosen unique bytes32 nonce. Reuse is rejected durably by the service."},"audience":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"keccak256 of the exact canonical public HTTPS origin plus Guard path."}}},"signature":{"type":"string","pattern":"^0x[a-f0-9]{128}(?:1b|1c)$","description":"65-byte EIP-712 signature over ProofOfUtilityAgentGuardMandate v1."}},"description":"Owner-signed authorization. It is not a payment signature and contains no private key."},"policy":{"type":"object","required":["expectedRecipient","expectedAmount","validUntil","maxTotalFeeWei"],"additionalProperties":false,"properties":{"expectedRecipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"expectedAmount":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}},"description":"Server-derived only from the verified mandate; never accepted from the caller."}},"description":"Canonical signed intent and its strictly derived internal policy."},"inspection":{"type":"object","required":["schemaVersion","decision","intentId","unsignedTxDigest","intent","mandateVerification","issuerTrust","reasonCodes","validUntil","decodedEffects"],"additionalProperties":false,"properties":{"schemaVersion":{"const":"base-usdc-transfer-intent-v3"},"decision":{"const":"ALLOW"},"intentId":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"unsignedTxDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"intent":{"type":"object","required":["transaction","mandate","policy"],"additionalProperties":false,"properties":{"transaction":{"type":"object","required":["type","chainId","from","to","data","value","nonce","gasLimit","maxFeePerGasWei","maxPriorityFeePerGasWei","accessList"],"additionalProperties":false,"properties":{"type":{"const":"0x2"},"chainId":{"const":8453},"from":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"to":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"data":{"type":"string","pattern":"^0xa9059cbb[0-9a-f]{128}$"},"value":{"const":"0"},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact sender nonce."},"gasLimit":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Exact non-zero gas limit."},"maxFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 fee cap."},"maxPriorityFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Exact EIP-1559 priority-fee cap."},"accessList":{"type":"array","maxItems":0}},"description":"Complete canonical-lowercase unsigned Base Mainnet EIP-1559 transaction."},"mandate":{"type":"object","required":["message","signature"],"additionalProperties":false,"properties":{"message":{"type":"object","required":["issuer","sender","token","recipient","amountAtomic","unsignedTxDigest","maxTotalFeeWei","notBefore","validUntil","nonce","audience"],"additionalProperties":false,"properties":{"issuer":{"type":"string","pattern":"^0x[a-f0-9]{40}$","description":"Authenticated EIP-712 signer. The buyer must pin the expected issuer out of band."},"sender":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"token":{"type":"string","const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"recipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"amountAtomic":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78,"description":"Official Base USDC atomic amount."},"unsignedTxDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78,"description":"Maximum execution plus Base L1 data fee."},"notBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$","description":"Signed validity end; lifetime from notBefore must not exceed five minutes."},"nonce":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"Owner-chosen unique bytes32 nonce. Reuse is rejected durably by the service."},"audience":{"type":"string","pattern":"^0x[a-f0-9]{64}$","description":"keccak256 of the exact canonical public HTTPS origin plus Guard path."}}},"signature":{"type":"string","pattern":"^0x[a-f0-9]{128}(?:1b|1c)$","description":"65-byte EIP-712 signature over ProofOfUtilityAgentGuardMandate v1."}},"description":"Owner-signed authorization. It is not a payment signature and contains no private key."},"policy":{"type":"object","required":["expectedRecipient","expectedAmount","validUntil","maxTotalFeeWei"],"additionalProperties":false,"properties":{"expectedRecipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"expectedAmount":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}},"description":"Server-derived only from the verified mandate; never accepted from the caller."}},"description":"Canonical signed intent and its strictly derived internal policy."},"mandateVerification":{"type":"object","required":["schemaVersion","scheme","domainName","domainVersion","chainId","domainSalt","typedDataDigest","recoveredIssuer","signatureValid","audience","audienceResource","verifiedAt","issuerTrust"],"additionalProperties":false,"properties":{"schemaVersion":{"const":"base-usdc-agent-guard-mandate-v1"},"scheme":{"const":"EIP-712/secp256k1"},"domainName":{"const":"ProofOfUtilityAgentGuardMandate"},"domainVersion":{"const":"1"},"chainId":{"const":8453},"domainSalt":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"typedDataDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"recoveredIssuer":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"signatureValid":{"const":true},"audience":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"audienceResource":{"type":"string","pattern":"^https://.+"},"verifiedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"issuerTrust":{"const":"out-of-band-pin-required","description":"Signature validity authenticates an address; it does not decide which issuer the buyer trusts."}}},"issuerTrust":{"const":"out-of-band-pin-required"},"reasonCodes":{"type":"array","maxItems":0},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"decodedEffects":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","required":["type","chainId","token","from","recipient","amountAtomic","nativeValue"],"additionalProperties":false,"properties":{"type":{"const":"erc20-transfer"},"chainId":{"const":8453},"token":{"const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"from":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"recipient":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"amountAtomic":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78},"nativeValue":{"const":"0"}}}}}},"issuerTrust":{"const":"out-of-band-pin-required"},"verification":{"type":"object","required":["schemaVersion","chainId","decision","intentId","unsignedTxDigest","reasonCodes","validUntil","verifiedAt","signBy","canonicalSafe","executionRecent","checks"],"additionalProperties":false,"properties":{"schemaVersion":{"const":"base-usdc-guard-rpc-v3"},"chainId":{"const":"0x2105"},"decision":{"enum":["ALLOW","BLOCK"]},"intentId":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"unsignedTxDigest":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"reasonCodes":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true},"validUntil":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"verifiedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"signBy":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$","description":"Hard client deadline: sign and broadcast only before this instant."},"canonicalSafe":{"type":"object","required":["block","providers"],"additionalProperties":false,"properties":{"block":{"type":"object","required":["number","numberHex","hash","timestamp","timestampUnix","ageSeconds","baseFeePerGasWei"],"additionalProperties":false,"properties":{"number":{"type":"integer","minimum":0},"numberHex":{"type":"string","pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$"},"hash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"timestamp":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"timestampUnix":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"ageSeconds":{"type":"integer","minimum":0},"baseFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}}},"providers":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"object","required":["hostname","operator","safeHeadNumber","safeHeadHash","commonSafeLagBlocks"],"additionalProperties":false,"properties":{"hostname":{"type":"string","minLength":1},"operator":{"type":"string","minLength":1},"safeHeadNumber":{"type":"integer","minimum":0},"safeHeadHash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"commonSafeLagBlocks":{"type":"integer","minimum":0}}},"description":"Exactly two independently operated RPC safe heads bound to one canonical safe block."}}},"executionRecent":{"type":"object","required":["block","providers"],"additionalProperties":false,"properties":{"block":{"type":"object","required":["number","numberHex","hash","timestamp","timestampUnix","ageSeconds","baseFeePerGasWei"],"additionalProperties":false,"properties":{"number":{"type":"integer","minimum":0},"numberHex":{"type":"string","pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$"},"hash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"timestamp":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"},"timestampUnix":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"ageSeconds":{"type":"integer","minimum":0},"baseFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}}},"providers":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"object","required":["hostname","operator","latestHeadNumber","latestHeadHash","commonLatestLagBlocks"],"additionalProperties":false,"properties":{"hostname":{"type":"string","minLength":1},"operator":{"type":"string","minLength":1},"latestHeadNumber":{"type":"integer","minimum":0},"latestHeadHash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"commonLatestLagBlocks":{"type":"integer","minimum":0}}},"description":"Exactly two independently operated RPC latest heads bound to recent execution state."}}},"checks":{"type":"object","required":["token","sender","balances","policy","simulation","fees"],"additionalProperties":false,"properties":{"token":{"type":"object","required":["address","codeHash"],"additionalProperties":false,"properties":{"address":{"const":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"codeHash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"}}},"sender":{"oneOf":[{"type":"object","required":["address","codeEmpty","codeHash","nonce","pendingNonceAdvisory"],"additionalProperties":false,"properties":{"address":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"codeEmpty":{"const":true},"codeHash":{"type":"null"},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"pendingNonceAdvisory":{"anyOf":[{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},{"type":"null"}],"description":"Advisory only; null unless both RPC operators agree on a non-regressing pending nonce."}}},{"type":"object","required":["address","codeEmpty","codeHash","nonce","pendingNonceAdvisory"],"additionalProperties":false,"properties":{"address":{"type":"string","pattern":"^0x[a-f0-9]{40}$"},"codeEmpty":{"const":false},"codeHash":{"type":"string","pattern":"^0x[a-f0-9]{64}$"},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"pendingNonceAdvisory":{"anyOf":[{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},{"type":"null"}]}}}]},"balances":{"type":"object","required":["usdcAtomic","nativeWei"],"additionalProperties":false,"properties":{"usdcAtomic":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"nativeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}}},"policy":{"type":"object","required":["paused","senderBlacklisted","recipientBlacklisted"],"additionalProperties":false,"properties":{"paused":{"type":"boolean"},"senderBlacklisted":{"type":"boolean"},"recipientBlacklisted":{"type":"boolean"}}},"simulation":{"type":"object","required":["success","estimatedGas"],"additionalProperties":false,"properties":{"success":{"type":"boolean"},"estimatedGas":{"anyOf":[{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},{"type":"null"}]}}},"fees":{"type":"object","required":["gasLimit","estimatedGas","maxFeePerGasWei","maxPriorityFeePerGasWei","executionBaseFeePerGasWei","executionFeeUpperBoundWei","l1FeeUpperBoundWei","unsignedTxSizeBytes","totalFeeUpperBoundWei","maxTotalFeeWei"],"additionalProperties":false,"properties":{"gasLimit":{"type":"string","pattern":"^[1-9][0-9]*$","maxLength":78},"estimatedGas":{"anyOf":[{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},{"type":"null"}]},"maxFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"maxPriorityFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"executionBaseFeePerGasWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"executionFeeUpperBoundWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"l1FeeUpperBoundWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"unsignedTxSizeBytes":{"type":"integer","minimum":1},"totalFeeUpperBoundWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"maxTotalFeeWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}}}}}}},"decision":{"enum":["ALLOW","BLOCK"]},"reasonCodes":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true},"payment":{"type":"object","required":["protocol","status","network","amount","asset","attestedByProof","verification"],"additionalProperties":false,"properties":{"protocol":{"const":"x402"},"status":{"const":"external-evidence-required"},"network":{"enum":["eip155:84532","eip155:8453"]},"amount":{"const":"$0.01"},"asset":{"const":"USDC"},"attestedByProof":{"const":false},"verification":{"const":"payment-response-required"}}}},"description":"Signed-mandate v3 pre-sign result. Pin both the Guard Ed25519 key and expected mandate issuer."}}}},"400":{"description":"Invalid payment identifier."},"404":{"description":"No durable delivery exists for this identifier."}}}},"/api/v1/base/usdc/guard/receipts/{paymentIdentifier}/status":{"get":{"operationId":"getGuardReceiptStatus","summary":"Inspect settlement/delivery state without exposing payer details","parameters":[{"in":"path","name":"paymentIdentifier","required":true,"schema":{"type":"string","pattern":"^pou_[a-f0-9]{12}4[a-f0-9]{3}[89ab][a-f0-9]{15}$"}}],"responses":{"200":{"description":"Redacted durable status."},"400":{"description":"Invalid payment identifier."},"404":{"description":"Not found."}}}},"/api/v1/base/usdc/guard/receipts/{paymentIdentifier}/settlement":{"get":{"operationId":"getGuardTransactionCycle","summary":"Recover the private Guard-to-transaction settlement cycle","description":"The payment identifier is a bearer recovery secret. Returns the immutable Guard proof, the first transaction-hash binding, and all recorded finality checks without payer or payment authorization data.","parameters":[{"in":"path","name":"paymentIdentifier","required":true,"schema":{"type":"string","pattern":"^pou_[a-f0-9]{12}4[a-f0-9]{3}[89ab][a-f0-9]{15}$"}}],"responses":{"200":{"description":"Durable private cycle record."},"400":{"description":"Invalid payment identifier."},"404":{"description":"No transaction has been bound to this paid proof."}}},"post":{"operationId":"verifyGuardTransactionSettlement","summary":"Bind one broadcast transaction and verify its conformance","description":"Binds the paid ALLOW proof permanently to the first submitted transaction hash, then reads that transaction and receipt from independent Base RPC operators. Repeating the same hash is safe; a conflicting hash is rejected. PENDING is a signed observation, not success. CONFORMS means the mined transaction still matches the exact guarded EIP-1559 digest at the requested finality.","parameters":[{"in":"path","name":"paymentIdentifier","required":true,"schema":{"type":"string","pattern":"^pou_[a-f0-9]{12}4[a-f0-9]{3}[89ab][a-f0-9]{15}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["transactionHash","requestedFinality"],"properties":{"transactionHash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$"},"requestedFinality":{"type":"string","enum":["included","safe","finalized"]}}}}}},"responses":{"200":{"description":"Signed PENDING, CONFORMS, or DOES_NOT_CONFORM settlement proof.","headers":{"agent-transaction-guard-settlement-attestation":{"description":"Canonical base64url Ed25519 attestation bound to settlementProofId.","schema":{"type":"string"}}}},"400":{"description":"Invalid transaction hash, finality, or request shape."},"404":{"description":"No paid Guard proof exists for this bearer identifier."},"409":{"description":"The proof is BLOCK or was already bound to another transaction."},"503":{"description":"Independent settlement evidence or durable state is unavailable."}}}}},"x-proof-of-utility":{"primaryOffer":"agent-transaction-guard","price":{"amount":"$0.01","asset":"USDC","atomicAmount":"10000"},"x402PaymentNetwork":"eip155:84532","targetTransactionNetwork":"eip155:8453","paymentIdentifierRequired":true,"requestContract":"Exact {transaction, mandate}. Caller policy is forbidden. transaction is a complete type-0x2 Base transaction, while mandate is exactly {message, signature} and policy is derived only after that signature is verified.","authorization":{"scheme":"EIP-712/secp256k1","issuerTrust":"out-of-band-pin-required","audience":"https://tollary.p-e.kr/api/v1/base/usdc/guard","maxLifetimeSeconds":300,"singleUseNonce":true,"callerPolicyAccepted":false,"domain":{"name":"ProofOfUtilityAgentGuardMandate","version":"1","chainId":8453,"salt":"keccak256(canonicalPublicHttpsOrigin + '/api/v1/base/usdc/guard')"},"primaryType":"AgentGuardMandate","messageFields":[{"name":"issuer","type":"address"},{"name":"sender","type":"address"},{"name":"token","type":"address"},{"name":"recipient","type":"address"},{"name":"amountAtomic","type":"uint256"},{"name":"unsignedTxDigest","type":"bytes32"},{"name":"maxTotalFeeWei","type":"uint256"},{"name":"notBefore","type":"string"},{"name":"validUntil","type":"string"},{"name":"nonce","type":"bytes32"},{"name":"audience","type":"bytes32"}],"signature":"Canonical lowercase 65-byte secp256k1 signature with non-zero r, low-s, and v 1b or 1c.","expectedIssuer":"out-of-band-pin-required"},"signing":{"isolatedSignerRequired":true,"maxVerdictLifetimeSeconds":10,"exactSignedBytesEnforcedBySdk":true,"deadlineField":"verification.signBy","digestField":"unsignedTxDigest"},"signerContract":"Require an out-of-band expected issuer, verify the Guard Ed25519 descriptor, and reject any expired signBy. Compare every returned intent.transaction field and unsignedTxDigest with the exact unsigned transaction both before and after signing. Any difference means do not broadcast.","guardIdBinding":"The response guardId binds the complete transaction and signed mandate, mandate-derived policy, structural inspection, canonicalSafe audit evidence, executionRecent state, decision, and generation time.","rpcSchema":"base-usdc-guard-rpc-v3","rpcEvidence":"Exactly two independent RPC operators establish canonicalSafe audit evidence and executionRecent signing state. The proof carries both block timestamps and ages, provider safe/latest head lag, sender code-empty classification or code hash, recent nonce, pending nonce advisory only on agreement, simulation, and explicit execution-plus-L1 fee bounds.","signingInterface":{"status":"active","header":"agent-transaction-guard-attestation","algorithm":"Ed25519","signedField":"guardId","publicDescriptor":{"jwk":{"kty":"OKP","crv":"Ed25519","x":"YLdb0mg0MkwRRBO8YYfYXoUhdXv6FEN6mjzOeEmIv_w"},"keyId":"pou-guard-2026-08-29-01","fingerprint":"sha256:dd594cdf125b67b4348af4fcd79a6e4a1fb4f16f76035f6869f075f18d83a935"}},"settlementBoundary":"The JSON payment object is descriptive. PAYMENT-RESPONSE is the x402 settlement evidence.","commercialContract":{"disclosureUrl":"https://tollary.p-e.kr/legal","disclosureApiUrl":"https://tollary.p-e.kr/api/legal","priceAndSchemaUrl":"https://tollary.p-e.kr/api/product","openapiUrl":"https://tollary.p-e.kr/openapi.guard.json","acceptanceEvent":"buyer-submits-x402-payment-authorization-after-current-402-challenge","statutoryRightsPreserved":true,"deliveredResult":"paid-allow-or-state-derived-block","serviceFailureIsDeliveredResult":false},"recovery":{"proof":"GET /api/v1/base/usdc/guard/receipts/{paymentIdentifier}","status":"GET /api/v1/base/usdc/guard/receipts/{paymentIdentifier}/status","transactionCycle":"GET /api/v1/base/usdc/guard/receipts/{paymentIdentifier}/settlement"},"postSettlement":"POST /api/v1/base/usdc/guard/receipts/{paymentIdentifier}/settlement with exactly {transactionHash, requestedFinality}; requestedFinality is included, safe, or finalized. Verify the separate agent-transaction-guard-settlement-attestation header.","mandateTimeTemplates":{"notBefore":"{{CURRENT_CANONICAL_ISO_8601_UTC}}","validUntil":"{{CANONICAL_ISO_8601_UTC_WITHIN_5_MINUTES_OF_NOT_BEFORE}}"}}}