---
title: document_get
description: Read one file of a brand. An image comes back as an image that the agent can look at.
---

Ask about one file of a brand. An image comes back as an image that the agent can look at.

> "Does this headline work with our logo?"

The agent calls `document_get` for the logo, and it looks at the image. You then get an answer about the headline and the logo together.

The job guide [Describe a brand](/mcp/tools/describe-a-brand) shows each step of the job.

## Reference

Fetch one brand document. Images come back as an image you can actually look at, so you can judge whether copy or creative suits the brand. Everything else — PDFs, oversized images — comes back as metadata and a URL to fetch.

### Input

| Argument | Type | Required | Description |
| --- | --- | --- | --- |
| `document_id` | string | yes | The id of the document to fetch. |

### Output

A successful call returns this object in `structuredContent`.

| Field | Type | Always present | Description |
| --- | --- | --- | --- |
| `document` | object | yes | A finalized document. |
| `document.createdAt` | number | yes | Milliseconds since the Unix epoch, in UTC. |
| `document.filename` | string | yes | The name of the file at upload. |
| `document.id` | string | yes | The id of the document (`doc_…`). |
| `document.mimeType` | string | yes | The media type of the stored file. AdCrunch reads it from the file at finalize. |
| `document.name` | string | yes | The display name. It is the filename until someone renames it. |
| `document.sizeBytes` | number | yes | The size of the stored file, in bytes. AdCrunch reads it from the file at finalize. |
| `document.targetId` | string | yes | The id of the brand that holds the document (`brd_…`). |
| `document.targetType` | string | yes | The kind of record that holds the document: `brand`. |
| `document.url` | string | yes | The public URL of the file. Each person who has the URL can read the file. |

### Failure codes

A failed call has `isError` set, and `structuredContent.error` holds one of these codes. [Errors](/mcp/errors) describes the shape of a failed call.

- `not_found`
- `forbidden`
- `invalid_request`
- `internal_error`

### Scope

The token must hold `brand:read`. [Auth & scopes](/mcp/auth) 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:

```json
{
  "document_id": "doc_7d1f58"
}
```

The result, in `structuredContent`:

```json
{
  "document": {
    "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"
  }
}
```
