---
title: persona_get
description: Fetch one of a brand's personas — who it is talking to, in their own words — so an agent can write for someone in particular.
---

Fetches a single **Persona** by the pair that addresses it: its Brand's slug and its own.

A Persona is an **audience archetype** — who a brand is talking _to_. It is the counterpart to the Brand's own sections, which say who it is talking _as_. Discover a brand's personas with [`brand_get`](/mcp/tools/brand-get); there is no separate list tool, because the brand bundle already carries them.

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `brand_name` | `string` | yes | The slug of the brand that owns the persona. |
| `persona_name` | `string` | yes | The persona slug. Unique within its brand, so it must be paired with `brand_name`. |

## Output

`{ persona }`, carrying `slug`, `name`, `description`, `revision`, the age range, and four context sections:

| Section       | What belongs in it                                       |
| ------------- | -------------------------------------------------------- |
| `profile`     | Who they are: life stage, situation, role, context       |
| `motivations` | What they want: jobs to be done, triggers, outcomes      |
| `frictions`   | What stops them: objections, doubts, perceived risk      |
| `language`    | The words **they** use for the problem — their verbatims |

Each section is free-form markdown and independently optional — one you haven't written is `null`, which is normal rather than an error.

`ageMin` and `ageMax` are independently nullable: `ageMin` alone means "and older", `ageMax` alone means "and younger", and both `null` means the persona is not defined by age at all.

:::info[`language` is not a locale]

Despite the name, `language` holds **voice-of-customer** wording — how this audience describes the problem in their own register ("my knees are shot by mile 18"), not a language setting like `en-GB`. It is the raw material for copy that sounds like the reader rather than like the brand.

:::

## Example

> _"Write three ad headlines for Acme Running, aimed at Marathon Maya."_

```ts
persona_get({ brand_name: 'acme-running', persona_name: 'marathon-maya' });
// → { persona: { slug: 'marathon-maya', ageMin: 30, ageMax: 44,
//                frictions: 'Thinks carbon plates are a gimmick…', … } }
```

The agent reads `frictions` and `language` alongside the brand's `voice`, so the headline answers a real objection in words the reader would use.

:::tip[Keep the revision]

If you intend to edit the Persona, hold onto `revision` — pass it as `base_revision` to [`persona_update`](/mcp/tools/persona-update) or [`persona_delete`](/mcp/tools/persona-delete) so a concurrent change can't be silently overwritten.

:::

Requires the `brand:read` scope — a persona is part of its brand's context, not a separate permission.

## Reference

Fetch one of a brand's personas — an audience archetype describing who the brand talks to. Returns the full context (profile, motivations, frictions, language) and the age range. Unwritten sections are null. Echo the revision back as base_revision when updating. Personas are listed inside brand_get; there is no separate list tool.

### Input

| Argument | Type | Required | Description |
| --- | --- | --- | --- |
| `brand_name` | string | yes | The slug of the brand that owns the persona. |
| `persona_name` | string | yes | The persona slug. Unique within its brand, so it must be paired with brand_name. |

### 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.
