Connect Brand Kit OS to Claude, Cursor, and MCP clients so your brand context is available in every agent workflow
Claude caches the favicon from the server URL you originally pasted. Re-add the connector using the branded URL below to see the Brand Kit OS icon.
https://www.brandkitos.com/mcpbk_claude_connector_v1Brand Kit OS uses the Model Context Protocol (MCP) to give Claude direct access to your brand data. Once connected, Claude can pull your tone, voice, audience, messaging, and constraints in real time to produce on-brand content.
There are two connection methods. Both require a Base or Premium subscription and an active API key.
MCP access requires a Base or Premium plan. View plans
Generate an API key from Settings → API Keys (the Cowork Plugin creates one automatically)
Choose your preferred way to connect Brand Kit OS to Claude
Works on claude.ai (browser), Claude Desktop, and Claude Mobile. No files to download or install. Requires Claude Pro, Max, Team, or Enterprise.
Go to Settings → Connectors and click Add Custom Connector.
https://www.brandkitos.com/mcpbk_claude_connector_v1No Client Secret is needed — PKCE handles verification. Leave the Client Secret field empty.
Complete the authorization flow. You'll be redirected to Brand Kit OS to approve the connection. Once authorized, the Brand Kit OS tools will appear in your Claude conversations.
Try asking Claude: "Load my brand kit" or "Write a blog post about [topic]" — Claude will automatically apply your brand voice and guidelines.
Mobile access: If you set up the connector on claude.ai (web), it's automatically available on Claude Mobile (iOS & Android). You cannot add new connectors from the mobile app.
These tools are available to AI assistants connected via MCP, grouped by purpose.
list_brand_kitsDeduped kits you own or share; includes membership_role, can_read, can_write_brand_kit, brand_kit_write_sections & can_write_knowledge_files (scopes ∧ owner/admin for writes)get_brand_kit_summaryCompact brand overview (~500 tokens) — start hereget_brand_kitComplete brand kit with all sections (large payload)get_brand_kit_completenessAudit which fields are populated, partial, or empty + per-field schemaget_brand_context_for_agentTask-scoped brand context string ready to inject into agent promptsget_persona_system_promptFormatted system prompt for a specific AI personaget_brand_kit_coreMission, vision, brand story, promises, taglines, storytelling elements, and industry_classificationget_brand_kit_personalityPersonality traits, values, principles, and moodsget_brand_kit_expressionTone of voice, verbal style, voice archetypes, and visual styleget_brand_kit_productsProducts, services, features, and differentiatorsget_brand_kit_audienceTarget audience personas with demographics and pain pointsget_brand_kit_governanceConstraints, compliance notes, and disclosure policyget_brand_kit_personasAI persona configurations for the brandget_brand_kit_competitorsCompetitor analysis including colors, taglines, and value propsget_brand_kit_social_profilesSocial media profiles linked to a brand kitlist_logo_assetsLogo metadata only (no URLs) — use to decide which asset to fetchget_logo_assetFull metadata + URL for a specific logo asset by IDget_brand_kit_logo_assetsDEPRECATED — prefer list_logo_assets + get_logo_assetlist_knowledge_filesKnowledge file metadata + relevance_hint, with optional category filterget_knowledge_fileFull content of a specific knowledge file by IDupsert_brand_kit_coreUpdate mission, vision, brand story, brand promises, taglinesupsert_brand_kit_expressionUpdate tone, verbal style, archetypes, terminologyupsert_brand_kit_personalityUpdate personality traits, values, principles, moodsupsert_brand_kit_governanceUpdate behavioral constraints, negative directory, writing rulescreate_brand_kit_productAdd a new product or serviceupdate_brand_kit_productUpdate an existing productupdate_audience_personaUpdate an existing target audience personaupdate_ai_personaUpdate an existing AI persona configurationupload_knowledge_fileUpload a new markdown / JSON / PDF document. Requires `original_file_name` (source filename incl. extension) plus optional `relevance_hint`.generate_audience_personaAI-generate a complete target audience personagenerate_ai_personaAI-generate a complete AI persona configurationReusable prompt templates that AI assistants can invoke for common brand tasks.
brand_voice_checkEvaluate text against the brand voice and governance constraintsgenerate_brand_copyOn-brand marketing copy for social, email, web, ad, or blogbrand_introElevator pitch, bio, about page, or tagline optionscompetitor_positioningDifferentiation analysis from stored competitor dataaudience_persona_briefConcise persona brief for campaign planningcreate_target_audienceGuided interview that calls generate_audience_persona after confirmationcreate_ai_persona_guidedGuided interview that calls generate_ai_persona after confirmationApplies to all tools equally. If you hit the limit, wait up to 60 seconds.
Scopes are set when you create an API key. OAuth tokens receive scopes from the authorization consent screen. Write tools also require owner or admin membership on the brand kit — scopes alone do not override team role.
read
Required baseline. Grants all read, list, and preview tools.
brand_kit:write
Full write access to all brand kit sections, products, personas, and generate tools.
knowledge_files:write
Opt-in scope for upload_knowledge_file only.
Instead of brand_kit:write, you can grant least-privilege keys with per-section scopes such as brand_kit:write:expression. Configure these in Settings → API Keys.
brand_kit:write:core
Mission, vision, story, taglines, promises
brand_kit:write:personality
Traits, values, principles, moods
brand_kit:write:expression
Voice, tone, archetypes, platform rules, examples
brand_kit:write:governance
Constraints, compliance, approval workflows
brand_kit:write:products
Product and service catalog
brand_kit:write:audience
Target audience personas
brand_kit:write:personas
AI persona configurations
brand_kit:write:competitors
Competitor profiles
brand_kit:write:visuals
Colors, fonts, logos, kit name and summary fields
brand_kit:write:seo
Keywords and SEO metadata
Shared brand kits: viewers and editors can read, but only owners or members with role admin may use write or generate tools via MCP, even when the credential lists write scopes. Check membership_role from list_brand_kits before calling write tools.
Streamable HTTP
Not legacy SSE — fully spec-compliant
The server supports both application/json and text/event-stream responses based on the client's Accept header.
The server issues an Mcp-Session-Id header on the initialize response. Clients should include this header on all subsequent requests for the same session.
Common integration pitfalls when the server is healthy but something still looks wrong.
Empty list_brand_kits: usually means this user has no brand kits and no memberships, or the API key is tied to a different account than the one you seeded. It is not proof that MCP is down.
Cursor “connected” only confirms transport. Run tools/call for list_brand_kits to verify auth and data.
UUIDs: resolve brand_kit_id from list_brand_kits. Placeholder strings and invalid hex forms are rejected.
Shell: quote JSON carefully for curl -d; stuck commands often come from unclosed quotes.
Shared kits: viewers and editors can read, but only owners or members with role admin may use write or generate tools via MCP, even with write scopes.
Tool failures and prompts/get application failures return a successful JSON-RPC response with isError: true in the result and a structured _meta.error_code. Agents should branch on the code, not parse the message string. JSON-RPC top-level error is reserved for protocol issues (e.g. unknown method or unknown prompt name).
Tool error response shape
{
"jsonrpc": "2.0",
"id": 42,
"result": {
"isError": true,
"content": [{ "type": "text", "text": "Access denied to this brand kit" }],
"_meta": {
"error_code": "access_denied",
"retryable": false,
"recovery_hint": "Confirm the brand_kit_id is correct, or ask the brand kit owner to share it..."
}
}
}
| Code | Retryable | What the agent should do |
|---|---|---|
scope_denied |
No | Surface the recovery hint verbatim. Do not retry — the user must mint a new key with the required scope. |
access_denied |
No | Verify the brand_kit_id by calling list_brand_kits. If correct, ask the user to share the kit. |
validation_error |
No | Read the recovery hint, fix the arguments, and retry. Never retry with the same arguments. |
not_found |
No | Re-list the parent collection (e.g. get_brand_kit_personas) to find a valid id, or report to the user. |
quota_exceeded |
No | Tell the user. Tokens are not deducted on failed generations — a refund is automatic. |
ai_gateway_failed |
Yes | Retry once after a short delay. If it fails again, surface the message and the request_id. |
db_error |
Yes | Retry once. If it fails again, treat as transient and surface the request_id for support. |
timeout |
Yes | Retry with a smaller scope (e.g. get_brand_kit_summary instead of get_brand_kit). The server cancels upstream calls automatically. |
internal_error |
Yes | Retry once. Surface the request_id to the user — this is unexpected and worth reporting. |
Every response carries an Mcp-Request-Id header (also exposed inside _meta.request_id on tool errors and inside JSON-RPC error.data.request_id on protocol errors). Paste it into Settings → API Keys → Analytics to find the row in request logs.
generate_*) have a 60-second sub-budget; the upstream fetch is cancelled on timeout.The MCP server connection may not have started. Check that your API key or OAuth connection is valid and restart Claude Desktop.
Your API key may have expired or been revoked. Generate a new one from Settings → API Keys.
MCP access requires a Base or Premium plan. Upgrade your plan.
Wait up to 60 seconds and try again. The limit is 100 requests per minute.
Make sure you've completely quit Claude Desktop and restarted it. For the Remote Connector, verify you entered the correct Server URL and Client ID.