---
title: "account_status"
description: "Whether this connection may produce store-ready output — asked before a long render."
canonical: "https://shotops.dev/docs/mcp/reference/account_status"
last_updated: "2026-09-07"
shotops_mcp_version: "0.9.6"
result_contract_version: "2.0.0"
---
# account_status

Whether this connection may produce store-ready output — asked before a long render.

## What it does

- Read-only
- Idempotent
- No account needed

The pre-flight. It reports whether an account is signed in, its plan, trial and remaining cloud credits, what a preview costs on this connection, and — the field to branch on — whether production output is available: full-resolution renders and every emit_bundle form. When it is not, the reply carries a machine-readable next step and a sentence to relay. Call it first when the user asks for the real files, because a refusal after a long render wastes their time.

You can ask: “Check whether this connection can produce a store-ready bundle.”

## It takes no arguments

Call it with an empty arguments object. There is nothing to configure, and nothing you pass changes what comes back.

## Result

- `ok`booleanrequired
- `connection`stringrequired one of`hosted``local`
- `authenticated`booleanrequired
- `plan`stringoptional one of`free``pro`
- `entitlementStatus`stringoptional
- `reason`stringoptional
- `trial`objectoptional
  - `state`stringrequired
  - `endsAt`string or nullrequired
- `credits`objectoptional
  - `remaining`numberrequired
  - `cap`numberrequired
  - `refillAt`string or nullrequired
  - `ledgerBalance`numberoptional
  - `reserved`numberoptional
  - `settledReservations`numberoptional
  - `releasedReservations`numberoptional
- `preview`objectrequired
  - `mode`stringrequired one of`credits``anonymous_limit``unmetered`
- `production`objectrequired
  - `capability`stringrequired
  - `available`booleanrequired
  - `reason`stringoptional
  - `requiredPlan`stringoptional
- `nextStep`stringrequired one of`none``sign_in``choose_plan``upgrade``retry`
- `message`stringrequired
- `contractVersion`stringrequired The result-envelope version every render/bundle/project result on this connection carries.
- `inputs`objectrequired Every way this connection accepts a screenshot or asset. `local_path` is the local door’s alone.
  - `modes`arrayrequired each item string one of`inline_base64``stored_ref``remote_url``local_path``project_stored`
- `delivery`objectrequired Every way this connection can hand a result back.
  - `modes`arrayrequired each item string one of`inline_base64``signed_url``local_path``share_link`
- `retention`objectrequired What this connection keeps, and for how long. Read before promising a user a link will still work.
  - `classes`arrayrequired each item object - `id`stringrequired - `description`stringrequired - `durable`booleanrequired false ⟹ nothing survives the call on this connection. - `ttlDays`number or nullrequired null ⟹ kept until the owner deletes it. - `revocableForDays`numberoptional
- `operations`arrayrequired Every registered tool and whether THIS connection can run it. Branch on it instead of trying and failing. each item object - `tool`stringrequired - `kind`stringrequired - `supported`booleanrequired - `requires`stringoptional Present exactly when `supported` is false — the one thing missing. one of`account``hosted_connection``unavailable`
- `cost`objectrequired How work is paid for here, in public cloud credits. Every figure comes from the monetization policy.
  - `unit`stringrequiredalways "credit"
  - `model`stringrequired one of`metered``anonymous_allowance``unmetered`
  - `previewPanel`numberrequired
  - `fullResolutionPanel`numberrequired
- `failureCatalog`objectrequired The CLOSED set of failure codes and next-actions this server can produce. Identical on both doors.
  - `codes`arrayrequired each item string
  - `nextActions`arrayrequired each item string
- `account`objectrequired The account-wide cloud credit wallet, named apart from a single call’s debit: this is the BALANCE, while a render’s `contract.cost.settled` is what that one call took. The legacy top-level `credits` key still carries the same balance for the compatibility window.
  - `credits`objectoptional
    - `remaining`numberrequired
    - `cap`numberrequired
    - `refillAt`string or nullrequired
    - `ledgerBalance`numberoptional
    - `reserved`numberoptional
    - `settledReservations`numberoptional
    - `releasedReservations`numberoptional

## Example

That request maps to this call:

```
{
  "name": "account_status",
  "arguments": {}
}
```

Whether this connection is hosted or local, whether it is signed in, the plan and trial state, the remaining cloud credits, the preview mode, and the production block with its next step and message.

## Access and cost

- Open to everyone on both doors: no account needed, and it answers honestly when there is none.
- Free, and deliberately so: it spends no cloud credits, uses up no free preview, uploads nothing and writes nothing. Admitting it to the anonymous tier cannot be used to get free work out.
- Previewing never depends on it, so keep rendering previews regardless of what it says.

## When it refuses

- **It says production output is unavailable.**
  Relay the message and do the next step it names — sign in, choose a plan, upgrade or retry. Do not retry the production call until that step is done.

- **Cloud credits are exhausted.**
  That is a different condition from an entitlement refusal, with a different remedy. The reply distinguishes them; do not describe one as the other.

- **It reports a local connection.**
  Local rendering is free and unmetered, so cloud credits are not the constraint there. What is still gated is production output.

## Where this fits

- [Where the pre-flight falls in a first run](https://shotops.dev/docs/mcp/workflows/first-strip)
- [Branching on entitlement in CI](https://shotops.dev/docs/mcp/workflows/automation)

## What the agent is told

The title and description the server publishes on `tools/list` — this is the copy a model chooses between, reproduced verbatim.

Check what this connection can do

Ask whether this connection may produce store-ready screenshots — full-resolution panels and the screenshot bundle — before starting a render that might be refused. It reports whether an account is signed in, its plan, trial and remaining ShotOps cloud credits, what a PREVIEW costs here, and — the field to branch on — whether production output is available: full-resolution render_strip and render_project, and every emit_bundle form. `production.available: false` comes with a machine-readable `nextStep` (sign_in, choose_plan, upgrade or retry) and a sentence to relay to the user; do not retry the production call until that step is done. CALL THIS FIRST when the user asks for a screenshot bundle, final panels, or "the real files" and you do not already know this connection can produce them — a refusal after a long render wastes their time, and this call is free: it spends no cloud credits, uses up no free preview, uploads nothing, and writes nothing. Previewing never depends on it, so keep rendering previews regardless.
