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
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:
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
Related