# Update branding details

`management_groups.update_branding`

Update brand color, portal-branding lock, legal links, public contact, or email sender. These are shared Management Group settings: use managed_provider_count from get_branding to tell the user how many portals are affected before changing them. Only supplied fields change. Read branding first and pass its revision. Logo and favicon bytes use the separate asset-upload tool; custom domains use prepare_domains. Saving group assets does not apply them to portals: for an authorized whitelabelling request, review and apply the selected portals next.

[Branding guide](https://docs.staging.levr.ai/mcp/resources/management_group_branding.md)

Availability depends on live discovery and your access to the record. Do not infer MCP calls from REST paths.

Operation: write. Required OAuth scopes: mcp.

## Input schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "changes": {
      "additionalProperties": false,
      "minProperties": 1,
      "properties": {
        "brand_color": {
          "pattern": "^$|^#[0-9A-Fa-f]{6}$",
          "type": "string"
        },
        "privacy_policy_url": {
          "format": "uri",
          "type": "string"
        },
        "provider_branding_is_locked": {
          "type": "boolean"
        },
        "public_contact_email": {
          "format": "email",
          "type": "string"
        },
        "reply_to_email": {
          "format": "email",
          "type": "string"
        },
        "sender_display_name": {
          "maxLength": 255,
          "type": "string"
        },
        "sender_domain": {
          "maxLength": 255,
          "type": "string"
        },
        "sender_local_part": {
          "maxLength": 64,
          "type": "string"
        },
        "terms_url": {
          "format": "uri",
          "type": "string"
        }
      },
      "type": "object"
    },
    "expected_revision": {
      "description": "Copy branding.revision unchanged from management_groups.get_branding; not an integer draft revision.",
      "maxLength": 64,
      "minLength": 64,
      "type": "string"
    },
    "management_group_slug": {
      "description": "Copy management_group_slug from management_groups.list. Prefix: mgmt_.",
      "maxLength": 255,
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "management_group_slug",
    "expected_revision",
    "changes"
  ],
  "type": "object"
}
```

## Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "oneOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "properties": {
        "ok": {
          "const": true
        }
      },
      "required": [
        "data"
      ]
    },
    {
      "not": {
        "required": [
          "data"
        ]
      },
      "properties": {
        "ok": {
          "const": false
        }
      },
      "required": [
        "error"
      ]
    }
  ],
  "properties": {
    "data": {
      "additionalProperties": false,
      "properties": {
        "branding": {
          "additionalProperties": false,
          "properties": {
            "capabilities": {
              "type": "object"
            },
            "domain_activation": {
              "additionalProperties": false,
              "properties": {
                "blockers": {
                  "items": {
                    "type": "string"
                  },
                  "maxItems": 3,
                  "type": "array"
                },
                "retry_after_seconds": {
                  "maximum": 60,
                  "minimum": 1,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "status": {
                  "enum": [
                    "active",
                    "ready",
                    "waiting",
                    "blocked"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "status",
                "blockers",
                "retry_after_seconds"
              ],
              "type": "object"
            },
            "domains": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "activated_at": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "cname_target": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "dns_records": {
                    "type": [
                      "array",
                      "object",
                      "null"
                    ]
                  },
                  "host": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "last_checked_at": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "normalized_error_code": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "normalized_error_message": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "status": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "surface": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "tls_status": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "txt_record_name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "txt_record_value": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "surface",
                  "host",
                  "status",
                  "cname_target",
                  "txt_record_name",
                  "txt_record_value",
                  "dns_records",
                  "tls_status",
                  "normalized_error_code",
                  "normalized_error_message",
                  "last_checked_at",
                  "activated_at"
                ],
                "type": "object"
              },
              "type": "array"
            },
            "email_sender": {
              "type": "object"
            },
            "frontend_links": {
              "additionalProperties": false,
              "properties": {
                "brand_assets": {
                  "format": "uri",
                  "maxLength": 4096,
                  "type": "string"
                },
                "domains": {
                  "format": "uri",
                  "maxLength": 4096,
                  "type": "string"
                },
                "legal_links": {
                  "format": "uri",
                  "maxLength": 4096,
                  "type": "string"
                },
                "open_portal": {
                  "description": "Durable, credential-free portal link. Offer unchanged after activation; the signed-in browser creates auth handoff on opening.",
                  "format": "uri",
                  "maxLength": 4096,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "overview": {
                  "format": "uri",
                  "maxLength": 4096,
                  "type": "string"
                },
                "support_details": {
                  "format": "uri",
                  "maxLength": 4096,
                  "type": "string"
                }
              },
              "required": [
                "overview",
                "brand_assets",
                "domains",
                "support_details",
                "legal_links",
                "open_portal"
              ],
              "type": "object"
            },
            "managed_provider_count": {
              "type": "integer"
            },
            "management_group_slug": {
              "description": "Canonical mgmt_ identifier; copy the returned value unchanged.",
              "maxLength": 255,
              "minLength": 1,
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "profile": {
              "type": "object"
            },
            "public_contact_email": {
              "type": "string"
            },
            "readiness": {
              "type": "object"
            },
            "recent_activity": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "event": {
                    "type": "string"
                  },
                  "occurred_at": {
                    "type": "string"
                  }
                },
                "required": [
                  "event",
                  "occurred_at"
                ],
                "type": "object"
              },
              "type": "array"
            },
            "revision": {
              "type": "string"
            }
          },
          "required": [
            "management_group_slug",
            "name",
            "managed_provider_count",
            "revision",
            "frontend_links",
            "profile",
            "domains",
            "public_contact_email",
            "email_sender",
            "readiness",
            "capabilities",
            "domain_activation"
          ],
          "type": "object"
        }
      },
      "required": [
        "branding"
      ],
      "type": "object"
    },
    "error": {
      "additionalProperties": false,
      "properties": {
        "code": {
          "type": "string"
        },
        "details": {
          "additionalProperties": true,
          "description": "Optional bounded, agent-safe correction or recovery facts.",
          "type": "object"
        },
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      },
      "required": [
        "code",
        "message",
        "retryable"
      ],
      "type": "object"
    },
    "meta": {
      "additionalProperties": false,
      "properties": {
        "request_id": {
          "type": "string"
        }
      },
      "required": [
        "request_id"
      ],
      "type": "object"
    },
    "ok": {
      "description": "Whether the tool completed successfully.",
      "type": "boolean"
    }
  },
  "required": [
    "ok",
    "meta"
  ],
  "type": "object"
}
```

Check the result, then read the affected record to confirm your change.
