Brands
The context your agents read before they write anything — identity, voice, guidelines, messaging — plus the files, logo and ad accounts that go with it.
A Brand is what your organization writes down about who it is and what it intends, so that a connected agent can read it before it produces anything. It is the difference between an assistant that writes generic ad copy and one that writes yours.
A Brand is deliberately not a structured record. Its substance is four pieces of free-form prose you author, not a form of typed values we validate — because what an agent needs to know about a brand is exactly the sort of thing a dropdown cannot hold.
Brands are private to your organization, and a Brand is the sibling of a Skill: a Skill teaches an agent how to run a workflow, a Brand tells it who it is working for. They are unrelated on purpose — an agent that needs both loads both.
The brand wall
Open Brands in the console sidebar. The wall at /brands is one tile per brand, and the tile is the logo. A brand with no logo gets a monogram — its initials on a colour derived from its slug, so it still holds a distinct, stable place rather than sitting in a row of identical grey.
Under each tile:
- the name and the slug (the handle agents use),
- a four-segment coverage strip — one segment per section, filled when that section is written, faint when it is empty.
Hovering or keyboard-focusing a tile reveals the brand’s description. That is what an agent reads when choosing between brands; a human recognizes the one they want from the mark long before finishing a sentence about it.
Between the mark and the strip, the wall answers its two real questions without asking you to read a word: which one is it, and is it briefed enough to point an agent at.
Create a brand
New brand asks for three things:
| Field | Required | What it is |
|---|---|---|
| Name | yes | The display name. |
| Description | yes | One line. How agents recognize this brand when choosing between them. |
| Slug | no | The handle agents use. Left blank, it is derived from the name. |
The four sections are deliberately absent from this form: asking for four essays before the brand exists is the wrong first step. Name it, then write it.
Renaming a slug moves the handle
The slug is editable later, on the brand’s own page, but it is a real rename: any agent, saved prompt or teammate that referenced the old handle needs updating. Deleting a brand frees its slug for re-use.
The four sections
A brand’s own page is mostly these, and each one is free-form markdown:
| Section | What belongs in it |
|---|---|
| Identity | Who the brand is, what it makes, who it is for. Positioning, mission, category. |
| Voice | How it sounds — register, sentence length, what it never says. |
| Guidelines | Rules an agent must not break. Claims to avoid, legal, tone limits. |
| Messaging | The lines worth reusing — value props, proof points, offers. |
Every section is independently optional, and a brand is meant to be authored incrementally: a name, a description and one written section is a valid, useful brand. There is no fifth catch-all section on purpose — a new kind of context earns a named one.
An empty section is not a blank waiting to be filled in. It is genuinely absent from what agents receive, and the page says so where the writing would have been — “Nothing written yet — agents will not see a Voice section” — because that is the most useful thing a context author can be told.
Editing: read first, one save
The page renders the sections as the brief an agent actually gets, not as a stack of text boxes. Click Edit on a section and that one becomes an editor, one at a time.
Neither way out of an editor writes anything:
- Done returns the section to prose and keeps your text, marked Unsaved.
- Cancel — or Esc — puts back what the section said when you opened it.
Save changes — at the top of the page — is the only write, and it carries everything at once: the sections, the name, the description, a rename, and the logo nomination. Only what you actually changed is sent.
If someone saved while you were editing
A Brand is agent-writable, so this is a real race rather than a theoretical one. The save is refused, the page reloads the brand, and your writing is kept — the notice names which sections the other writer changed. Saving again overwrites theirs, which the notice says outright; Discard mine and take theirs is the one button that goes the other way.
Agents can write brands too
Anything you can do here, a connected agent can do over MCP with the
brand:write scope — see brand_update. Its edits
are guarded by the same revision as yours.
Documents and the logo
The rail beside the writing holds the brand’s files. Upload accepts PDFs and images — PNG, JPEG, GIF, WebP — up to 25 MB each. SVG is not accepted. Put reference material here: a brand book, a tone guide, a positioning deck. An agent gets these as URLs it can fetch, listed alongside the brand’s context.
The logo is a nomination, not a separate upload. Upload an image as one of the brand’s documents, then choose Use as logo on it. That makes it the brand’s mark on the wall, and the one document an agent is pointed at as the mark when it loads the brand. Exactly one document is the logo at a time; Clear drops the nomination without deleting the file, and deleting the nominated file drops it for you.
Files commit; the logo waits for the save
Uploading and removing a document takes effect on the click — those are their own operations and never touch the brand itself. The logo nomination is the exception: it is written on the brand, so it lands with Save changes.
A brand’s documents are not Assets. An Asset is source media that gets registered into an ad account’s provider-side library so an ad can use it; a document is reference material an agent reads, and it never leaves AdCrunch. They share an upload mechanism and nothing else — if what you want is a video or image in an ad account’s library, that is Bring your own creative, not this rail.
Attach ad accounts
This is what makes a brand reachable from the work. An agent acting on an ad account looks up the brands attached to it, so a brand with nothing attached is one that nothing will find on its own — however well it is written.
In the rail’s Advertisers card, Attach opens a menu of your organization’s ad accounts that are not already on this brand; each attached row detaches from its trash control. Both take effect immediately.
- Every ad account you own is offered, including disabled ones and ad accounts on providers we cannot write to. Attaching is a record in AdCrunch, not a call out to the provider, so there is nothing to filter for.
- An ad account can be attached to several brands. Attaching to a second does not detach the first; an agent resolving that ad account gets both, and picks.
- Attaching twice is harmless. The second attach says the same thing as the first.
- Detaching removes only the link. The brand, its context and its files are untouched.
- An attachment whose ad account your organization can no longer see shows as a bare id rather than a name. The link is still real, but removing it needs the ad account back: detaching one AdCrunch can no longer confirm you own is refused.
Nothing connected yet? The card says so and links to the console’s integrations — connect an ad account first (Meta, TikTok), then come back and attach it.
The same thing over MCP
This card does exactly what
brand_attach_advertiser and
brand_detach_advertiser do for an
agent. The reason to attach at all is
brand_resolve: given an ad account, it answers
who am I working for.
Personas: who the brand talks to
A brand’s page has two tabs. Overview is the brief above — name, description, the four sections, its documents and ad accounts. Personas is who that brief is aimed at.
The four sections say who the brand is. A persona says who it is talking to: an audience archetype described as a person. The Personas tab lists them with their age range and which of their sections are written, so you can see at a glance which audience is still a name and nothing else.
Add one with New persona; it opens its own page, because each persona is edited and saved independently of the brand and of the other personas. A persona has its own four sections:
| Section | What belongs in it |
|---|---|
| Profile | Who they are: life stage, situation, role, context. |
| Motivations | What they want, and what sets them off looking for it. |
| Frictions | Objections, doubts and inertia — why they do not act. |
| Language | Their own words for the problem. Verbatims, not your copy. |
Same rules as a brand’s sections: free-form markdown, independently optional, and an unwritten one is genuinely absent from what agents receive.
Above the sections sits the one structured field a persona has, an age range. Leave either end blank for an open end — a lower bound on its own means “and older”. Everything else that might look structured — where they live, what they do, what they are into — is written into Profile as prose, because those resolve differently on every ad platform and a persona describes an audience rather than specifying a targeting setup.
Personas belong to one brand
A persona’s handle only has to be unique within its brand, so two brands can
each have a loyalists. There is no way to share one between brands — and
that is deliberate: seen from a competing brand’s brief, the same real person
has different frictions and different language. Describe them twice.
Deleting a brand deletes its personas with it.
Delete a brand
Delete, at the foot of the brand’s page, removes the brand and everything authored on it — sections, documents and personas alike; agents can no longer fetch it, and the slug is freed for re-use. It cannot be undone from the console. If you want the same context under a different handle, rename the slug instead.
Next
brand_resolve
How an agent gets from an ad account to the brand context that applies.
brand_get
What an agent actually receives when it loads a brand.
persona_get
How an agent reads one of a brand’s personas before it writes.
Skills
The other half of org-authored agent context: ad-ops playbooks.
(todo: screenshots of the brand wall & a brand’s page)