# Brandbase > Brand context for any agent. Read a brand's guidelines, prompts, skills, logos, colors, fonts, images and video, and keep them up to date. MCP server: https://api.brandbase.run/mcp (streamable HTTP; OAuth, or an API key as a bearer token) REST: https://api.brandbase.run ยท OpenAPI: https://api.brandbase.run/openapi ## How to use it Brandbase holds everything an agent needs to work on-brand: written guidelines (design.md, image.md, video.md, voice.md), prompts, skills, logos, colors, fonts, images, video and templates, each with a description, usage rules and searchable metadata. Before producing anything for a brand, call get_brand_context with that brand and, when you know it, the task (design, image, video, copy, web, social). It returns the guidance to follow and an index of the library. If you do not know the brand's slug, call list_brands first. Find a specific asset with search_assets: free text over names, tags, descriptions, rules, metadata and the body of text assets, plus filters by kind, tags, applies_to, format and metadata. Read one with get_asset, which returns the text body, or the file URL for images, video and fonts. An asset's rules are binding: read them before using the asset. Use the file exactly as stored; never redraw a logo or approximate a color. Writing: create_asset and update_asset keep the brand current. Send text as content; for a file already online send source_url; for a local file call request_upload, send the file to the returned upload_url, then pass the upload_id. Always write a description that says what someone would search for, and rules when usage is restricted. Updates are versioned: pass expected_version from your last read, and use restore_asset to undo. Write only when the user asked you to change the brand. A connection without write access can still read everything. ## Tools - list_brands (GET /brands): The brands this workspace holds, most recently changed first, each with its slug and how many assets of each kind it has. Start here when you do not know a brand's slug. - get_brand (GET /brands/{brand}): One brand's profile and asset counts. For the guidance itself call get_brand_context. - get_brand_context (GET /brands/{brand}/context): Everything to read before working on a brand: its profile, the full text of its guidelines and color palettes, and an index of its prompts, skills, logos, fonts, images, video and templates with their rules and URLs. Pass task to keep only what applies to the work at hand. Call this first, once per brand per conversation. - search_assets (GET /assets): Find assets in one brand or across all of them. query matches names, paths, tags, descriptions, rules, metadata and the body of text assets, ignoring case and accents; filters narrow by kind, tags, applies_to, format, metadata and status. Results carry metadata, rules and URLs but not text bodies: read those with get_asset. match says how the results were found: "exact" when every word matched, "partial" when only some did (best first), "fuzzy" when only close spellings did. - get_asset (GET /assets/{asset}): One asset in full: metadata, rules, and its body. Text assets (markdown, SVG, HTML, JSON) come back in content; files come back as url, with preview_url for a small rendition. Address it by asset id, or by brand and path. Pass version to read an earlier revision. - list_asset_versions (GET /assets/{asset}/versions): The revision history of an asset, newest first: who changed it, when, and the note they left. - create_brand (POST /brands): Add a brand to the workspace. Write a description: it is the first thing every agent reads. - update_brand (PATCH /brands/{brand}): Change a brand's profile. Only the fields you send change. - delete_brand (DELETE /brands/{brand}): Remove a brand and every asset in it. Confirm with the user first. - create_asset (POST /assets): Add an asset to a brand. Send exactly one body: content for text you can write out (markdown, SVG, HTML, JSON), source_url for a file already online, content_base64 for a small file, or upload_id after request_upload for a local file. Fill description, tags, applies_to and metadata so the asset can be found, and rules when its use is restricted. - update_asset (PATCH /assets/{asset}): Change an asset's details, its body, or both. Only the fields you send change; tags, applies_to and metadata are replaced whole. Every update is a new version. Pass expected_version from your last read so a concurrent change is not overwritten. - restore_asset (POST /assets/{asset}/restore): Bring an earlier version of an asset back as the newest one. Nothing is lost: the restore is itself a new version. - delete_asset (DELETE /assets/{asset}): Remove an asset from its brand. Confirm with the user first. - request_upload (POST /uploads): Open an upload for a local file. Returns an upload_url, the form fields to send with it and a ready curl command; POST the file as multipart form data, then pass the upload_id to create_asset or update_asset.