{"uid":"cap_h6n7MkNI78dTeh_GtIkem","slug":"korp-txcert-transaction-policy-checker-a585ca8a","name":"Korp TxCert Transaction Policy Checker","description":"Check an unsigned EVM transaction before an AI agent signs it. Enforces spending limits, recipient restrictions, ERC20 approval rules, unlimited approval protection, and calldata policy. Only PASS receives a short-lived policy certificate. This is policy conformity, not simulation or a safety guarantee.","url":"https://korp-txcert.mute-cell-557f.workers.dev/v1/tx/check","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"from":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"policy":{"type":"object","required":["expectedAction","allowedRecipients","allowedSpenders","maxNativeValueWei","maxTokenSpend","allowUnlimitedApproval","allowUnknownCalls"],"properties":{"maxTokenSpend":{"type":"array","items":{"type":"object","required":["token","amount"],"properties":{"token":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"amount":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}},"additionalProperties":false},"maxItems":100},"expectedAction":{"enum":["native-transfer","transfer","transferFrom","approve","swap","unknown"],"type":"string"},"allowedSpenders":{"type":"array","items":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"maxItems":100},"allowUnknownCalls":{"type":"boolean"},"allowedRecipients":{"type":"array","items":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"maxItems":100},"maxNativeValueWei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"allowUnlimitedApproval":{"type":"boolean"}},"additionalProperties":false},"chainId":{"type":"number","const":8453},"transaction":{"type":"object","required":["to","data","value"],"properties":{"to":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"data":{"type":"string","pattern":"^0x(?:[0-9a-fA-F]{2})*$","maxLength":8194},"nonce":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78},"value":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","maxLength":78}},"additionalProperties":false}}},"responseSchema":{"type":"json","example":{"checks":[{"id":"CHAIN_ALLOWED","status":"PASS"},{"id":"SENDER_NOT_BURN","status":"PASS"},{"id":"TARGET_NOT_BURN","status":"PASS"},{"id":"NATIVE_VALUE_LIMIT","status":"BLOCK"},{"id":"RECIPIENT_ALLOWED","status":"PASS"},{"id":"EXPECTED_ACTION","status":"PASS"}],"chainId":8453,"decoded":{"action":"native-transfer","amount":"1001","recipient":"0x3333333333333333333333333333333333333333"},"version":"1","decision":"BLOCK","policyHash":"0x76c972b65aef2890ac0f1d0e1161b899b6e6cef2ebb56d90e16c3e1dc04ac8e0","certificate":null,"transactionHash":"0xa0d43ab25ccb83ae60f29efb115f48c9976bd0ed4ba54b25e9f0bfd7f67eac93"}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_5pSd1au1_3TCwsy5nl2Ac","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Validates an unsigned EVM transaction against a caller-defined policy (spending limits, recipient allowlists, ERC20 approval rules) and issues a short-lived certificate only on PASS","exampleAgentPrompt":"Before you sign this transaction, run it through Korp TxCert to check it against my policy — the sender is 0xAbCd...1234, it's a native-transfer on Base (chainId 8453), the max native value is 500000000000000000 wei, allowed recipients are [0xRecipient1...], and unlimited approvals are not allowed.","exampleUseCases":[{"title":"Guard AI agent wallet spending","prompt":"Before my agent signs any transaction today, check each one against my policy: max native spend of 1 ETH (1000000000000000000 wei), only allow transfers to 0xTrusted1111...1111 and 0xTrusted2222...2222 on Base, and block any unlimited ERC20 approvals — only issue a certificate if it fully passes."},{"title":"Enforce ERC20 approval limits","prompt":"My agent is about to send an approve transaction on Base from 0xMyWallet...aaaa to spender 0xDEX...bbbb — check it against my policy requiring a max token spend of 1000 USDC (token 0xA0b8...eB48) and block if it tries to set an unlimited allowance."},{"title":"Validate swap transaction before execution","prompt":"I have an unsigned swap transaction my agent wants to submit on Base — check it against my policy: expected action is swap, allowed recipients are [0xRouter...cccc], max native value is 0 wei, unknown calls are not allowed, and tell me whether it gets a PASS certificate or is blocked."}],"resultDescription":"Returns a JSON object with a 'decision' field (PASS or BLOCK), an array of individual check results each with an ID and status, the decoded transaction action and amount, a policy hash, a transaction hash, and a short-lived 'certificate' string (non-null only on PASS) that can be used to authorize signing.","failureModes":["Transaction blocked due to native value exceeding maxNativeValueWei — decision BLOCK, certificate null","Recipient not in allowedRecipients list — RECIPIENT_ALLOWED check fails","Unlimited ERC20 approval detected when allowUnlimitedApproval is false — check blocked","Unexpected action type doesn't match expectedAction policy — EXPECTED_ACTION check fails","Malformed address format (not matching 0x[40 hex chars]) — request rejected with validation error","chainId not 8453 (Base) — CHAIN_ALLOWED check fails","calldata exceeds 8194 hex chars limit — request rejected","Payment not included or insufficient USDC — 402 Payment Required response"],"whenToPreferThis":"Use Korp TxCert when you need a lightweight, policy-enforced pre-signing gate for AI agent transactions on Base (chainId 8453). It is ideal when you want to enforce strict spending limits, recipient allowlists, or ERC20 approval caps before an agent signs — and need a cryptographic certificate as proof of policy conformity. Prefer this over generic simulation tools when the goal is policy enforcement (not outcome prediction) and you want a structured PASS/BLOCK decision with per-check audit trail.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-18T06:30:21.756Z","isFirstParty":false}