Model Context Protocol
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.
New to MCP? Read the guides: Generate logos with Claude and Using Brandize with ChatGPT and other MCP clients.
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,generate_logo_variations, andbuy_logo_variationare each capped at 3 calls per minute;get_logo_resultpolling at 30. - Discovery
https://brandize.me/.well-known/mcp
Setup by client
Pick your client and expand it. Claude clients come first, then Codex, Cursor, and any stdio-only harness.
Claude Codeplugin or terminal
The quickest route. Install the plugin from inside Claude Code and it connects the server for you:
/plugin marketplace add minim-l/brandize-mcp
/plugin install brandize@brandizeRun /mcp afterwards to confirm the server is connected.
Or add the server directly from the terminal:
claude mcp add --transport http brandize https://brandize.me/api/mcpClaude web & desktopcustom connector
Claude on the web and in the desktop app connects to the hosted endpoint directly — no config file or bridge:
- Open Connectors settings. In Claude, go to Settings → Connectors. In some versions this lives under Customize → Connectors.
- Start a custom connector. At the bottom of the Connectors section, select the "+" (or "Add custom connector"), then choose Custom. If Claude asks for a connector type, pick Web.
- Enter the server URL. Paste
https://brandize.me/api/mcpas the remote MCP server URL. Brandize needs no credentials today, so you can skip Advanced settings. - Add and authenticate. Select Add. Brandize's tools appear in your chats right away — the free tools need no sign-in — and you toggle the connector per conversation from the "+" menu. When a connector requires sign-in, Add redirects you to authenticate first.
Codexplugin or config.toml
Add the marketplace, then install the plugin:
codex plugin marketplace add minim-l/brandize-mcp
codex plugin add brandize@brandizeOr browse and install it from /plugins inside Codex.
Without the plugin, add the server to ~/.codex/config.toml instead:
[mcp_servers.brandize]
url = "https://brandize.me/api/mcp"Cursorsettings UI or mcp.json
Add the server from Cursor's interface, without editing a file by hand:
- Open MCP settings. From the sidebar, go to Customize → MCPs (in some builds, Settings → Tools & Integrations → MCP).
- Add a new server. Select New MCP server (or Add custom MCP) to start a server entry.
- Enter the details. Name the server
brandizeand pastehttps://brandize.me/api/mcpas the URL. Brandize needs no credentials, so skip any auth prompts. - Enable it. Save, then toggle the server on. Its tools appear in the tools list at the top of the chat panel, where you can enable them individually.
Or edit the config file directly — ~/.cursor/mcp.json (or a project's .cursor/mcp.json):
{
"mcpServers": {
"brandize": {
"url": "https://brandize.me/api/mcp"
}
}
}stdio-only clientsmcp-remote bridge
Clients that speak only stdio can bridge to the HTTP endpoint with mcp-remote. Add this to the client's MCP config (for older Claude Desktop builds, 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.generate_logo_variationsFree preview of alternate style directions for an existing generate_logo job — watermarked, same as generate_logo. Metered by a free-preview credit (1 by default; a COMPLETE purchase grants 2 more). Before purchase, returns a variationId for each option to buy instead of the original; on an already-purchased COMPLETE job it adds more alternates to the deliverable itself.buy_logo_variationPurchase one of the alternate designs from generate_logo_variations instead of the original, at the PREMIUM price. Once paid, poll get_logo_result with the same jobToken.
Clients cache this tool list when they first connect. After a Brandize update, reconnect the connector to pick up new or changed tools — in Claude Code, run /mcp; in other clients, toggle the connector off and on or restart. Existing tool calls keep working in the meantime.
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"
}
}
}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 and buy_logo_variation are the paid paths. generate_logo returns a watermarked low-res preview and a Stripe checkout link priced at the current service tiers; buy_logo_variation mints a checkout at the PREMIUM price for a design already previewed by generate_logo_variations. Either way, 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.
Consent is collected at checkout: the hosted Stripe page requires you to accept the Terms of Service and Privacy Policy before payment, so the tools neither gather consent nor surface these links themselves.
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: "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.