Free logo maker: pick a design for your business, customise it, download the logo and brand kit.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when someone wants a logo, business branding, a brand identity or a complete brand kit for a business, and no Webba design has been chosen yet. Shows up to six existing logo designs matched to what the business does, or general ones when nothing fits, with its name on them and numbered. Each result has a state to pass to the other tools; once the person chooses, get_download gives them two ways to get it: the logo only, or the brand kit with the logo. Names can be up to 22 characters. Do not use this to suggest business names, make photos or illustrations that aren't logos, edit a logo the person already has, check trademarks, or give general design advice.
The business name, up to 22 characters.
What the business does, in the person's words, such as 'delivery company' or 'dog grooming salon'.
A colour the person asked for, such as 'orange'.
A tagline only if the person gave one.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http logo-lab https://webba.com/mcp
Use this when someone wants a logo, business branding, a brand identity or a complete brand kit for a business, and no Webba design has been chosen yet. Shows up to six existing logo designs matched to what the business does, or general ones when nothing fits, with its name on them and numbered. Each result has a state to pass to the other tools; once the person chooses, get_download gives them two ways to get it: the logo only, or the brand kit with the logo. Names can be up to 22 characters. Do not use this to suggest business names, make photos or illustrations that aren't logos, edit a logo the person already has, check trademarks, or give general design advice.
| Argument | Type | Description |
|---|---|---|
| colour | string | A colour the person asked for, such as 'orange'. |
| tagline | string | A tagline only if the person gave one. |
| business_name* | string | The business name, up to 22 characters. |
| business_description* | string | What the business does, in the person's words, such as 'delivery company' or 'dog grooming salon'. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"business_name",
"business_description"
],
"properties": {
"colour": {
"type": "string",
"maxLength": 40,
"description": "A colour the person asked for, such as 'orange'."
},
"tagline": {
"type": "string",
"maxLength": 40,
"description": "A tagline only if the person gave one."
},
"business_name": {
"type": "string",
"description": "The business name, up to 22 characters."
},
"business_description": {
"type": "string",
"maxLength": 200,
"description": "What the business does, in the person's words, such as 'delivery company' or 'dog grooming salon'."
}
}
}Use this when the person is happy with a Webba design and wants its files. 'logo' is the logo only: a pack of 24 logo files. 'kit' is the brand kit with the logo: roughly 100 to 110 files built around that logo: logo files, social posts, print files, a brand guide and a simple website, with sample words and pictures to replace. Returns a private link that expires after 24 hours. It opens a Webba page where the person ticks a box to agree to the Terms of Service and presses Download; nothing else counts as their agreement. A completed download counts toward a limit of 10 logo packs and 2 brand kits per person in any 24 hours; the same files again don't count, and failed downloads don't. Pass the chosen design's state exactly as a Webba result gave it, such as one of find_designs' results. When the person asks you to choose one of the designs shown, picking one counts as their choice. When they ask for the brand kit or the complete kit, use type 'kit'. Do not use this before a design has been shown, which comes from find_designs or start_build.
| Argument | Type | Description |
|---|---|---|
| type* | string | 'logo' for the logo only, or 'kit' for the brand kit with the logo. |
| state* | object | The design's state exactly as returned by the last Webba tool result. Don't edit it by hand. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"state",
"type"
],
"properties": {
"type": {
"enum": [
"logo",
"kit"
],
"type": "string",
"description": "'logo' for the logo only, or 'kit' for the brand kit with the logo."
},
"state": {
"type": "object",
"required": [
"system",
"name"
],
"properties": {
"base": {
"type": "string"
},
"font": {
"type": "string"
},
"name": {
"type": "string"
},
"part": {
"type": "string"
},
"about": {
"type": "string"
},
"shade": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"trade": {
"type": "string"
},
"design": {
"type": "string"
},
"system": {
"enum": [
"ready",
"build"
],
"type": "string"
},
"palette": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"tagline": {
"type": "string"
},
"placement": {
"type": "string"
}
},
"description": "The design's state exactly as returned by the last Webba tool result. Don't edit it by hand."
}
}
}Use this when the person asks what a chosen Webba design can change, or to search the graphics that exist, such as 'stacked boxes'. Only what's listed can be applied. It changes nothing. Do not use this to make a change, which is update_design, or for logos made elsewhere.
| Argument | Type | Description |
|---|---|---|
| state* | object | The design's state exactly as returned by the last Webba tool result. Don't edit it by hand. |
| search | string | Optional words to look for among the builder's graphics. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"state"
],
"properties": {
"state": {
"type": "object",
"required": [
"system",
"name"
],
"properties": {
"base": {
"type": "string"
},
"font": {
"type": "string"
},
"name": {
"type": "string"
},
"part": {
"type": "string"
},
"about": {
"type": "string"
},
"shade": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"trade": {
"type": "string"
},
"design": {
"type": "string"
},
"system": {
"enum": [
"ready",
"build"
],
"type": "string"
},
"palette": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"tagline": {
"type": "string"
},
"placement": {
"type": "string"
}
},
"description": "The design's state exactly as returned by the last Webba tool result. Don't edit it by hand."
},
"search": {
"type": "string",
"maxLength": 60,
"description": "Optional words to look for among the builder's graphics."
}
}
}Use this when the person describes a logo from parts, such as a phone with a chat symbol, or wants a graphic, lettering or placement a ready made design can't change. Only graphics in Webba's library are used, and no new artwork is generated: if none matches, it says so and names the closest. Do not use this when the person just wants logo ideas for a business, which is find_designs, or to choose or download a design already shown: pass that design's state to get_download.
| Argument | Type | Description |
|---|---|---|
| font | string | A style such as 'modern', or a font id. |
| colour | string | A colour word. |
| graphic* | string | The graphic the person described, such as 'smartphone with chat' or 'delivery van with stacked boxes'. |
| tagline | string | A tagline only if the person gave one. |
| placement | string | Such as 'name underneath'. |
| from_state | object | The ready made design this replaces, to keep its colours and tagline. |
| business_name* | string | The business name, up to 22 characters. |
Use this when the person asks to change a Webba design already shown: its name, tagline, colour, graphic, lettering or name placement. Keeps everything they didn't mention. Ready made designs can change only name, tagline and colour. Says which changes were applied and which this design can't do, and offers a builder alternative when it can't. Do not use this for a logo made elsewhere, or for a different business, which is find_designs.
| Argument | Type | Description |
|---|---|---|
| state* | object | The design's state exactly as returned by the last Webba tool result. Don't edit it by hand. |
| changes* | object | Only what the person asked to change. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"state",
"changes"
],
"properties": {
"state": {
"type": "object",
"required": [
"system",
"name"
],
"properties": {
"base": {
"type": "string"
},
"font": {
"type": "string"
},
"name": {
"type": "string"
},
"part": {
"type": "string"
},
"about": {
"type": "string"
},
"shade": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"trade": {
"type": "string"
},
"design": {
"type": "string"
},
"system": {
"enum": [
"ready",
"build"
],
"type": "string"
},
"palette": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"tagline": {
"type": "string"
},
"placement": {
"type": "string"
}
},
"description": "The design's state exactly as returned by the last Webba tool result. Don't edit it by hand."
},
"changes": {
"type": "object",
"properties": {
"font": {
"type": "string",
"description": "A font id, or a style such as 'modern', or 'different'."
},
"mark": {
"type": "string",
"description": "A mark id from list_options."
},
"part": {
"type": "string",
"description": "A part id from list_options."
},
"colour": {
"type": "string",
"description": "A colour word or a colour name from list_options."
},
"graphic": {
"type": "string",
"description": "The graphic asked for, such as 'stacked boxes'."
},
"tagline": {
"type": "string",
"description": "Use an empty string to remove it."
},
"placement": {
"type": "string",
"description": "A placement id, or words such as 'name underneath'."
},
"business_name": {
"type": "string"
}
},
"description": "Only what the person asked to change."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"business_name",
"graphic"
],
"properties": {
"font": {
"type": "string",
"maxLength": 40,
"description": "A style such as 'modern', or a font id."
},
"colour": {
"type": "string",
"maxLength": 40,
"description": "A colour word."
},
"graphic": {
"type": "string",
"maxLength": 80,
"description": "The graphic the person described, such as 'smartphone with chat' or 'delivery van with stacked boxes'."
},
"tagline": {
"type": "string",
"maxLength": 40,
"description": "A tagline only if the person gave one."
},
"placement": {
"type": "string",
"maxLength": 40,
"description": "Such as 'name underneath'."
},
"from_state": {
"type": "object",
"required": [
"system",
"name"
],
"properties": {
"base": {
"type": "string"
},
"font": {
"type": "string"
},
"name": {
"type": "string"
},
"part": {
"type": "string"
},
"about": {
"type": "string"
},
"shade": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"trade": {
"type": "string"
},
"design": {
"type": "string"
},
"system": {
"enum": [
"ready",
"build"
],
"type": "string"
},
"palette": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"tagline": {
"type": "string"
},
"placement": {
"type": "string"
}
},
"description": "The ready made design this replaces, to keep its colours and tagline."
},
"business_name": {
"type": "string",
"description": "The business name, up to 22 characters."
}
}
}