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_logois capped at 3 calls per minute;get_logo_resultpolling at 30. - Discovery
https://brandize.me/.well-known/mcp
Setup by harness
Claude Code
Add the server from your terminal:
claude mcp add --transport http brandize https://brandize.me/api/mcpCursor
Add to ~/.cursor/mcp.json (or a project's .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):
{
"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:
{
"method": "tools/call",
"params": {
"name": "generate_color_palette",
"arguments": {
"baseColor": "#3B82F6",
"harmony": "complementary",
"format": "hex"
}
}
}The server replies with a text content block:
{
"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:
{
"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):
{
"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:
{ "status": "pending_payment", "retryAfterSeconds": 5 }Once Stripe confirms payment:
{
"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.
Payment & consent
generate_logo is the only paid path. Calling it returns a watermarked low-res preview and a Stripe checkout link priced at the current service tiers. The full-resolution, watermark-free deliverable (PNG, vector SVG, and commercial license) unlocks only after payment settles. Poll get_logo_result with the returned jobToken to retrieve it.
The purchase is gated on consent: the agent must obtain your explicit acceptance of the Terms of Service and Privacy Policy before generating, and the checkout page requires you to accept again before payment.
Troubleshooting
429 on the endpoint itself
The overall limiter (100 requests / 15 min) rejects before reaching a tool, with a
Retry-Afterheader and{"code":"RATE_LIMITED"}. Back off for the given number of seconds and retry.isError: trueon tool inputFree tools validate input and return a text explanation with
isError: truerather than a protocol-level error, e.g. an unparseablebaseColor. Fix the argument and call again.status: "consent_required"from generate_logoReturned when
acceptedTermsis missing orfalse. Show the user the Terms and Privacy links in the response, get explicit acceptance, and call again withacceptedTerms: true.status: "not_found"from get_logo_resultThe
jobTokendoesn't match any job. Tokens aren't reused between calls; generate a new one withgenerate_logorather than retrying an old token.