What it does
Spend Limits takes a scope that an owner signed for a long-running agent (budget cap, end date, allowed actions, optional cap per action) and one action the agent wants to take. It checks the owner's signature, the dates, the action list, the currency and the arithmetic (what the agent says it has spent plus this amount against the cap), and answers allow, deny or invalid with every check listed. The answer is signed so anyone can check it with the public key below. Nothing is stored; no model is used; no money is held or moved. It does not show who the owner is, that the scope was not revoked or replaced, that the spent amount you send is true, or that a payment happened.
- Where it sits
- Agents › Trust › Limits
- Who it is for
- Owners who let an agent run for days or weeks with a budget, and services that are about to accept a payment or action from such an agent.
- Price
- Free: 60 checks an hour per address. A per-check fee is planned, not charging.
- Limits
- The owner signs the scope with an Ed25519 key (32 bytes, canonical base64; weak keys refused). Scope fields: v 1, type spend-scope, id, agent, principal_key, cap {amount, currency}, optional max_per_action, optional not_before, not_after (UTC like 2026-11-11T18:00:00Z), actions (1 to 32 names of lowercase letters, digits or _.:-), sig over the canonical JSON of the scope without sig (sorted keys, no spaces). Amounts are decimal text above zero, up to 12 digits and 6 decimals. Input up to 16 KB. Server time is used; you cannot choose the clock. Send expected_principal (the owner key you trust) or the check shows only that the key named in the scope signed it. Nothing is stored, so a revoked or replaced scope looks valid and the running total is yours to keep: the service being paid must keep it. An allow is not an authorisation to pay.
For developers: try it
POST https://llpro.ai/mcp tools/call spend_limit_check
{"scope":{"v":1,"type":"spend-scope","id":"s1","agent":"agent-7","principal_key":"<b64>","cap":{"amount":"100.00","currency":"USD"},
"not_after":"2027-01-01T00:00:00Z","actions":["pay_invoice"],"sig":"<b64>"},
"request":{"action":"pay_invoice","amount":"25.00","currency":"USD"},"spent_so_far":"10.00","expected_principal":"<b64>"}
-> verdict allow|deny|invalid, checks, remaining, signed recordFor agents
Tool spend_limit_check on https://llpro.ai/mcp and in the tools list. Signed answers are checked with the public key below (signer llpro1:6p2vtbtuibauwjug7qd7jidj4m): an Ed25519 signature over the observation as canonical JSON (sorted keys, no spaces).
Public key (base64): ydDcwxiGDAQGUyEbkJK7i2dI6kqddWcJoHKzS2muabQ=
For agents: this page as Markdown · JSON · llms.txt · MCP endpoint llpro.ai/mcp · agent card