Change the saved brand
update_brandCreate or update the saved brand kit, with ops or from a public site's url. Never applies branding to an existing site or publishes it. ops: business facts, the business and design overviews, colors, fonts, personas, logo marks, and which Drive files count as brand context; brand ops apply in order in one transaction, file ops run after it. url: Replo reads the site into the brand on its servers by mode: replace (default, whole brand) · swap (only parts, in full) · fill (keep what's set, fill gaps); a figma.com file link instead adds the file to the brand's Figma designs. Statuses: applied (saved at the returned version) · partial (brand saved, a file op refused; see files) · invalid (what was refused; nothing was written) · running (an import started and returns at once with importId: poll get_branding until it is completed or failed, under extraction for a site or figmaDesigns for a Figma file) · failed (the import could not start; see message) · action_required (the person must act first, such as connecting Figma; see connectUrl and message). A null value deletes that item, and a replace overwrites what was there. An import returns at once with an importId; follow it with get_branding instead of calling this again. A project gets 50 calls with a url a day, whether or not they start an import; ops don't count. Does not start an agent session.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ops | No | Ops in order; fill only the fields your op uses. setColor value: { key, name, hex: "#rrggbb", category: "brand" | "neutral", roles: string[], usage: string | null, position: integer }. setFont value: { key, family, roles: string[], delivery: "google-fonts" | "cdn" | "uploaded" | "system" | "unknown", license: string | null, usage: string | null, position: integer, faces: [{ weight: 1-1000, style: "normal" | "italic", assetId: uuid | null, sourceUrl: string | null }] }. setBusiness patch: any of name, about, audience, pricePoint, businessModel, foundedYear, location, voice, sourceUrl. setOverview: kind "business" | "design" and markdown. setMarks: logoAssetId, faviconAssetId or logomarkAssetId; upload the image with upload_asset first and pass the asset id it returns. setPersona value: copy a persona from get_branding and change what you need; a persona nickname is a segment label, never a person's name. A refused op comes back with `expected`, the exact shape to resend. Pass ops or url, not both. | |
| url | No | Import the brand from this public site instead of ops (add https:// if missing). Replo reads it on its servers into facts, palette, fonts, marks, brief, design notes and screenshots, and writes them by `mode`. Never restyles a site. A figma.com file link instead adds that file to the brand's designs (figmaDesigns: its frames, styles and photos); it takes no mode or parts, and needs Figma connected in Replo. | |
| mode | No | With url: how the site lands on the brand. replace (default): the whole brand becomes the site's ("make my brand from this site"). swap: each part in `parts` becomes the site's in full, nothing else changes, the brand keeps its name ("use their fonts", "take their logo and colors"). fill: everything already set stays and the site fills only the gaps, blending field by field ("fill in the rest from this site"). Pick swap for another company's site, so its story never mixes into this brand. | replace |
| parts | No | With url: the parts swap and fill take from the site, each written as the ops of its kind: facts → setBusiness and setOverview, colors → setColor, fonts → setFont, logo → setMarks; images adds the site's photos to brand imagery. Required for swap; on fill, omitted means all of them; refused with replace. | |
| projectId | Yes | The project whose saved brand to change. |