Inspect before changing
Use the Portal's Agents page or the connection's supported installed-app state read to obtain the actual app id, version, status, trigger, scope, connections and budget. Discover the current act schema and action allowlist. Do not infer that a generic act tool exposes every lifecycle action in every client.
Suspend and resume
With the user's authority and a permitted lifecycle route:
{"action":"app_suspend","item_id":"<installed app id>"}
Resume uses app_resume with the same app id. Read back the installed state. Suspension controls future use; it does not undo prior effects or prove in-flight work was cancelled.
Set rolling seven-day model caps
app_set_budget uses the app id as item_id and a complete config with non-negative integer input/output token caps and either integer micro-USD cost or max_cost_usd. This illustrative template uses invented numbers only to show shape; agree actual caps for the job before calling:
{"action":"app_set_budget","item_id":"<installed app id>","config":{"max_input_tokens":10000,"max_output_tokens":2000,"max_cost_micro":1000000}}
One million micro-USD equals USD1. Caps apply to the rolling seven-day spend window. The pre-call gate checks already-spent totals, so a final admitted call can take the total past a cap. Subscription routes can account cost as zero while consuming tokens. Do not treat a zero monetary reading as unlimited permitted work.
app_clear_budget restores the manifest caps. Read the resulting roster budget and scheduling reason. A refused model call can report a reopening time; a zero cap need not reopen automatically. Do not increase a budget simply to hide an unrelated missing route or access failure.
Upgrade, roll back and remove
Inspect the current catalog offer and its exact scope/effects. app_upgrade can bind consent to the currently shown offer:
{"action":"app_upgrade","item_id":"<installed app id>","config":{"expected_offer_digest":"<exact lowercase SHA256 of the inspected offer>"}}
A mismatched digest refuses before upgrade effects. Native omission of config deliberately accepts the current offer; do not omit it accidentally after reviewing a specific older offer. A local conflict needs an explicit owner decision; replace_local is only valid for an authorised upgrade and must not silently discard edited code.
app_rollback selects the previous installed approved version where supported. app_remove removes the installed app. Inspect returned state and dependent workflows. Neither action undoes prior external effects. After upgrade/resume, inspect an ordinary run and its output before claiming the job works.
Keep loop controls separate
Loop case limits bound nodes, wall-clock, judge spend and optionally open cases. Earned autonomy belongs to one loop/app/action tuple within an approved ladder and ceiling. These are not app_set_budget fields. Use the current loop operator contract and case inspection; a client-excluded action requires an authorised handoff.
Related
Practical guides for people and agents