Brandize LogoBrandize

Brandize MCP Server

Brandize runs a hosted Model Context Protocol server. Connect it to your agent or harness to generate logos, palettes, and SEO markup directly from a conversation.

MCP is an open standard for connecting AI agents to external tools. It replaces one-off, per-app integration code with a single protocol that any compliant client (Claude Code, Cursor, ChatGPT, and others) can speak.

Connection details

Endpoint
https://brandize.me/api/mcp
Transport
Streamable HTTP (SSE disabled)
Auth
None required. Calls are rate-limited per client.
Rate limits
100 requests per 15 minutes overall. generate_logo is capped at 3 calls per minute; get_logo_result polling at 30.
Discovery
https://brandize.me/.well-known/mcp

Setup by harness

Claude Code

Add the server from your terminal:

Claude Code · terminal
claude mcp add --transport http brandize https://brandize.me/api/mcp

Cursor

Add to ~/.cursor/mcp.json (or a project's .cursor/mcp.json):

Cursor · mcp.json
{
  "mcpServers": {
    "brandize": {
      "url": "https://brandize.me/api/mcp"
    }
  }
}

Claude Desktop & generic clients

Clients that speak only stdio can bridge to the HTTP endpoint with mcp-remote. Add this to the client's MCP config (for Claude Desktop, claude_desktop_config.json):

Claude Desktop · claude_desktop_config.json
{
  "mcpServers": {
    "brandize": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://brandize.me/api/mcp"]
    }
  }
}

Restart the client after editing its config so the server is picked up.

Available tools

The free tools are always available. The logo-generation surface is a paid purchase.

Free

  • echoHealth check that returns your message verbatim, confirming the endpoint is reachable.
  • get_pricing_tiersList Brandize service tiers with their price and included features. Nothing is purchased.
  • search_blogSearch Brandize logo-design and branding guides by keyword; returns titles, excerpts, and URLs.
  • generate_color_paletteBuild a 5-color brand palette from a base hex color and harmony rule as CSS, Tailwind, or a hex list.
  • generate_meta_tagsGenerate an HTML <head> meta-tag block (title, description, canonical, Open Graph, Twitter Card).
  • generate_schema_markupGenerate a JSON-LD <script> block for a schema.org type (Organization, Article, FAQPage, Product, …).

Paid

  • generate_logoGenerate a brand logo from a design brief. Returns a watermarked low-res preview and a checkout link; the full-resolution, watermark-free deliverable unlocks only after payment.
  • get_logo_resultPoll a logo job by its jobToken. Once payment settles, returns a download URL for the full-resolution asset; otherwise a pending status.

Example: calling a tool

Free tool: generate_color_palette

Every tool call is a standard MCP tools/call request. Here's generate_color_palette building a five-color palette from a base hex color:

Request
{
  "method": "tools/call",
  "params": {
    "name": "generate_color_palette",
    "arguments": {
      "baseColor": "#3B82F6",
      "harmony": "complementary",
      "format": "hex"
    }
  }
}

The server replies with a text content block:

Response
{
  "content": [
    {
      "type": "text",
      "text": "Primary: #3b82f6\nLight: #84b1f9\nDark: #0a59da\nComplement: #f6af3b\nComplement Light: #f9cd84"
    }
  ]
}

Every tool returns this same shape: a content array of text blocks, with an isError flag set on invalid input. Paid tools return the identical structure, with the text payload carrying a checkout link or job status instead of a palette.

Paid flow: generate_logo then get_logo_result

generate_logo takes a full design brief and immediately returns a watermarked preview and a checkout link. No file is delivered yet:

Request
{
  "method": "tools/call",
  "params": {
    "name": "generate_logo",
    "arguments": {
      "brandName": "Kestrel Coffee",
      "whatItDoes": "Small-batch coffee roastery",
      "industry": "cafe-restaurant",
      "style": "minimalist",
      "layoutIntent": "wordmark",
      "primaryUseSurface": "storefront-sign",
      "colorPrimary": "#3B2A1E",
      "acceptedTerms": true
    }
  }
}

The response (trimmed here to the fields that matter):

Response (trimmed)
{
  "jobToken": "00000000-0000-4000-8000-000000000000",
  "tier": "PREMIUM",
  "checkoutUrl": "https://brandize.me/pay/Xk93P2",
  "priceUsd": 5,
  "note": "Give the user checkoutUrl to pay, then poll get_logo_result with jobToken."
}

Hand the user checkoutUrl, then poll get_logo_result with the jobToken every few seconds. Before payment settles:

Response · pending
{ "status": "pending_payment", "retryAfterSeconds": 5 }

Once Stripe confirms payment:

Response · paid
{
  "status": "paid",
  "tier": "PREMIUM",
  "format": "zip",
  "assetUrl": "https://brandize.me/api/mcp/logo/00000000-0000-4000-8000-000000000000/zip"
}

assetUrl is a zip of the full-resolution PNG, vector SVG, and commercial license, the same deliverable described in Payment & consent below.

Troubleshooting

  • 429 on the endpoint itself

    The overall limiter (100 requests / 15 min) rejects before reaching a tool, with a Retry-After header and {"code":"RATE_LIMITED"}. Back off for the given number of seconds and retry.

  • isError: true on tool input

    Free tools validate input and return a text explanation with isError: true rather than a protocol-level error, e.g. an unparseable baseColor. Fix the argument and call again.

  • status: "consent_required" from generate_logo

    Returned when acceptedTerms is missing or false. Show the user the Terms and Privacy links in the response, get explicit acceptance, and call again with acceptedTerms: true.

  • status: "not_found" from get_logo_result

    The jobToken doesn't match any job. Tokens aren't reused between calls; generate a new one with generate_logo rather than retrying an old token.

    MCP Server Setup: Claude Code, Cursor & More | Brandize