Begin with the exact BagID and the requested outcome: a free platform copy, paid provider coverage, a DNS link, a top-up, a provider stop or withdrawal.
Read the current state
Use storage.bag_details and, when relevant, storage.providers. Check size, completeness, existing provider set and contract state. Discovery telemetry and estimated prices are advisory.
For a funding workflow, preserve the returned session or snapshot inputs. storage.provider_funding_session, storage.provider_funding_preview and storage.provider_quote serve different stages; do not treat an estimate as a signed transaction amount.
Prepare payment
Use the current quote and the exact arguments required by storage.send_provider_tx. A nullable target duration can represent minimum activation funding; do not invent a duration the user did not request.
Top-up coverage is a target remaining duration. For example, 30 days is 2,592,000 seconds of remaining coverage, not automatically 30 extra days beyond the contract's existing balance.
If the service reports that funding is unchanged or a fresh quote is needed, honor that result rather than forcing another payment.
Track the operation
Keep the returned providerOperationId and use storage.provider_operation for that provider workflow. A generic MCP transaction operation ID is not the same identifier.
Use the provider progress guide to check when the files are stored.
Stop or withdraw
Stopping selects a managed provider. Omission is only unambiguous when exactly one eligible managed provider exists. Do not interpret it as stop-all. Providers configured externally may require another management path.
Withdraw only when the contract has no providers left and the user requested that withdrawal. Deleting a free platform Bag reference does not authorize either stopping providers or withdrawing funds.
See paid providers and the tool schemas for the exact parameters.