---
title: "delete_assets"
description: "Delete owned private assets only when no live ShotOps resource depends on them."
canonical: "https://shotops.dev/docs/mcp/reference/delete_assets"
last_updated: "2026-09-07"
shotops_mcp_version: "0.9.6"
result_contract_version: "2.0.0"
---
# delete_assets

Delete owned private assets only when no live ShotOps resource depends on them.

## What it does

- Writes
- Destructive
- Idempotent
- Account required

Cleanup after delivery, offered rather than performed. It accepts opaque asset ids, refuses live Project, operation, share and preview dependencies, and permanently removes only unreferenced owned bytes. Missing or already-deleted ids converge without error; foreign ids reveal nothing. Nothing has to be cleaned up: an asset left alone expires on its own, so offer only assets a live resource no longer depends on.

You can ask: “Delete the temporary assets this completed run created.”

Annotated destructive and idempotent: the same refs deleted twice leave the same state, but the first call cannot be undone.

## Input

- `assetIds`arrayoptionalat most 50 items Opaque asset ids from artifacts returned by import_screenshot, render_strip, render_project, or emit_bundle. A referenced asset is refused; deletion is irreversible once accepted. each item string
- `refs`arrayoptionalat most 50 items Compatibility-only account-scoped refs from older results. They are resolved to owned asset ids before irreversible deletion. each item string

## Result

- `ok`booleanoptional
- `deletedCount`integeroptionalmin 0
- `deletedRefs`arrayoptional each item string
- `message`stringoptional

## Example

That request maps to this call:

```
{
  "name": "delete_assets",
  "arguments": {
    "assetIds": [
      "11111111-1111-4111-8111-111111111111"
    ]
  }
}
```

The opaque ids removed; live dependencies are returned as a typed asset_in_use refusal.

## Access and cost

- Needs an account. Not available to an anonymous hosted caller.
- Free. Deleting spends no cloud credits.

## When it refuses

- **Deletion is refused because a Project, operation, share or preview still depends on an asset.**
  Deletion is refused with the dependency kind and any caller-visible owned resource id.

- **An asset id is missing or belongs to somebody else.**
  It is reported only as not found. No foreign asset or dependency fact is disclosed.

## Where this fits

- [Cleaning up what a CI run created](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.

Delete uploaded assets

Clean up after delivery: permanently removes the private screenshots, rendered panels and generated bundles ShotOps is holding for this account. Offer it once the user has their files, and call it only when they explicitly ask — this is irreversible. Offer only UNREFERENCED temporary assets: anything a live Project, production operation, share or preview still depends on is refused, so proposing one is proposing a failure. It cannot reach another account’s files. Cleanup is never a step that has to happen — an asset left alone simply expires.
