{"uid":"cap_-zf6dZ76JMDBQLulfkKAN","slug":"halowerk-x402werk-policy-check-4f70d57c","name":"HALOWERK x402werk Policy Check","description":"A stateless rule check for agents that pay for x402 endpoints. You supply the proposed payment, your policy and the amounts already spent this hour and this day; this endpoint keeps no ledger of its own and returns your counters unchanged. Every configured rule — max_per_call, max_per_hour, max_per_day, allowed_chains, allowed_assets, allowed_recipients, blocked_recipients, require_schema — is reported individually as erfuellt, verletzt, nicht_pruefbar or nicht_gesetzt, together with the limit a","url":"https://x402.halowerk.com/policy/check","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"policy":{"type":"object","properties":{"max_per_day":{"type":"string","pattern":"^[0-9]+(\\.[0-9]+)?$","description":"Largest allowed sum per day, in whole tokens."},"max_per_call":{"type":"string","pattern":"^[0-9]+(\\.[0-9]+)?$","description":"Largest allowed single payment, in whole tokens of the proposed asset, for example \"0.05\"."},"max_per_hour":{"type":"string","pattern":"^[0-9]+(\\.[0-9]+)?$","description":"Largest allowed sum per hour, in whole tokens."},"allowed_assets":{"type":"array","items":{"type":"string"},"description":"Token addresses you accept. Omit to allow any."},"allowed_chains":{"type":"array","items":{"type":"string"},"description":"Chains you accept, as CAIP-2 or short names. Omit to allow any."},"require_schema":{"type":"boolean","description":"Whether the offer must declare an inputSchema."},"allowed_recipients":{"type":"array","items":{"type":"string"},"description":"Recipient addresses you accept. Omit to allow any; the recipient is then flagged as unverified."},"blocked_recipients":{"type":"array","items":{"type":"string"},"description":"Recipient addresses you refuse. Beats allowed_recipients on conflict."}},"additionalProperties":false},"spent_so_far":{"type":"object","properties":{"day":{"type":"string","pattern":"^[0-9]+(\\.[0-9]+)?$","description":"Already spent in the current day, in whole tokens."},"hour":{"type":"string","pattern":"^[0-9]+(\\.[0-9]+)?$","description":"Already spent in the current hour, in whole tokens."}},"additionalProperties":false},"proposed_payment":{"type":"object","required":["amount_units"],"properties":{"asset":{"type":"string","description":"Token contract address, or \"native\" for the chain coin."},"chain":{"type":"string","description":"Chain as CAIP-2 (\"eip155:8453\"), short name (\"base\") or chain id."},"pay_to":{"type":"string","description":"Recipient address of the proposed payment."},"resource":{"type":"string","maxLength":2048,"description":"URL of the resource being bought. Nothing is fetched; it is only checked for shape."},"amount_units":{"type":"string","pattern":"^[0-9]{1,78}$","description":"Amount of the proposed payment as an integer in the smallest unit of the token."},"input_schema_present":{"type":"boolean","description":"Whether the offer declares an inputSchema. Use Nr. 83 to find out if you do not know."}},"additionalProperties":false}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.002","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.002/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_9o2vQPn7Jiv-QALOVzChK","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.002","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Stateless rule-based validation of a proposed x402 payment against a caller-supplied spending policy and running totals, returning per-rule verdicts without storing any state.","exampleAgentPrompt":"Before I pay for this x402 endpoint, check whether the proposed payment of 0.05 USDC on Base to recipient 0xABC...123 is allowed under my policy — max 0.10 per call, max 1.00 per hour, max 5.00 per day, only USDC on base, with 0.30 already spent this hour and 1.20 today.","exampleUseCases":[{"title":"Per-call spend cap enforcement","prompt":"I'm about to pay 0.08 USDC on Base for an x402 resource — check this against my policy of max 0.05 per call, max 2.00 per hour, max 10.00 per day, only allowing Base chain and USDC, with 0.50 spent this hour and 2.00 today."},{"title":"Blocked recipient safety check","prompt":"Can you validate this proposed payment of 0.01 USDC on Base to address 0xDEAD...BEEF against my policy — I want to make sure that recipient isn't on my blocked list, and that I'm still under my daily limit of 1.00 USDC with 0.75 already spent today?"},{"title":"Multi-rule budget audit before autonomous payment","prompt":"My agent is about to auto-pay for an x402 API call — 0.02 USDC on eip155:8453 to 0x456...789. Run a full policy check: max 0.05 per call, max 0.50 per hour, max 2.00 per day, allowed assets USDC only, no allowed_recipients restriction, 0.10 spent this hour and 0.40 today. Tell me which rules pass or fail before I proceed."}],"resultDescription":"A structured response listing each configured policy rule (max_per_call, max_per_hour, max_per_day, allowed_chains, allowed_assets, allowed_recipients, blocked_recipients, require_schema) with an individual verdict of erfuellt (satisfied), verletzt (violated), nicht_pruefbar (not checkable), or nicht_gesetzt (not configured), along with the configured limit value for each rule and an overall pass/fail decision. The caller's spent_so_far counters are returned unchanged since this endpoint maintains no ledger.","failureModes":["Missing required proposed_payment.amount_units field returns a 400 validation error","Invalid numeric string patterns in policy or spent_so_far fields cause schema rejection","Ambiguous chain identifiers may result in nicht_pruefbar verdicts for chain rules","If allowed_recipients is omitted, recipient is flagged as unverified rather than allowed/blocked","Conflicting allowed_recipients and blocked_recipients resolved in favor of blocked_recipients","x402 payment required to call this endpoint; missing or invalid payment returns 402"],"whenToPreferThis":"Use this endpoint when your agent needs a stateless, per-call policy gate before authorizing an x402 payment — particularly when you maintain your own spending ledger and only need rule evaluation, not deduplication or on-chain confirmation. Prefer this over HALOWERK's stateful duplicate-check endpoint when you want pure policy validation without side effects. It is ideal for budget-constrained autonomous agents that must enforce multi-dimensional limits (per-call, per-hour, per-day) and asset/chain/recipient allowlists before committing to a payment.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T06:34:30.374Z","isFirstParty":false}