Brand
The canonical Hi Marley brand — design tokens, expression assets, skills, voice & guidelines, and a downloadable kit. Built for humans and machines.
The Brand is the single source of truth for what "on-brand" means at Hi Marley — for people building decks and droplets, and for agents generating content. It exposes machine-readable design tokens (/api/brand/tokens.json), the curated expression assets (photography, iconography, patterns, network expression), the brand skills, and the voice & guidelines.
Access is gated to Brand Stewards (@drop-brand-stewards) while the new brand is in progress. Customer logos, employee headshots, and other "handy" assets live in the Library, separately — the Brand and Library sit side by side.
There is no versioning: one canonical brand, no draft/archived states.
Icon tiers
Iconography carries a curation tier, separate from tags. Tags describe what an asset is about (lifestyle, business, ai); tier describes how prominent it is:
marquee— the named, hand-curated set. The website nav icons and the ecosystem chips, in a deliberate order (tierRank).common— frequently used, one step below the marquee set.library— everything else. The default, and the bulk of the ~5,000 icons.
If you are an agent picking an icon, start with --tier marquee. It is the small set Hi Marley actually uses, so it is the on-brand answer far more often than a name search across the full library. Widen to common, then drop the tier filter entirely, only if nothing fits. Search without a tier reaches every tier.
The Brand object
Every Brand carries these attributes.
Attributes
tags (which describe subject matter). Defaults to library. Filter with --tier on brand assets list / search; set with brand assets update --tier or brand assets bulk-tier. tierRank orders the marquee set.--marley-* cssVar cross-ref. Read via /api/brand/tokens.json; stewards edit them in the Basics tab.{
"name": "Hi Marley Brand",
"tagline": "Everything you need to be on-brand — for humans and machines.",
"assetCount": 175,
"skillCount": 3,
"colorTokenCount": 9
}Methods
Endpoints to operate on a Brand. The example switches between curl, drop CLI, and MCP via the dropdown — your choice persists across the page.
Get brand tokens
Return the machine-readable design tokens — color palette and typeface. This is the endpoint agents and build tools pull so they never guess brand values. Brand Steward access required.
drop brand tokens{
"colors": [
{
"tier": "core",
"name": "Marley Red",
"hex": "#F9685D",
"pms": "7416 C",
"cmyk": "0 74 60 0",
"rgb": "249 104 93",
"cssVar": "--marley-coral",
"usage": "Primary actions, CTAs"
}
],
"typeface": {
"name": "Greycliff CF",
"role": "Display & headings"
}
}List brand assets
List the brand expression assets — photography, iconography, patterns, network expression. Optionally filter by category or curation tier (marquee = the named, hand-curated set; common = frequently used; library = everything else). Brand Steward access required.
drop brand assets list --category icon{
"assets": [
{
"id": "i1",
"filename": "icon_handshake_outline_red.svg",
"category": "icon",
"url": "https://drop-apps.himarley.xyz/_library/brand/assets/.../icon_handshake_outline_red.svg"
}
]
}Update a brand asset
Edit a brand asset’s metadata (tags, usage guidance, alt text) or retire/restore it (archived). Metadata edits never change the asset’s URL. To change the artwork itself, upload a new asset instead — URLs are immutable so existing references never silently move. Brand Steward access required.
Parameters
drop brand assets update ckbrandasset0001 --usage-guidance "Use on dark backgrounds only."{
"asset": {
"id": "ckbrandasset0001",
"filename": "logo_hi_marley_white.svg",
"category": "logo",
"url": "https://drop-apps.himarley.xyz/_brand/assets/.../logo_hi_marley_white.svg",
"tags": [],
"usageGuidance": "Use on dark backgrounds only.",
"altText": null,
"archivedAt": null
}
}Delete a brand asset
Permanently delete a brand asset — removes the database row and the underlying S3 object. This breaks any URL that still points at it, so reserve it for mistakes; to retire a published asset safely, use brand assets update --archived instead. Brand Steward access required.
Parameters
drop brand assets delete ckbrandasset0001{
"deleted": true,
"id": "ckbrandasset0001"
}Search brand assets
Find brand assets by free-text query (matched across filename, tags, usage guidance, and alt text) with optional category and tag filters. Built for agents choosing the right asset for a use case — tag your assets well and this becomes the lookup. Brand Steward access required.
Parameters
drop brand assets search --q handshake --category icon{
"assets": [
{
"id": "ck1",
"filename": "icon_handshake_outline_red.svg",
"category": "icon",
"url": "https://drop-apps.himarley.xyz/_brand/assets/.../icon_handshake_outline_red.svg",
"tags": [
"partnership",
"agreement"
],
"usageGuidance": "Use for partnership/agreement moments.",
"altText": null,
"archivedAt": null
}
]
}Bulk add/remove asset tags
Add and/or remove tags across many brand assets at once (union-add then set-remove, normalized + deduped per asset). Powers multi-select tagging. Ids not on the canonical brand are returned in notFound. Brand Steward access required.
Parameters
drop brand assets bulk-tags --ids ck1,ck2 --add partnership --remove draft{
"updated": [
{
"id": "ck1",
"tags": [
"partnership"
]
},
{
"id": "ck2",
"tags": [
"partnership"
]
}
],
"notFound": []
}Bulk set asset curation tier
Set the curation tier across many brand assets at once. Every found id reports the tier it now holds, whether or not it changed; ids not on the canonical brand come back in notFound. To order icons within the marquee set, use brand assets update --tier-rank. Brand Steward access required.
Parameters
drop brand assets bulk-tier --ids ck1,ck2 --tier common{
"updated": [
{
"id": "ck1",
"tier": "common"
},
{
"id": "ck2",
"tier": "common"
}
],
"notFound": []
}