AgentBadge
A company focused on AI agent payment security, providing payment client libraries such as @agentbadge/circle-payments and emphasizing mandatory spending limits to protect agent wallets.
Timeline (last 90 days)
In AgentBadge's buyer-side design of @agentbadge/circle-payments, createPayingClient must be provided with PaymentCaps (including maxPaymentUsd and sessionBudgetUsd); omitting them throws a TypeError, and there is no unlimited mode.
AgentBadge's payment client requires all accepts[] entries to pass five checks: x402Version === 2; scheme belongs to {exact, eip3009-client-broadcast, gateway-batch}; network is in the allowlist; asset equals the chain's USDC address; and amount is less than or equal to the per-call cap.
If the payment requirement declares extra.decimals that is not 6, the client directly rejects it rather than guessing, to avoid decimal scaling errors.
The anti-loop guard throws PaymentNotAcceptedError when a retry request carrying a payment-signature returns 402 again, and never pays twice for the same request.
The networks AgentBadge allows by default are Arc mainnet (eip155:5042) and Arc testnet (eip155:5042002).
In production testing, the AgentBadge client produced three real-time rejections (amount over cap, network not in allowlist, session budget exhausted), all of which occurred before any signing.
In one real run, three payment attempts triggered a server 500 after the payment-signature was accepted, the facilitator never broadcast, and the payer's balance changed only on another successful settlement—three signatures, zero on-chain settlement on the failed attempts.
All amount calculations are based on 6-decimal atomic units using BigInt, never floating-point numbers.
When the payment requirement declares extra.payerBinding, the retry carries the X-Wallet, X-Sig, and X-Timestamp headers (EIP-191, agentbadge-pay:v1).
Spending is recorded when the funds are actually submitted—at settlement for the facilitator channel, at broadcast for self-settlement—and the onSpend(entry) hook persists each event to storage.
All Facts (10)
In AgentBadge's buyer-side design of @agentbadge/circle-payments, createPayingClient must be provided with PaymentCaps (including maxPaymentUsd and sessionBudgetUsd); omitting them throws a TypeError, and there is no unlimited mode.
50%UnverifiedAgentBadge's payment client requires all accepts[] entries to pass five checks: x402Version === 2; scheme belongs to {exact, eip3009-client-broadcast, gateway-batch}; network is in the allowlist; asset equals the chain's USDC address; and amount is less than or equal to the per-call cap.
50%UnverifiedIf the payment requirement declares extra.decimals that is not 6, the client directly rejects it rather than guessing, to avoid decimal scaling errors.
50%UnverifiedThe anti-loop guard throws PaymentNotAcceptedError when a retry request carrying a payment-signature returns 402 again, and never pays twice for the same request.
50%UnverifiedThe networks AgentBadge allows by default are Arc mainnet (eip155:5042) and Arc testnet (eip155:5042002).
50%UnverifiedWhen the payment requirement declares extra.payerBinding, the retry carries the X-Wallet, X-Sig, and X-Timestamp headers (EIP-191, agentbadge-pay:v1).
50%UnverifiedSpending is recorded when the funds are actually submitted—at settlement for the facilitator channel, at broadcast for self-settlement—and the onSpend(entry) hook persists each event to storage.
50%UnverifiedAll amount calculations are based on 6-decimal atomic units using BigInt, never floating-point numbers.
50%UnverifiedIn production testing, the AgentBadge client produced three real-time rejections (amount over cap, network not in allowlist, session budget exhausted), all of which occurred before any signing.
50%UnverifiedIn one real run, three payment attempts triggered a server 500 after the payment-signature was accepted, the facilitator never broadcast, and the payer's balance changed only on another successful settlement—three signatures, zero on-chain settlement on the failed attempts.
50%