CIcash - a budget you lend to an AI agent, not money you give it: bounded, revocable, auditable spending authority.
cicash defines 5 tools with complete input schemas and descriptions. Naming follows verb_noun convention (budget_*). Descriptions are clear and action-oriented (avg ~120 chars), explaining WHAT, WHEN, and consequences. All parameters have types and descriptions. However, output schemas are not documented in the tool definitions, LLMs cannot predict return structure. Error handling is mentioned in budget_pay description but not formalized across tools. No parameter constraints (enums, ranges) despite opportunities (e.g., budget_delegate.per_tx should have min/max). Tool composition is excellent: each tool has one responsibility, and outputs chain naturally (quote → pay). Security is strong: credentials never exposed as parameters; wallet lives server-side.
How much money you have left, what you may spend it on, and which limit is currently binding. Call this BEFORE planning work that costs money, not after being refused.
Carve a smaller, tighter wallet for a sub-agent. It can only ever be narrower than yours, and everything it spends also comes out of your budget. Returns a wallet blob to hand to the sub-agent.
Pay a quote from budget_quote. Give the same idem_key if you retry - retrying is free and will never charge twice. If refused, read `action`: RETRY_AFTER means wait, REPLAN means try something different, ESCALATE means stop and tell your principal.
Ask a seller what something costs. Returns a signed quote. You cannot invent a price or a recipient - both must come from here.
Everything spent under your wallet, with purpose and lineage.
Output schemas not documented. LLMs cannot predict return structure (fields, types, nesting). budget_check returns ~10 fields; budget_quote returns a Quote object; budget_pay returns paid/receipt_id/remaining. Without documented schemas, agents must infer structure from trial calls.
No parameter constraints (enums, min/max, patterns). budget_quote.amount and budget_delegate.budget/per_tx accept any number, no bounds. budget_delegate.purposes accepts any string array. Unbounded numeric parameters invite absurd values (negative amounts, zero budgets).
Error handling not formalized. budget_pay description mentions action field (RETRY_AFTER/REPLAN/ESCALATE) but no other tools document error responses. budget_quote returns {error, known} on unknown payee, structure not declared. Agents cannot reliably parse or act on errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
budget_delegate.per_tx is optional but semantics unclear. If omitted, does it default to budget? Unlimited per-tx? Description does not specify. Optional parameters without clear defaults invite misuse.
budget_quote.amount and budget_pay.quote parameters lack format guidance. Is amount in cents (microunits) or dollars? Quote object structure not documented. Agents must guess or reverse-engineer from code.