---
title: asset_list
description: List the source media (images and video) your organization owns, each with where it has been registered.
---

Lists your organization's **Assets** — the source media it owns — newest first. Each row comes back with its **Registrations**, so one call answers both "what creative do we have?" and "where has each piece been placed?". See [Bring your own creative](/mcp/assets) for how Assets and Registrations relate.

## Input

None. The active organization is taken from your token.

## Output

`{ assets: [...] }` — an array of Asset rows, each shaped like:

| Field | Type | Description |
| --- | --- | --- |
| `id` | `ast_*` | The Asset id. |
| `name` | `string \| null` | User-chosen name; `null` until renamed, falling back to `filename`. |
| `filename` | `string` | Original upload filename — never changes, the fallback for `name`. |
| `kind` | `'image' \| 'video'` | Selects how the file is registered. |
| `mimeType` | `string` | e.g. `image/png`, `video/mp4`. |
| `sizeBytes` | `number` | Stored size. |
| `width` / `height` | `number` | Pixel dimensions (images). |
| `durationMs` | `number` | Length in ms (video). |
| `status` | `'pending' \| 'ready'` | `ready` means finalized and usable. |
| `registrations` | `Registration[]` | Where the Asset is placed — see [`asset_get`](/mcp/tools/asset-get). |

Assets whose bytes never arrived are excluded — a listing only shows media you can actually use.

## Example

> _"What creative do we have on file, and where is it registered?"_

Claude calls `asset_list()` and reads back each Asset with its `kind`, `filename`, and the advertisers it's been registered to.

## Errors

- `401` or `403` — see [Errors](/mcp/errors), which every tool shares. This one needs `asset:read`.
