This guide documents the stable REST contract for retrieving an active Brand
Skill. MCP clients can inspect Brand context through the capabilities in their
live
tools/list response; dynamically discovered MCP schemas are not
duplicated here as a public contract.Retrieve the active Skill
CallGET /brands/{id}/skill with the stable Brand ID:
- the exact Skill identity and creation time;
- the safe structured Brand profile;
- every Markdown file in the active Skill; and
- the Brand Library asset IDs referenced by each file.
GET /brands/{id}/skill reference.
Cache by immutable identity
UseskillId as the canonical identity of the returned snapshot. If a later request returns the same skillId, it represents the same immutable Skill.
contentHash is an opaque checksum of the stored artifact. It can be retained for comparison or integrity bookkeeping, but callers must not parse it or use it instead of skillId as the Skill identity.
basedOnSkillId identifies the base Skill when the current Skill was derived from an earlier version. It is null when that relationship is unavailable.
Refresh temporary font URLs
Custom typography can include temporary signed font URLs insideprofile. Cache the Skill’s durable fields by skillId, but retrieve the active Skill again when a font URL expires. A refreshed URL does not change the Skill’s identity.
Use the Skill in another system
Pass the structured profile and Markdown files to the system doing the work, and retainskillId with the resulting artifact or job record. That preserves which Brand context informed the result.
For example, an application can:
- create a Brand from a website, guide, and brief;
- wait until the Brand is ready;
- retrieve its active Skill;
- give the Skill to an agent that produces a deck or webpage; and
- record
skillIdbeside the finished output.
Handle unavailable Skills
404 BRAND_NOT_FOUNDmeans the Brand does not exist or is not accessible to the caller.409 BRAND_SKILL_UNAVAILABLEmeans the Brand does not have an active inspectable Skill, including while a new Brand is still processing.500 INTERNAL_ERRORmeans Bloom could not inspect the Skill; retry according to the application’s normal transient-error policy.
404 without changing the Brand ID or caller. For 409, check GET /brands/{id} and wait for status: "ready" before trying again.