asset_list
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 for how Assets and Registrations relate.
Input
The active organization is taken from your token.
| Argument | Type | Description |
|---|---|---|
limit |
number |
The greatest number of Assets in the answer, from 1 to 500. The default is 100. |
cursor |
string |
The nextCursor of the previous answer. Omit it to get the first page. |
Output
{ assets: [...], nextCursor? }. When nextCursor is present, more Assets exist: call asset_list again with cursor set to that value. Each Asset row is 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. |
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
invalid_cursor— thecursoris not anextCursorof this tool. Send it with no change, or omit it.401or403— see Errors, which every tool shares. This one needsasset:read.
Reference
List the active organization’s Assets — the source media it owns (images and video) — newest first. Use asset_get to see which ad accounts an Asset has been registered to. The answer holds at most limit rows (default 100, maximum 500). When it carries nextCursor, more rows exist: call this tool again with the same arguments and cursor set to that value. When it carries no nextCursor, you have every row.
Input
| Argument | Type | Required | Description |
|---|---|---|---|
cursor |
string, at least 1 character | no | The nextCursor of the previous page. Omit it to get the first page. Send it with no change, and with the same filters as the request that answered it: a cursor from a different query gets a 400 invalid_cursor. Do not build or change a cursor. |
limit |
integer, 1 to 500 | no | The greatest number of rows on the page, from 1 to 500. The default is 100. A greater value gets a 400, with error of invalid_request. Default: 100. |
Failure codes
A failed call has isError set, and structuredContent.error holds one of these codes. Errors describes the shape of a failed call.
invalid_cursorforbiddeninvalid_requestinternal_error
Scope
The token must hold asset:read. Auth & scopes lists each scope.
Annotations
A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.
- Read-only. The tool changes nothing.
- Closed world. The tool reads and writes the data of AdCrunch only.