Per-agent quota metering for the A2A network. Charges $0.001/check via x402, tracks consumption per agent DID, returns remaining quota. Inbound only. Hive Civilization.
Server implements 5 quota/metering tools with clear domain focus (x402 payment verification, quota tracking). Tool names follow verb_noun pattern (check, quote, topup, balance, stats). Descriptions are present and domain-specific (mention x402, USDC, Base L2). However, parameter descriptions are sparse or missing for several fields, and output schemas are not documented in the visible code. Error handling exists (verifyOnchain returns structured errors) but lacks recovery guidance for LLMs. No tool annotations (readOnlyHint/destructiveHint) despite clear risk distinctions (READ_ONLY vs WRITE). Schema completeness is moderate, input params have types but descriptions are minimal.
Get current quota balance for an agent DID. No payment required.
Check remaining quota for an agent DID. Requires x402 payment proof (USDC on Base L2). Returns remaining units after consumption.
Get a payment quote for quota check. Returns x402 envelope with nonce, amount, and payment instructions.
Get quota system statistics for today (UTC). Returns check counts, topup counts, and distinct agent counts.
Top up quota units for an agent DID. Requires x402 payment proof (USDC on Base L2).
Output schemas not documented. Tools return data (remaining units, x402 envelope, balance, stats) but response structure is not visible in source. LLMs cannot plan downstream calls without knowing what fields to expect.
Parameter descriptions are minimal or absent. Fields like 'nonce', 'chain', 'tx_hash', 'payer', 'signature', 'message' lack explanations of their purpose, format, or constraints. LLMs cannot infer whether to pass these or how to obtain them.
No tool annotations despite clear risk profile. quota/check and quota/topup are destructive (WRITE, consume units, charge payment); quota/balance, quota/quote, quota/stats are read-only. Missing destructiveHint and readOnlyHint annotations prevent LLMs from reasoning about safety and retry semantics.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Error responses lack recovery guidance. verifyOnchain() returns structured errors (bad_tx_hash_format, tx_not_found, tx_reverted, underpaid) but does not tell the LLM what to do next. E.g., 'underpaid' should suggest 'Call quota/quote to get the correct amount, then retry with a new tx_hash.'
Parameter 'chain' is hardcoded to 'base' but exposed as a required string parameter. This invites LLMs to pass invalid values. Should be an enum with a single value or removed entirely and validated server-side.