Brands
Brand profiles store a company's visual identity (colors, typography, logo) and copy context (industry, target audience, tone of voice). The create_funnel tool reads a brand profile at generation time and weaves its identity into the AI brief automatically — giving generated funnels on-brand copy and styles without manual re-specification.
A typical funnel-build session starts with list_brands → user picks a brand → get_brand loads the full identity. If no brands exist yet, or the user wants a new one, create_brand generates and persists a brand profile from a website domain (preferred) or a free-text description.
Tools
| Tool | Purpose | Key inputs | Returns |
|---|---|---|---|
list_brands | List all configured brand profiles | (none) | Array of brand summaries |
get_brand | Fetch a single brand by ID | brandId | Full brand object |
create_brand | Generate and persist a new brand profile | data (source + domain or description fields) | Created brand object |
create_brand
Generates a brand profile using either Brandfetch (when a domain is available) or an AI description path. The call is slow — it can take 30 s to 2 min — and the MCP server emits progress notifications during the wait. Do not abort early.
After create_brand completes, you can skip the subsequent get_brand call: read context.targetAudience and context.content directly off the returned object to build brand-aware clarification questions, then call create_funnel with the returned id.
Inputs
The input is a discriminated union on data.source:
When source: "domain" (preferred when the user has a website):
| Name | Type | Required | Description |
|---|---|---|---|
data.source | "domain" | Yes | Selects the Brandfetch path |
data.domain | string | Yes | Public website domain — bare host, no scheme or path (e.g. "acme.com"). Brandfetch is queried for logo, colors, and typography |
When source: "description" (fallback when no website exists):
| Name | Type | Required | Description |
|---|---|---|---|
data.source | "description" | Yes | Selects the AI description path |
data.brandName | string | Yes | The brand's name as shown to the user (e.g. "Acme Inc") |
data.industry | string | Yes | Free-text industry/category descriptor (e.g. "B2B SaaS marketing tools") |
data.targetAudience | string | Yes | Free-text target-audience descriptor (e.g. "indie founders evaluating outreach tools") |
Returns { data: <brand object> } with the same shape as get_brand.
Related
- Guide: ../../guides/brands