Sport motorcycle builds: parts that fit your bike and model year, typical US prices, build links.
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.
A ready-made build for one bike, model year and style (first-mods, carbon-street, track-day, track-only, budget-track). Returns the parts with typical prices and fitment notes, what Unstocked does not list for that bike and year, and a link that opens the build on unstocked.bike. Give the rider that link.
Bike slug or name, e.g. "yamaha-r7", "R7" or "2026 Yamaha R7".
first-mods, carbon-street, track-day, track-only or budget-track. Plain words work too ("racing", "carbon", "first mods").
Model year, e.g. 2026. Without it the newest model years are used; ask the rider if it matters.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http unstocked https://unstocked.bike/mcp
A ready-made build for one bike, model year and style (first-mods, carbon-street, track-day, track-only, budget-track). Returns the parts with typical prices and fitment notes, what Unstocked does not list for that bike and year, and a link that opens the build on unstocked.bike. Give the rider that link.
| Argument | Type | Description |
|---|---|---|
| bike* | string | Bike slug or name, e.g. "yamaha-r7", "R7" or "2026 Yamaha R7". |
| year | any | Model year, e.g. 2026. Without it the newest model years are used; ask the rider if it matters. |
| style* | string | first-mods, carbon-street, track-day, track-only or budget-track. Plain words work too ("racing", "carbon", "first mods"). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"bike",
"style"
],
"properties": {
"bike": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Bike slug or name, e.g. \"yamaha-r7\", \"R7\" or \"2026 Yamaha R7\"."
},
"year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Model year, e.g. 2026. Without it the newest model years are used; ask the rider if it matters."
},
"style": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "first-mods, carbon-street, track-day, track-only or budget-track. Plain words work too (\"racing\", \"carbon\", \"first mods\")."
}
},
"additionalProperties": false
}Every part Unstocked lists for a bike, optionally for one model year or category. Each part has an id (for make_build_link), category, brand, tier, typical price, fitment note, flags (track-only, wants-tune) and whether it is listed for the model year. Also returns stock equipment and things to know before buying.
| Argument | Type | Description |
|---|---|---|
| bike* | string | Bike slug or name, e.g. "yamaha-r7". |
| year | any | Model year. With it, parts not listed for that year are left out. |
| query | string | Words in the part or brand name, e.g. "akrapovic" or "slip-on". |
| category | string | Category slug or word, e.g. "exhaust", "suspension", "brakes", "tires", "rearsets". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"bike"
],
"properties": {
"bike": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Bike slug or name, e.g. \"yamaha-r7\"."
},
"year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Model year. With it, parts not listed for that year are left out."
},
"query": {
"type": "string",
"maxLength": 80,
"description": "Words in the part or brand name, e.g. \"akrapovic\" or \"slip-on\"."
},
"category": {
"type": "string",
"maxLength": 40,
"description": "Category slug or word, e.g. \"exhaust\", \"suspension\", \"brakes\", \"tires\", \"rearsets\"."
}
},
"additionalProperties": false
}Bikes Unstocked covers, with their model-year groups. Optional query filters by make or model ("yamaha", "R7", "ZX-6R"). Use the slug with the other tools.
| Argument | Type | Description |
|---|---|---|
| query | string | Make or model, e.g. "yamaha" or "r7". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"query": {
"type": "string",
"maxLength": 80,
"description": "Make or model, e.g. \"yamaha\" or \"r7\"."
}
},
"additionalProperties": false
}Turn a list of part ids into a link that opens the build on unstocked.bike. Use part ids from get_parts or get_build for the same bike. Checks every id fits the bike and that no two parts share a slot, and returns the total at typical prices.
| Argument | Type | Description |
|---|---|---|
| bike* | string | Bike slug or name, e.g. "yamaha-r7". |
| title | string | Short build title, e.g. "Track R7". |
| part_ids* | array | Part ids, in the order to show them. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"bike",
"part_ids"
],
"properties": {
"bike": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Bike slug or name, e.g. \"yamaha-r7\"."
},
"title": {
"type": "string",
"maxLength": 60,
"description": "Short build title, e.g. \"Track R7\"."
},
"part_ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80
},
"maxItems": 40,
"minItems": 1,
"description": "Part ids, in the order to show them."
}
},
"additionalProperties": false
}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.