---
title: brand_list
description: List the brands of your organization, so that an agent can pick one before it reads the brand in full.
---

Ask which brands your organization has. The agent lists them with a one-line description for each.

> "Which brands do we have?"

The agent calls `brand_list`. You see each brand with its name, its description and its Assignees, newest first. An Assignee is a member who is accountable for the brand. An Assignee has no extra access. To list only the brands that you are an Assignee of, ask for "my brands". The agent then calls the tool with `assignee: "me"`. To read one brand in full, the agent then calls [`brand_get`](/mcp/tools/brand-get).

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

## Reference

List the active organization's brands as slug + name + description + hasBody + assignees, newest first. hasBody is true when the brand has a body to read. The body itself is not returned — pick a brand here, then load its context with brand_get. An Assignee is a current member of the organization who is accountable for the record. An Assignee has no extra access: every role with the write scope can still edit the record. Pass assignee "me" to list only the brands that the person of the token is an Assignee of. 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`. |
| `assignee` | `me` | no | Pass "me" to list only the records that the person of the token is an Assignee of. |

### Output

A successful call returns this object in `structuredContent`.

| Field | Type | Always present | Description |
| --- | --- | --- | --- |
| `brands` | array of object | yes | The brands of the organization, newest first. |
| `brands[].description` | string | yes | One line about the brand. An agent picks a brand on it. |
| `brands[].name` | string | yes | The display name. |
| `brands[].slug` | string | yes | The handle of the brand in the organization. The tools take it as `brand_name`. |
| `brands[].assignees` | array of object | yes | The current members who are accountable for the record, oldest first, at most 10. An Assignee grants no access. |
| `brands[].assignees[].id` | string | yes | The `usr_…` id of the member. |
| `brands[].assignees[].name` | string | yes | The name of the member. |
| `brands[].hasBody` | boolean | yes | `true` when the body holds text. Read the text with the get tool. |
| `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](/mcp/errors) describes the shape of a failed call.

- `invalid_cursor`
- `organization_unentitled`
- `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
{
  "limit": 20
}
```

The result, in `structuredContent`:

```json
{
  "brands": [
    {
      "assignees": [
        {
          "id": "usr_4d8b12",
          "name": "Maya Lindqvist"
        }
      ],
      "description": "Running shoes sold direct to the runner, made to last a thousand kilometres.",
      "hasBody": true,
      "name": "Acme",
      "slug": "acme"
    },
    {
      "assignees": [],
      "description": "Trail shoes for runners who leave the road.",
      "hasBody": false,
      "name": "Acme Trail",
      "slug": "acme-trail"
    }
  ]
}
```
