BrandKity MCP Server
OfficialThe BrandKity MCP Server enables AI agents to programmatically create, manage, and publish brand kits from any MCP-compatible client (Claude Desktop, Cursor, Windsurf, etc.).
Workspace Management
Retrieve workspace details (plan, kit count, storage usage)
Upload files (images, fonts, videos, documents, ZIPs) to storage and get a public CDN URL
List workspace files with filtering by type and pagination
Brand Kit Management
Create kits with name, accent color, tagline, and template
List, get, update, publish, or unpublish existing brand kits
Block Management
List, idempotently create (
ensure_block), add, update (name/visibility), and delete blocksSupported block types: Colors, Typography, Logos, Visuals, Videos, Icons, Collaterals, Resources, Rich Text
Content & Style Definition
Add color swatches (hex, RGB, CMYK, Pantone) to Colors blocks
Define font entries (Google, Adobe, Custom, System) in Typography blocks
Set rich text content (brand story, tone of voice, values) in Rich Text blocks
Add editorial/usage guidance notes to any block
Asset Upload & Integration
Upload individual assets (logos, visuals, videos, icons, etc.) into specific blocks
Batch upload multiple files with deduplication and configurable concurrency
Upload kit-level logo and cover image directly
White-Label Branding (Pro+ Feature)
Set custom SEO title, description, favicon, and social share (OG) image for kit portals
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BrandKity MCP ServerCreate a brand kit for Acme Corp with accent #E55B00"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@brandkity/mcp — BrandKity MCP Server
Model Context Protocol server for BrandKity — create and manage brand kits from any AI agent (Claude Desktop, Cursor, Windsurf, or any MCP-compatible client).
Current Version: 1.4.3 — MCP now available on Starter, Pro, and Agency plans
Quick Start
1. Get an API Key
Sign in at brandkity.com
Go to Settings → API Keys
Click Generate New Key and copy the key (
bk_live_...)
Available on Starter, Pro, and Agency plans. Sign up free to explore, then upgrade Starter or above to run tool calls.
2. Configure Your AI Client
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"brandkity": {
"command": "npx",
"args": ["-y", "@brandkity/mcp"],
"env": {
"BRANDKITY_API_KEY": "bk_live_your_key_here"
}
}
}
}Cursor
Edit .cursor/mcp.json:
{
"mcpServers": {
"brandkity": {
"command": "npx",
"args": ["-y", "@brandkity/mcp"],
"env": {
"BRANDKITY_API_KEY": "bk_live_your_key_here"
}
}
}
}Windsurf
Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"brandkity": {
"command": "npx",
"args": ["-y", "@brandkity/mcp"],
"env": {
"BRANDKITY_API_KEY": "bk_live_your_key_here"
}
}
}
}3. Use It
Once configured, ask your AI agent to create a brand kit:
"Create a brand kit for Acme Corp with the accent color #E55B00. Add a Colors block with the primary palette (Orange Flame #E55B00, Midnight #1A1A2E, Canvas #FAF9F7) and a Typography block with Inter for headings and DM Sans for body. Upload the logos from /Users/me/acme/logos/."
Related MCP server: brand-gen
Available Tools (22)
Tool | Description |
Workspace | |
| Get workspace info (plan, kit count, storage) |
Files | |
| Upload any local file to workspace storage → returns a public URL |
| List workspace files with type filter and pagination |
Kits | |
| List all brand kits (filter by draft/published/all) |
| Create a new kit → returns kit_id |
| Get a kit with all blocks and content |
| Update kit settings (name, color, template, logo_url, cover_image_url, white-label fields) |
| Publish a kit → returns public URL |
| Unpublish a kit (reverts to draft) |
Blocks | |
| List all blocks in a kit with IDs and types |
| Idempotent — returns existing block_id or creates a new block (preferred over add_block) |
| Add a block unconditionally (use ensure_block instead to prevent duplicates) |
| Update block name/visibility |
| Permanently delete a block and all its content |
Content | |
| Add color swatches to a Colors block |
| Add font entries to a Typography block |
| Set rich text content (brand story, tone of voice) |
| Set the editorial note displayed above any block |
Upload | |
| Upload a local file into a block (logos, visuals, videos, etc.) with auto-retry |
| Upload multiple local files into the same block; deduplicates by file path |
| Upload and set the kit's header logo |
| Upload and set the kit's cover image |
White-Label Branding (Pro+ Feature)
Customize your portal with custom favicon, social share image, and SEO metadata:
// Upload custom assets
const faviconUrl = await client.uploadFile('favicon.ico', faviconBuffer);
const ogImageUrl = await client.uploadFile('og-image.png', ogImageBuffer);
// Apply white-label branding
await client.updateKit('kit-id', {
og_title: 'Acme Corp Brand Guidelines',
og_description: 'Official brand assets and standards',
custom_favicon_url: faviconUrl,
og_image_url: ogImageUrl,
});Fields:
og_title(string, max 100 chars) — SEO title for social shareog_description(string, max 300 chars) — SEO descriptioncustom_favicon_url(string) — CDN URL to favicon (ICO/PNG/SVG)og_image_url(string) — CDN URL to social share image (1200×630 px recommended)
Plan Requirements:
Free: White-label fields are read-only; MCP tool calls return 403
Starter/Pro/Agency: Full MCP access; white-label fields are read-write on Pro/Agency
Environment Variables
Variable | Required | Default | Description |
| Yes | — | Personal Access Token ( |
| No |
| API base URL (for local dev) |
Typical Workflow
1. get_workspace → verify connection, check plan and storage
2. list_kits → confirm kit doesn't already exist
3. create_kit → returns kit_id
4. ensure_block → idempotent: returns existing block_id or creates a new one (for each block type)
5. add_colors → populate the Colors block
6. add_typography → populate the Typography block
7. upload_file → upload font/logo/cover files to workspace storage
8. upload_asset → upload logos, images, videos into blocks
9. set_brand_story → write the brand story in a rich_text block
10. set_block_note → add usage guidance to any block
11. publish_kit → make the portal liveReliability Notes (v1.4.0)
No duplicate blocks —
ensure_blockis idempotent. Re-running a workflow never creates duplicate blocks.Auto-retry on uploads —
upload_assetandupload_fileretry up to 3 times on network errors with exponential backoff.Size-aware timeouts — Upload timeout scales with file size (60 s base + 20 s per 10 MB, max 10 min). Large files like 64 MB video assets are handled reliably.
Batch deduplication —
upload_assets_batchsilently skips duplicatefile_pathentries so the same file is never uploaded twice in one batch.Agent instructions — The server now provides operating rules to AI clients at connection time, reducing duplicate operations from AI agents automatically.
White-label URL resolution — CDN URLs in white-label fields are automatically resolved to asset IDs server-side; agents don't need to manage asset IDs directly.
Storage tracking — All file uploads are tracked per workspace for accurate quota enforcement.
License
MIT
Available Tools
22 toolsadd_blockA
IMPORTANT: prefer ensure_block over this tool — ensure_block is idempotent and prevents duplicates. add_block creates a new block unconditionally. Calling it twice creates two separate blocks of the same type. Only use add_block when you have already confirmed via list_blocks that no block of this type exists. Block types: • colors — brand palette swatches (use add_colors) • typography — font entries (use add_typography) • rich_text — brand story / guidelines text (use set_brand_story) • logos — logo variants uploaded as SVG/PNG (use upload_asset with block_type=logos) • visuals — brand photography / illustrations (use upload_asset with block_type=visuals) • videos — brand video assets (use upload_asset with block_type=videos) • icons — SVG icon library (use upload_asset with block_type=icons) • collaterals — downloadable files like PDFs (use upload_asset with block_type=collaterals) • resources — source files, Figma, ZIPs (use upload_asset with block_type=resources)
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| type | Yes | Block type | |
| name | No | Custom display name for the block. Defaults to the type label. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It warns that calling twice creates duplicates and advises using ensure_block for idempotency. However, it does not disclose permissions, side effects, or error behavior. The duplicate warning is a key behavioral trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured, starting with a warning and then providing clear usage guidance and a mapping of block types to alternative tools. Every sentence adds value, though it could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks information about the return value or output of the tool, and does not mention error handling or permissions. Given that there is no output schema, this is a gap. However, it covers the usage context well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond what the schema provides. The list of block types and their preferred tools is useful but relates to usage guidelines rather than parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool creates a new block unconditionally and distinguishes it from ensure_block and other sibling tools for specific block types. The verb 'creates' and resource 'block' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: prefer ensure_block, only use add_block after confirming via list_blocks, and each block type has a recommended tool. This clearly tells when and when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_colorsA
Add color swatches to a Colors block. Valid fields per swatch: name (required), hex (required, #rrggbb), rgb ("R, G, B"), cmyk ("C, M, Y, K"), pantone. There is NO usage field on color swatches — put usage guidance in the block note via set_block_note instead.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| block_id | Yes | Block UUID (must be a colors block) | |
| colors | Yes | Array of color swatches to add (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It details valid fields and clarifies the absence of a usage field, which is helpful. However, it does not mention the max 50 limit (present in schema) or whether swatches are appended or replaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence states the primary action, the second provides critical field details and a caution. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations or output schema, the description covers the essential aspects: what it does, field requirements, and a notable exclusion. It could mention the maximum number of swatches (though in schema) or behavior on existing swatches, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by providing examples and clarifying the format for rgb, cmyk, and pantone. It also explicitly states that hex is required in #rrggbb format, enhancing the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'Add color swatches to a Colors block'. It uses a specific verb and resource, making the purpose unambiguous. The purpose is distinct from sibling tools like add_typography or set_block_note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance that there is no 'usage' field and directs to set_block_note for usage guidance. This prevents misuse, though it does not elaborate on when to use this tool versus other add tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_typographyA
Add font entries to a Typography block. Four sources are supported: (1) "Google Fonts" — provide font_family, weights, usage. Fully automated. (2) "Adobe Fonts" — provide font_family + asset_url (Typekit CSS URL from fonts.adobe.com → Web Projects → Get embed code). (3) "Custom" — first upload the font file using upload_file tool, then pass asset_url (the returned URL) here. (4) "System" — provide font_family only (font must be available on the OS).
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| block_id | Yes | Block UUID (must be a typography block) | |
| fonts | Yes | Array of font entries to add (max 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the behavior for each source (e.g., Google Fonts is 'Fully automated', Adobe Fonts requires asset_url). However, it does not disclose potential errors, rate limits, or the outcome of adding fonts (e.g., whether it overwrites existing entries).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph with clear enumeration of sources. It is well-structured and efficiently conveys necessary information, though it could be slightly more concise without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and usage well, but lacks information about return values or error handling. Since no output schema exists, this gap is notable. It is adequate for a tool with three required parameters but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the usage of asset_url for Custom and Adobe Fonts, and noting that weights default to [400]. This context goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Add font entries to a Typography block.' It distinguishes itself from siblings by being specific to typography blocks and enumerates four distinct font sources, providing clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance for each source, including prerequisites (e.g., needing to use upload_file tool for Custom fonts). However, it does not explicitly state when not to use the tool or suggest alternative tools, leaving some gap in decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_kitA
Create a new brand kit. Returns the kit ID needed for subsequent operations like adding blocks and uploading assets.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The brand's name, e.g. 'Acme Corp' | |
| accent_color | Yes | Primary brand color as hex, e.g. '#E55B00' | |
| template | No | Portal template. Default: 'minimal' | |
| tagline | No | Short subtitle shown in the portal header, e.g. 'Modern solutions for modern businesses' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly identifies the operation as creation and mentions the returned kit ID, but lacks details on side effects, error conditions, or prerequisites beyond the schema's required fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. It front-loads the purpose and then provides the key consequence (return of kit ID).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is fairly complete for a simple create operation: it explains the action, the key return value (kit ID), and hints at usage flow. Could benefit from mentioning defaults or error handling, but is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add extra meaning to the parameters beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Create a new brand kit' with a specific verb and resource, and distinguishes from sibling tools like update_kit and list_kits. Also mentions the return value (kit ID) needed for subsequent operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used first before adding blocks or uploading assets, but does not explicitly state when to use it versus alternatives or provide any when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_blockA
Permanently delete a block and all its content from a kit. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| block_id | Yes | Block UUID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses destructive behavior ('permanently delete', 'cannot be undone') which adds value beyond the schema. No annotations exist, so the description carries the burden. Lacks details on permissions, side effects, or confirmation steps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no unnecessary words, front-loaded with action and permanent consequence. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive tool with two parameters and no output schema, the description is mostly complete. Lacks error handling info or success/failure indication, but acceptable given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with clear descriptions for both parameters. The description adds no extra meaning beyond what the schema provides, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'delete' and resource 'block from a kit', distinguishing it from sibling tools like add_block or update_block. It specifies permanence and scope ('all its content').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like update_block or ensure_block. Does not mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensure_blockA
PREFERRED over add_block. Idempotent block creation: if a block of the given type already exists in the kit, returns its block_id without creating a duplicate. If no matching block exists, creates one and returns the new block_id. Use this for every block in your workflow so re-runs and retries never produce extra blocks. The "created" field in the response tells you whether a new block was created (true) or an existing one was returned (false).
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| type | Yes | Block type | |
| name | No | Custom display name. Only applied when a new block is created; ignored when an existing block is returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully explains the idempotent behavior, the return value (block_id), and the 'created' field. It does not cover error cases or permissions, but the core behavioral traits are well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, each serving a distinct purpose: preference, idempotency explanation, usage advice, and response field clarification. It is front-loaded with the most critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides sufficient context about the return value and idempotency. It lacks details on error handling or edge cases, but for a create-or-get operation, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds value by explaining that the name parameter is only applied on creation, ignored for existing blocks. This nuance goes beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: idempotent block creation, returning existing block_id if a block of the given type already exists, otherwise creating a new one. It explicitly names the preferred tool and distinguishes it from add_block.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'PREFERRED over add_block' and advises using this tool for every workflow to avoid duplicates on re-runs. It also clarifies when the name parameter is applied, providing clear guidance on usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kitA
Fetch a kit's full data including all blocks and their content.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the tool fetches data. It omits behavioral details such as read-only nature, authentication needs, or error handling for missing kits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action, no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description provides a high-level understanding but lacks specifics on the return structure or behavior, leaving moderate gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with 'kit_id' described as 'Kit UUID'. The description adds no further parameter context, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and resource ('kit's full data including all blocks and their content'), clearly distinguishing it from siblings like 'list_kits' or 'update_kit'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for retrieving complete kit data, but does not explicitly mention when to use it over alternatives (e.g., 'list_kits' for summary) or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspaceA
Returns the workspace associated with the API key. Use this to verify the connection and check workspace details like plan, kit count, and storage usage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It mentions return details (plan, kit count, storage usage) but does not disclose restrictions like auth requirements or potential errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description adequately covers purpose and usage. Could mention that a valid API key is required, but it's implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so baseline is 4. Description adds value by explaining what the tool returns, going beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'returns' and the resource 'workspace', and specifies it is associated with the API key. It distinguishes from sibling tools which focus on blocks and kits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states use cases: 'verify the connection and check workspace details.' While no alternatives are mentioned, the context implies it's the only tool for workspace-level info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blocksA
List all blocks in a kit with their IDs, types, names, and visibility. Use to find block_ids before adding content.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries full burden. It discloses the output fields (IDs, types, names, visibility) but does not elaborate on behavior like pagination or ordering. This is adequate for a simple list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and follow with a usage hint. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is complete. It specifies what is returned and when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (kit_id described as 'Kit UUID'). The description does not add extra parameter context beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists blocks in a kit with specific fields (IDs, types, names, visibility). It distinguishes from sibling tools like add_block by noting it helps find block_ids before adding content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use to find block_ids before adding content', providing clear context for when to use this tool. It does not mention exclusions, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesA
List files in your workspace storage. Filter by type to find fonts, images, documents, etc. Returns public URLs for each file.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by file type. Use 'font' to find previously uploaded font files. | all |
| page | No | Page number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It states 'Returns public URLs for each file', indicating read-only behavior. However, it lacks details on pagination, ordering, or potential empty results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and add filtering and return info. No redundant or unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two parameters and no output schema, the description covers core functionality and return value. Minor gap: paging behavior (e.g., page parameter default) is not explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds marginal value. It reinforces the type parameter's filtering purpose but does not add significant new meaning beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'files in your workspace storage'. It distinguishes from sibling tools like upload_file or list_blocks by focusing on listing stored files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by suggesting filtering for fonts, images, documents, etc., but does not explicitly state when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_kitsA
List all brand kits in the workspace. Optionally filter by status (draft, published, or all).
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter kits by status. Default: all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the operation is a list with optional filtering, but lacks details on pagination, ordering, rate limits, or whether the list is complete or batched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with the primary action and includes the key optional parameter. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality but omits expected details for a list operation, such as return format, pagination, or sorting. Given no output schema, such information would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the only parameter 'status' is fully described in the schema with an enum and default. The description adds no extra semantic meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all brand kits in the workspace, with an optional filter by status. It distinguishes from sibling tools like get_kit (single kit) and create_kit (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing kits but does not explicitly state when to use this versus alternatives (e.g., get_kit for a single kit, or list_blocks for blocks). No exclusion criteria or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_kitB
Publish a kit, making its portal publicly accessible. Returns the public URL.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden but only mentions the basic state change and return value. It omits side effects, prerequisites, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and effect, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with one parameter, but lacks mention of prerequisites like kit state or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with 'Kit UUID' description; the tool description adds no further meaning to the parameter, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'publish a kit' and the effect 'making its portal publicly accessible', distinguishing it from siblings like unpublish_kit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use or not use this tool, nor any alternatives mentioned. Usage is only implied by the action description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_block_noteA
Set the sticky editorial note on any block (the "Block note" editor visible at the top of every block in the dashboard). Use this for usage guidance, rules, or context that applies to the whole block. For colors: "Electric Blue is always the primary CTA colour." For typography: "Never use Outfit below 600 weight." For logos: "Always use the SVG version on digital. Use reversed on dark backgrounds."
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| block_id | Yes | Block UUID (any block type) | |
| note | Yes | The note text to display above the block content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool sets a note and gives examples, but does not mention idempotency, permissions, or side effects. However, for a simple write operation, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise: two sentences that front-load the purpose and provide immediate examples. Every sentence adds value, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description does not need to explain return values. It fully explains the tool's purpose, where the note appears, and what kind of content to use. It is complete for a simple set operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description adds value by providing examples of what to include in the note (e.g., color rules, typography rules), which goes beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets the sticky editorial note on any block, specifying the exact location (the 'Block note' editor at the top of every block) and giving concrete examples. This distinguishes it from sibling tools like update_block or delete_block.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'for usage guidance, rules, or context that applies to the whole block.' It implies that other types of updates should use different tools, though it does not list specific alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_brand_storyA
Set the content of a Rich Text block. Use for brand story, tone of voice, brand values, do's & don'ts extracted from guidelines documents. Accepts plain text or basic HTML.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| block_id | Yes | Block UUID (must be a rich_text block) | |
| content | Yes | The text or HTML content. Plain text and <p>, <b>, <i>, <ul>, <li> tags are supported. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool accepts plain text or basic HTML and lists supported tags. However, it lacks details about overwriting behavior, permissions, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, no redundant words. Every sentence provides distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should ideally mention return value or confirmation. It also does not cover prerequisites like kit existence or block type validation beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by specifying what kind of content is expected (brand story, tone of voice) and supported HTML tags, going beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set the content of a Rich Text block.' It specifies usage for brand story, tone of voice, etc., and distinguishes from siblings like set_block_note or update_block by focusing on rich text content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use for brand story, tone of voice, brand values, do's & don'ts extracted from guidelines documents.' However, it does not state when not to use or mention alternative tools like update_block for other block types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpublish_kitA
Unpublish a kit, taking it offline. The kit remains in draft and can be re-published later.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. States the kit remains in draft and can be re-published, indicating non-destructive behavior. Lacks details on permissions or side effects but adequate for the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with the action. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one required param, no output schema, and no annotations, the description covers the state change (offline, draft, re-publishable). Could mention impact but is nearly complete for a simple toggle operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (kit_id as 'Kit UUID'). Description adds no additional meaning beyond the schema, meeting baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Unpublish' and resource 'kit', and adds context that it takes the kit offline, remains in draft, and is re-publishable. This differentiates it from sibling tools like publish_kit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for taking a kit offline but provides no explicit when-to-use or when-not-to-use guidance. Mentions re-publishing but no alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_blockA
Update a block's name or visibility. To set the block note, use set_block_note instead.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| block_id | Yes | Block UUID | |
| name | No | New display name for the block | |
| is_visible | No | Whether the block is visible in the portal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It only states 'Update' implying mutation, but omits permissions, partial update behavior, reversibility, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose, second directs to the appropriate sibling. No redundant language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but parameters are fully documented. Missing details on return value and behavior for omitted fields (partial update). Adequate but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with well-described parameters. The description adds no extra parameter meaning beyond what the schema provides, achieving baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a block's name or visibility and explicitly distinguishes itself from the sibling set_block_note using 'instead'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells when to use (for name/visibility) and when not (use set_block_note for notes). However, no guidance on other alternatives like delete_block or ensure_block.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_kitA
Update a kit's top-level settings like name, accent color, template, tagline, logo, cover image, or white-label meta/favicon (Pro+). For logo_url and cover_image_url, pass CDN URLs returned by upload_file or upload_asset. For og_image_url and custom_favicon_url, pass CDN URLs from upload_file.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| name | No | New kit name | |
| accent_color | No | New accent color as hex | |
| template | No | New template | |
| tagline | No | New tagline | |
| logo_url | No | CDN URL for the kit header logo (from upload_file or upload_asset). Set to empty string to remove. | |
| cover_image_url | No | CDN URL for the kit cover/hero image (from upload_file or upload_asset). Set to empty string to remove. | |
| og_title | No | (Pro+) Custom page title used in browser tab and social sharing. Pass null to reset to kit name. | |
| og_description | No | (Pro+) Custom meta description for search results and social sharing. Pass null to reset. | |
| og_image_url | No | (Pro+) CDN URL for the custom social share / OG image (from upload_file). Set to empty string to remove. | |
| custom_favicon_url | No | (Pro+) CDN URL for a custom browser tab favicon (from upload_file). Accepts ICO, PNG, or SVG. Set to empty string to remove. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions some behaviors (removing by empty string, Pro+ requirements), but does not disclose auth needs, rate limits, side effects on unchanged parameters, or error conditions. Partial disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph with two sentences. It is front-loaded with the main purpose and each sentence adds necessary detail without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 params, no output schema, no annotations), the description provides an overview and key parameter details. However, it lacks information on return values, error handling, and restrictions for non-Pro+ plans, leaving gaps for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds valuable context beyond the schema: it explains the source of CDN URLs (upload_file/upload_asset) and the reset behavior for Pro+ parameters (pass null). This enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and resource 'kit's top-level settings', listing examples like name, accent color, template. This distinguishes it from sibling tools like publish_kit or add_block.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives some specific usage hints (e.g., passing CDN URLs for images, setting empty string to remove), but does not explicitly state when to use this tool over alternatives like create_kit or update_block. No exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_assetA
Upload a file from the local filesystem into a block in BrandKity. Use for: logos (SVG/PNG/JPG), visuals (brand photos), videos (MP4/WebM), icons (SVG only), collaterals (PDF/images), and resources (ZIPs, source files). For custom font files, use upload_file → add_typography(asset_url) instead.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| block_id | Yes | Block UUID | |
| file_path | Yes | Absolute path to the local file, e.g. '/Users/jane/Projects/AcmeCorp/logos/acme-primary.svg' | |
| block_type | Yes | Target block type (used for MIME validation and storage path) | |
| variant_name | No | For logos blocks only — the logo variant slot name, e.g. "Primary", "Horizontal", "Icon Mark", "Mono", "Reversed". Defaults to first empty slot. | |
| collateral_title | No | For collaterals blocks only — the display title | |
| collateral_description | No | Optional description for collateral items | |
| resource_label | No | For resources blocks only — the display label, e.g. "Figma Source File" | |
| resource_category | No | Category grouping for the resource, e.g. "Source Files" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as file size limits, overwrite behavior, access requirements, or error handling. It only mentions MIME validation implicitly via block_type, but that is included in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first states the core action, the second lists use cases and an exception. No fluff, front-loaded, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters (4 required), no output schema, and no annotations, the description covers overall purpose and usage scenarios but lacks behavioral details and conditional parameter interactions (e.g., variant_name only for logos). It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds high-level usage context (e.g., file types) but does not elaborate on parameter-specific semantics beyond what is in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads a file into a block in BrandKity, and enumerates specific asset types (logos, visuals, videos, etc.) which distinguishes it from siblings like upload_file or upload_kit_logo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists what file types to use this tool for and provides an alternative tool sequence (upload_file → add_typography) for font files, giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_assets_batchA
Batch upload multiple local files into a single block with one tool call. Duplicate file_path values in the list are automatically skipped — each unique path is uploaded only once. Use for logos, visuals, videos, collaterals, resources, and icons. For files larger than 50 MB, prefer uploading individually with upload_asset. If the batch partially fails, resubmit only the failed files.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| block_id | Yes | Block UUID | |
| block_type | Yes | Target block type (used for MIME validation and storage path) | |
| files | Yes | List of files to upload in a single batch request (max 100 files) | |
| parallelism | No | How many files to upload concurrently. Default: 3 (max: 6) | |
| continue_on_error | No | If true, continues uploading after failures and returns a partial result. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses duplicate skipping, partial failure retry, and preference for individual uploads for large files. Could mention response format, but otherwise strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise, front-loaded sentences. No redundant information. Each sentence adds value: purpose, dedup, use cases, large file guidance, failure handling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks return value description and error handling details beyond partial failure. No output schema, so description should hint at response. Otherwise covers key aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all 6 parameters with 100% coverage. Description adds minimal extra meaning beyond what schema already provides (e.g., block_type explanation).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool batches multiple local files into a single block and lists specific use cases (logos, visuals, videos, etc.). It distinguishes from sibling tool upload_asset by mentioning large file handling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: use upload_asset for files larger than 50 MB, resubmit failed files on partial failure. Also explains automatic duplicate skipping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_cover_imageA
Upload an image to set as the kit's hero/cover image (shown at the top of the portal for supported templates). Uploads the file to workspace storage and then sets cover_image_url on the kit.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| file_path | Yes | Absolute path to the image file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the two-step process (upload to storage, then set URL) and mutation effect. However, no annotations exist, so description carries full burden. Missing details like error handling, permission needs, or behavior on invalid files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose. No fluff or redundancy; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and high-level process but omits return value, error handling, and constraints. Given no output schema and no annotations, description could be more comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but both parameters ('Kit UUID', 'Absolute path') are basic. The description adds context about the upload process but does not enhance parameter semantics (e.g., allowed image types, size limits). Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Upload' and the resource 'kit's hero/cover image', explaining its role as the top portal image for supported templates. It distinguishes from siblings like upload_kit_logo (logo) or upload_asset (general asset) by focusing on cover image and workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like upload_kit_logo or upload_asset. Lacks prerequisites (e.g., image format, size limits) or conditions when not to use it. Agent must infer from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileA
Upload any file from the local filesystem to your BrandKity workspace storage (R2). Returns a public URL you can use in other tools. Common use cases: • Font files (.ttf, .otf, .woff, .woff2) → use returned URL in add_typography asset_url • Kit logo or cover image → use returned URL in update_kit logo_url/cover_image_url • General brand assets → manage from your file library Supported: images (PNG, JPG, SVG, WebP), video (MP4, WebM), fonts (TTF/OTF/WOFF/WOFF2), documents (PDF, DOCX, PPTX), ZIP.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the local file, e.g. '/Users/jane/fonts/BrandFont-Regular.woff2' | |
| tags | No | Comma-separated tags to label this file, e.g. 'font,brand,primary' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose all behavioral traits. It mentions uploading to R2 and returning a public URL, but lacks details on overwrite behavior, file size limits, or authentication requirements. It does list supported file types. Score 3 for adequate but incomplete disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with a clear front-loaded statement, followed by a bullet list of common use cases. Every sentence adds value without redundancy. Score 5 for efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple file upload tool, the description covers inputs, return value, supported file types, and typical usage. It lacks mention of file size limits or duplicate handling, but these are minor. Output schema is not needed. Score 4 for being mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by providing an example absolute path and clarifying tags as comma-separated with example. It also shows how parameters link to use cases. Score 4 for meaningful addition beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads files to workspace storage and returns a public URL, with specific verb ('Upload'), resource ('file to BrandKity workspace storage'), and output. It distinguishes from sibling tools like upload_cover_image and upload_kit_logo by listing common use cases. Score 5 for specificity and differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use examples (fonts, logos) and links to sibling tools (add_typography, update_kit). It implies alternatives exist for specific-brand uploads but does not explicitly say when not to use this tool. Score 4 for clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_kit_logoA
Upload an image to set as the kit's main logo (shown in the portal header). This is different from the Logos block — this is the kit branding logo. Uploads the file to workspace storage and then sets logo_url on the kit.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | Kit UUID | |
| file_path | Yes | Absolute path to the image file (SVG, PNG, JPG, WEBP) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description reveals the two-step behavior (upload to storage, set logo_url). Yet it misses details like overwrite behavior, file size limits, auth requirements, or error handling, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no waste: first sentence states purpose, second clarifies differentiation, third explains mechanism. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output description since no output schema exists. No mention of return value, success/error indicators, or edge cases. Given sibling diversity, more context would help agent decide correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both params with descriptions, but the description adds allowed image formats (SVG, PNG, JPG, WEBP) for file_path and explains the upload+set process, enhancing understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads an image to set as the kit's main logo in the portal header, distinguishing it from the Logos block. It specifies the verb 'upload' and the resource 'kit logo', making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contrasts this tool with the Logos block, providing some differentiation. However, it does not explicitly compare to similar upload tools like upload_cover_image or specify prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
22 tool updates
v1.4.2- First observed
add_block - First observed
add_colors - First observed
add_typography - First observed
create_kit - First observed
delete_block - First observed
ensure_block - First observed
get_kit - First observed
get_workspace - First observed
list_blocks - First observed
list_files - First observed
list_kits - First observed
publish_kit - First observed
set_block_note - First observed
set_brand_story - First observed
unpublish_kit - First observed
update_block - First observed
update_kit - First observed
upload_asset - First observed
upload_assets_batch - First observed
upload_cover_image - First observed
upload_file - First observed
upload_kit_logo
TDQS
Most tools have distinct purposes, but the multiple upload tools (upload_asset, upload_assets_batch, upload_file, upload_kit_logo, upload_cover_image) and add_block vs ensure_block may confuse an agent. Descriptions help, but some overlap remains.
All tools use snake_case with a consistent verb_noun pattern (e.g., add_colors, list_kits, publish_kit). No mixing of conventions, making the naming predictable.
22 tools is slightly high but still reasonable for a brand kit management server covering CRUD, uploads, publishing, and workspace info. Each tool has a clear role, though some could be consolidated.
Covers core workflows for kits, blocks, and assets, but missing delete_kit and delete_asset (only delete_block exists). Also lacks granular content retrieval for specific block types beyond get_kit.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Brand-safe MCP for AI agents to create editable, on-brand graphics and automate variants.
On-brand creative studio for AI agents: images, video, audio, and 3D.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Give your agent your brand's DNA: context, F-VAL validation and on-brand content generation.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to fetch company logos, brand colors, fonts, and corporate information from the Brandfetch API using domain lookups or keyword searches.1MIT
- AlicenseNot gradedqualityDmaintenanceA memory-backed brand generation runtime for agent-led creative iteration. Enables AI agents to plan, generate, review, and improve brand materials with persistent brand memory and structured workflows.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to generate on-brand visuals from ideas, URLs, documents, or PDFs in over 100 formats and 150+ languages, with consistent brand kits.10MIT
- AlicenseNot gradedqualityFmaintenanceGenerates complete brand identity systems including colors, typography, logos, and design tokens with 58 MCP tools. Supports multi-format export and AI-assisted refinement.2052MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BrandKity/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server