Skip to main content
Glama

set_registry_storage_addon

Buy or return paid registry storage: set how many storage blocks the organisation holds (blocks is the new total, not a difference). Each block adds block_gib GiB (50 GiB) to the limit of every registry project and is billed on the monthly invoice at the block price (EUR 5 a month), prorated by the days held. Read get_registry_storage first: addon.blocks is what is held, addon.max_blocks is the most that can be bought here (for more, use request_limit_increase with kind registry_storage), addon.billing_ready and addon.billing_blocker say whether billing can pay, and addon.version goes back as expected_version - if the storage or its price changed since, the call is refused ("Registry storage changed since you read it"): read again and confirm the new price, never retry the same arguments. Reducing is always possible, but never below what the registry already holds (the refusal names the minimum). Pass current_blocks, price_cents_per_block_month and block_gib from the read so the confirmation names the monthly price change (blocks x price); they are checked against the live add-on and a mismatch is refused. The new limit is applied to the registry at once. Requires billing.manage.

Input Schema

NameRequiredDescriptionDefault
blocksYesThe number of storage blocks the organisation should hold after the change (0 returns them all).
block_gibYesaddon.block_gib from the read: the size of one block in GiB (50). The confirmation shows it, and the call is refused if the block size is no longer this.
current_blocksYesaddon.blocks from the read: the blocks held now. The confirmation shows the change from it, and the call is refused if it is no longer true.
expected_versionNoAlways send the addon.version get_registry_storage returned: if the blocks or the price changed since, the change is refused instead of buying at a price nobody confirmed. Omit it only when that read returned no version.
price_cents_per_block_monthYesaddon.price_cents_per_block_month from the read: what one block costs this organisation per month, in cents. The confirmation shows the monthly price from it, and the call is refused if the price is no longer this.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare it is a non-readonly, non-idempotent, non-destructive mutation, and the description goes well beyond that: version-gated refusals ('Registry storage changed since you read it'), price-confirmation checks, proration by days held, immediate application of the new limit, and the billing requirement. This is unusually rich disclosure for a billing-mutating tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the 'new total, not a difference' caveat are front-loaded, and almost every sentence carries non-redundant operational detail. It is dense and long for a single description, with a few stacked clauses (version, price, minimum, billing) that could be broken up, but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so the description carries the return/confirmation burden and does so: it describes the monthly price change shown (blocks x price), the refusal messages, and the read-then-write workflow. For a 5-parameter billing mutation, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains why current_blocks, price_cents_per_block_month and block_gib must be echoed (they drive the confirmation and are checked against the live add-on, mismatch refused), and how expected_version gates the call. That cross-parameter contract is not obvious from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('set how many storage blocks the organisation holds') and immediately disambiguates the key semantic trap: 'blocks is the new total, not a difference'. It also names the sibling it depends on (get_registry_storage) and the escalation path (request_limit_increase with kind registry_storage), so an agent can place it precisely among the many addon/registry tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit preconditions and alternatives: read get_registry_storage first, use request_limit_increase for more than max_blocks, reducing is always possible but never below what the registry holds, and billing.manage is required. It even gives the refusal conditions and tells the agent not to retry the same arguments after a version conflict, which is exactly the when/when-not guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources