Skip to content

Addie brand-tools: MCP support for authoring Brand Canonical Documents + brand_refs[] #4527

@bokelley

Description

@bokelley

Follow-up from PR #4505 (3.1 distributed brand.json).

What ships in 3.1

`brand.json` gains a 5th variant (Brand Canonical Document) and the `brand_refs[]` shape on House Portfolio. See release notes.

What's missing in Addie

`server/src/addie/mcp/brand-tools.ts` and `server/src/addie/mcp/brand-property-tools.ts` expose brand-protocol functionality through Addie's MCP surface. Today they handle pre-3.1 shapes; they do not yet:

  • `publish_brand_canonical_document` — let a sub-brand team author and publish their own canonical document at their own domain. Should generate the JSON, validate against the schema, optionally upload to AAO-hosted storage, and prompt the user to coordinate with their parent house's portfolio team.
  • `add_to_brand_refs` — let a house portfolio operator add a pointer entry. Validates the cross-array uniqueness invariant, prompts for `effective_at`, optionally fetches the leaf to confirm reciprocation.
  • `check_mutual_assertion` — given a leaf domain, fetch both the leaf's canonical document and its claimed house's portfolio and report the trust tier (mutual / leaf-only / house-only / standalone).
  • `notify_pending_verification` — when Addie detects a leaf-only edge, send the self-healing notification to the house's `contact.email`. Rate-limited per `{leaf, house}` pair.
  • Add typed-trademark editing — surface `status`, `license_type`, `licensor_domain`, `countries`, `nice_classes` in the brand-editing flow.

Why this matters for Addie's conversational surface

The protocol's adoption path is "child publishes → parent reciprocates." Addie is the conversational interface where most users would actually walk this. Without these tools, Addie can advise users to publish but can't actually do it for them — they fall back to hand-editing JSON or using `brand-builder.html` (separate issue).

The notification loop in particular is a high-value Addie surface — when a user asks "why isn't my brand showing up in [parent's] portfolio?", Addie should be able to detect the leaf-only state and offer to nudge the parent team.

Scope

  • New MCP tools in `server/src/addie/mcp/brand-tools.ts`
  • Schema validation + cross-array uniqueness check
  • Mutual-assertion fetcher (single-hop, 3-hop redirect cap, follow House Redirects on house side first)
  • Notification rate-limiter (state per `{leaf, house}`)

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    addieIssues related to Addie (via any channel)brandIssue concerns the brand protocol domainenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions