document_list
List the files of a brand, each with its URL.
Ask which files a brand has. The agent lists them, each with a link.
“Which brand files do we have for Acme?”
The agent calls document_list for Acme. You see each file with its name, its type, its size and its link.
The job guide Describe a brand shows each step of the job.
Reference
List the files attached to a brand — logos, guidelines, decks — newest first, each with a URL you can fetch. Uploads that never completed are not listed, so every URL here resolves. 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 |
|---|---|---|---|
brand_name |
string | yes | The brand slug whose files to list. |
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. |
Output
A successful call returns this object in structuredContent.
| Field | Type | Always present | Description |
|---|---|---|---|
documents |
array of object | yes | The finalized documents of the brand, newest first. An upload that nobody finalized is not in the list. |
documents[].createdAt |
number | yes | Milliseconds since the Unix epoch, in UTC. |
documents[].filename |
string | yes | The name of the file at upload. |
documents[].id |
string | yes | The id of the document (doc_…). |
documents[].mimeType |
string | yes | The media type of the stored file. AdCrunch reads it from the file at finalize. |
documents[].name |
string | yes | The display name. It is the filename until someone renames it. |
documents[].sizeBytes |
number | yes | The size of the stored file, in bytes. AdCrunch reads it from the file at finalize. |
documents[].targetId |
string | yes | The id of the brand that holds the document (brd_…). |
documents[].targetType |
string | yes | The kind of record that holds the document: brand. |
documents[].url |
string | yes | The public URL of the file. Each person who has the URL can read the file. |
nextCursor |
string | no | Send this value as cursor to get the next page. It is absent on the last page. |
Failure codes
A failed call has isError set, and structuredContent.error holds one of these codes. Errors describes the shape of a failed call.
not_foundinvalid_cursorforbiddeninvalid_requestinternal_error
Scope
The token must hold brand: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.
Example
The arguments:
{
"brand_name": "acme"
}
The result, in structuredContent:
{
"documents": [
{
"createdAt": 1790086400000,
"filename": "acme-logo.png",
"id": "doc_7d1f58",
"mimeType": "image/png",
"name": "acme-logo.png",
"sizeBytes": 48213,
"targetId": "brd_6a9c33",
"targetType": "brand",
"url": "https://documents.adcrunch.dev/org_3a7f10/doc_7d1f58"
},
{
"createdAt": 1790000000000,
"filename": "acme-brand-guidelines.pdf",
"id": "doc_5e2b41",
"mimeType": "application/pdf",
"name": "acme-brand-guidelines.pdf",
"sizeBytes": 1482064,
"targetId": "brd_6a9c33",
"targetType": "brand",
"url": "https://documents.adcrunch.dev/org_3a7f10/doc_5e2b41"
}
]
}