Most tool registries start with a tier: a coarse label such as "read-only," "internal" or "privileged" that a caller is mapped onto, and a check that the tool's tier is within the caller's allowance. That works until two teams on the same tier behave very differently. A tier is a permission, not a budget. It says the caller is trusted with the capability; it says nothing about whether that caller should be allowed to fire ten requests or ten thousand in an hour. Conflating the two produces the classic failure: a single team's runaway agent loop exhausts a shared upstream quota, and every other consumer of the same tool gets errors that have nothing to do with their own behavior.
The distinction matches how mature gateways already split the problem. TrueFoundry's gateway documentation separates rate limits (throughput, counted in requests, tokens or tool calls) from budget limits (spend in dollars), and notes that the two are configured and counted independently (TrueFoundry rate limiting docs). The same separation applies inside your own registry: a tier is the access decision, a cap is the volume decision, and they should be evaluated and audited as two different things.
A second reason to keep them apart is operational. Tiers change rarely and usually require a security review. Caps change often (after a cost review, a product launch, a quota negotiation) and should be editable by the team that owns the tool. If caps live inside tier definitions, every budget tweak becomes an access-control change.



