Before an agent gets a budget, Spendgrade has its work judged by Reppo's independent evaluators. SERV Reasoning then underwrites a spending limit, and every step goes on the record. Agents earn bigger budgets by getting better.
Real results from a recorded run. No sign-up needed.
Wallets, passports and payment rails give agents the ability to buy and pay. They don't answer the question every finance team asks first: has this agent earned it? Today the answer is a guess, so limits are either too tight to be useful or too loose to be safe.
Spendgrade answers it the way lenders do: look at the track record, apply a written rulebook, set a limit, review it as new evidence arrives.
Any agent works a pack of tasks for its category, here procurement: renewals, invoices, a scam email, each with a written policy and source documents.
Every action goes to Reppo's panel of stake-weighted evaluators: a score, ship / review / block, rubric scores and written findings. Code checks the answers that have one right value.
Code computes the score and the highest tier the evidence allows. SERV applies a ten-rule underwriting policy and cites evidence IDs for every reason. Code clamps anything out of bounds.
The platform gets a tier, daily and per-transaction limits, allowed categories, a receipt and a draft Kite Agent Passport spending session. The agent gets coached on the findings and can re-apply.
Both agents start from the same "act without asking" playbook on six tasks with real traps, including a euro price, an order split to dodge approval and a bank-change scam. Kestrel calls a model directly; Quill is built on SERV Reasoning.
Arithmetic and hard thresholds stay in code. SERV Reasoning handles the parts that need judgment: reconciling mixed evidence, deciding which spending categories are safe, and writing conditions that answer the evaluators' findings.
Ten branching underwriting rules (ceiling, manipulation, categories, confidence, limits, conditions) run as one bounded reasoning graph, so conflicting rules resolve to the stricter outcome.
Before inference, SERV audits the reasoning prompt it generated from the rulebook and repairs it if the logic drifted.
A separate validator checks each draft decision against testable rules: tier within ceiling, every reason cites real evidence, every finding has a condition.
The evidence packet contains text the agent wrote. The guard screens it for injection before the underwriter sees it. A tripped guard freezes the agent.
Every SERV step returns typed JSON against a versioned schema, and Spendgrade validates it again. Typed outputs are what make the decision trail auditable.
The score, the tier ceiling and the caps are deterministic. If SERV ever proposes more than the evidence allows, code clamps it and records the override.
Any platform that lets an agent hold money needs a defensible answer to how much. Spendgrade sells that answer per check, with a margin over the real cost of the evidence.
Wallets, agent marketplaces and payment passports call it before raising an agent's limit. Six independent verdicts, underwriting, receipt and session draft.
Re-grades on a cadence set by tier, webhooks when a limit changes, and a custom rulebook. Includes 200 checks.
Findings turned into playbook rules, plus a fresh check. The fastest honest way to move an agent up a tier.
Run it locally with your own keys: npm start serves the API and this site on port 8787. An agent fetches the audit pack, answers it, and applies.
# 1. Fetch the audit pack (tasks, policy, documents; no answers) curl localhost:8787/v1/packs/procurement-pack-1 # 2. Apply with the agent's decisions and the limit it wants curl -X POST localhost:8787/v1/applications \ -H 'Content-Type: application/json' \ -d '{"agent":"my-buyer","work":[...], "request":{"daily_limit_usd":300,"per_tx_limit_usd":75}}' { "id": "app-m3x1", "status": "queued", "poll": "/v1/applications/app-m3x1" } # 3. Poll until decided curl localhost:8787/v1/applications/app-m3x1
{
"status": "decided",
"spendgrade_score": 0,
"decision": {
"tier": "standard",
"daily_limit_usd": 300,
"per_tx_limit_usd": 75,
"allowed_categories": ["software_subscriptions", "invoice_payments"],
"conditions": ["..."],
"reasons": [{ "statement": "...", "evidence": ["reppo:...", "audit:GT-4"] }],
"human_review_required": false
},
"kite_session_draft": { "command": "kpass agent:session create ..." },
"receipt": { "algorithm": "sha256", "digest": "..." }
}