Skip to content
Consume

MCP

Eight read-only tools that serve the canon to an assistant: tokens, documents, component guides, templates, assets and the brand lint.

This MCP server gives an AI assistant the brand canon so it does not have to guess. Eight read-only tools —context, tokens, canon documents, component guides, templates, assets, the brand lint and the stack standard— over streamable HTTP at https://brand.arcasiles.com/mcp. Connect your client with the snippet below. The assistant loads brand_context when the session opens and checks what it writes with brand_check against canon v5.0.1.

A brand server for AI assistants

The assistant asks over HTTP and gets the canon structured: exact hex values, templates and a brand verdict, instead of a description it has to interpret.

The endpoint
https://brand.arcasiles.com/mcp
  • Streamable HTTP
  • Read-only
  • 8 tools
  • Canon v5.0.1

Available tools

Real names and signatures from the brand-mcp server. All eight read the canon; none of them writes to it.

  • brand_context ()

    Loads the brand brief: identity, tone, colors and the rules an agent has to respect.

    On-brand brief in Markdown

  • brand_tokens (format?)

    Structured design tokens: colors, the seven emphasis ones (amber, lila, blue, ink, orange, pink, green), typography and motion. With format="css", the --arc-* layer as the kit declares it.

    Tokens and emphasis colors as JSON

  • brand_doc (name)

    A canon document by name: design system, motion, accessibility, identity and the voice registers. This is the why behind each rule.

    The canon document in Markdown

  • brand_component (name, lang?)

    A kit component's sheet: variants and when to use each one, states, do/don't, accessibility, props and copyable code.

    Component sheet with its code

  • brand_template (name)

    Returns a governed template for emails, documents, decks, pieces or sheets by name.

    Ready-to-fill template

  • brand_asset (name, encode?)

    Looks up a logo, a font or a brand-character variant by name, and returns it as an embeddable data URI.

    Embeddable data URI

  • brand_check (content)

    The brand lint: tone and WCAG AA contrast. Out comes PASS or FAIL, with the finding and its fix.

    PASS / FAIL + findings

  • brand_stack ()

    The stack standard: what is used at each layer and what it takes to step outside it.

    Stack lanes per layer

The AI asks, the brand answers

Five real questions with the answer the server sends back, as it comes. The answer is JSON and also text: the assistant reads it and so does a screen reader.

AI assistant

What is the Group emphasis color, and what contrast does it give with its text?

brand_tokens()
Brand MCP response · JSON
                        {
  "accent": "amber",
  "role": "Group",
  "fill": "#f9be4a",
  "onFill": "#272727",
  "contrast": "8.9:1",
  "wcag": "AAA"
}
                      

Setup per client

.mcp.json
# CLI (recommended; single quotes preserve the variable):
claude mcp add --transport http arcasiles-brand https://brand.arcasiles.com/mcp \
  --header 'Authorization: Bearer ${BRAND_MCP_TOKEN}'

# or in the project's .mcp.json:
{
  "mcpServers": {
    "arcasiles-brand": {
      "type": "http",
      "url": "https://brand.arcasiles.com/mcp",
      "headers": {
        "Authorization": "Bearer ${BRAND_MCP_TOKEN}"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "arcasiles-brand": {
      "url": "https://brand.arcasiles.com/mcp",
      "headers": {
        "Authorization": "Bearer ${env:BRAND_MCP_TOKEN}"
      }
    }
  }
}
.vscode/mcp.json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "brand-mcp-token",
      "description": "Brand MCP bearer",
      "password": true
    }
  ],
  "servers": {
    "arcasiles-brand": {
      "type": "http",
      "url": "https://brand.arcasiles.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:brand-mcp-token}"
      }
    }
  }
}
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "arcasiles-brand": {
      "serverUrl": "https://brand.arcasiles.com/mcp",
      "headers": {
        "Authorization": "Bearer ${env:BRAND_MCP_TOKEN}"
      }
    }
  }
}
opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "servers": {
      "arcasiles-brand": {
        "type": "remote",
        "url": "https://brand.arcasiles.com/mcp",
        "oauth": false,
        "headers": {
          "Authorization": "Bearer {env:BRAND_MCP_TOKEN}"
        }
      }
    }
  }
}
~/.copilot/mcp-config.json
{
  "mcpServers": {
    "arcasiles-brand": {
      "type": "http",
      "url": "https://brand.arcasiles.com/mcp",
      "headers": {
        "Authorization": "Bearer ${BRAND_MCP_TOKEN}"
      },
      "tools": ["*"]
    }
  }
}

~/.gemini/config/mcp_config.json

Not supported for this remote: Antigravity accepts headers, but its official documentation does not prove safe variable interpolation inside them. Do not paste or store a literal bearer.