Find LEGO sets, compare regional retailer offers, and inspect recorded retail price history.
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.
Compare the freshest known delivered offer with the recorded retail low and show coverage. No all-time-low claims or predictions. History excludes Amazon; current offers can include Amazon.
Retailer market. Required; ask when unknown.
Requested look-back window in days; use 365 for 12 months. Shorter recorded coverage is returned and must still be shown.
Preferred result language. Comparison-page links always keep the selected retailer market.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http brickfact https://mcp.brickfact.com/mcp
Compare the freshest known delivered offer with the recorded retail low and show coverage. No all-time-low claims or predictions. History excludes Amazon; current offers can include Amazon.
| Argument | Type | Description |
|---|---|---|
| days | integer | Requested look-back window in days; use 365 for 12 months. Shorter recorded coverage is returned and must still be shown. |
| market* | string | Retailer market. Required; ask when unknown. |
| set_id* | integer | |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market",
"set_id"
],
"properties": {
"days": {
"type": "integer",
"default": 365,
"maximum": 730,
"minimum": 1,
"description": "Requested look-back window in days; use 365 for 12 months. Shorter recorded coverage is returned and must still be shown."
},
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"set_id": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
}
},
"additionalProperties": false
}Compare specifications, retirement status and monitored offers for two to four distinct set numbers in the same retailer market.
| Argument | Type | Description |
|---|---|---|
| market* | string | Retailer market. Required; ask when unknown. |
| set_ids* | array | |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
| price_basis | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market",
"set_ids"
],
"properties": {
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"set_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
"maxItems": 4,
"minItems": 2
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
},
"price_basis": {
"enum": [
"item",
"delivered"
],
"type": "string",
"default": "item"
}
},
"additionalProperties": false
}Find curated related sets, optionally cheaper by delivered price or with fewer pieces, and optionally within a delivered-price budget. Candidate coverage is bounded; fewer pieces does not establish physical dimensions.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| market* | string | Retailer market. Required; ask when unknown. |
| set_id* | integer | |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
| max_price | number | |
| preference | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market",
"set_id"
],
"properties": {
"limit": {
"type": "integer",
"default": 4,
"maximum": 6,
"minimum": 1
},
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"set_id": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
},
"max_price": {
"type": "number",
"maximum": 100000,
"exclusiveMinimum": 0
},
"preference": {
"enum": [
"similar",
"cheaper",
"fewer_pieces"
],
"type": "string",
"default": "similar"
}
},
"additionalProperties": false
}Get the existing app link and steps for setting a price alert or saving a set to a Brickfact watchlist. This read-only handoff does not create anything. A target_price is an optional draft in the market currency; the user completes the action in the app.
| Argument | Type | Description |
|---|---|---|
| action* | string | |
| market* | string | Retailer market. Required; ask when unknown. |
| set_id* | integer | |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
| target_price | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market",
"set_id",
"action"
],
"properties": {
"action": {
"enum": [
"price_alert",
"wishlist"
],
"type": "string"
},
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"set_id": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
},
"target_price": {
"type": "number",
"maximum": 100000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Only for explicit collector, resale or sealed-set market-valuation requests. For price history, price development, Preisentwicklung or past shop prices, call get_retail_price_history first. Never use this tool as a fallback for partial or unavailable retailer history. Values are EUR collector valuations, not retailer prices or predictions.
| Argument | Type | Description |
|---|---|---|
| range | string | |
| market* | string | Retailer market. Required; ask when unknown. |
| set_id* | integer | |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
| price_basis | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market",
"set_id"
],
"properties": {
"range": {
"enum": [
"1M",
"3M",
"1Y",
"YTD",
"ALL"
],
"type": "string",
"default": "1Y"
},
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"set_id": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
},
"price_basis": {
"enum": [
"item",
"delivered"
],
"type": "string",
"default": "item"
}
},
"additionalProperties": false
}First choice for price history, price trends, Preisentwicklung and past merchant prices. Read recorded delivered retailer prices in the selected market and currency. Use days 365 for the last 12 months. Partial coverage is valid history: show available observations and actual dates instead of saying no history. Amazon and unknown shipping are excluded. Do not substitute collector market valuations.
| Argument | Type | Description |
|---|---|---|
| days | integer | Requested look-back window in days; use 365 for 12 months. Shorter recorded coverage is returned and must still be shown. |
| market* | string | Retailer market. Required; ask when unknown. |
| set_id* | integer | |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market",
"set_id"
],
"properties": {
"days": {
"type": "integer",
"default": 365,
"maximum": 730,
"minimum": 1,
"description": "Requested look-back window in days; use 365 for 12 months. Shorter recorded coverage is returned and must still be shown."
},
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"set_id": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
}
},
"additionalProperties": false
}Look up a set's specifications, retirement information and monitored offers. Future retirement dates are estimates. Reported shipping totals and unverified stock are explicitly labelled.
| Argument | Type | Description |
|---|---|---|
| market* | string | Retailer market. Required; ask when unknown. |
| set_id* | integer | |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
| price_basis | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market",
"set_id"
],
"properties": {
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"set_id": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
},
"price_basis": {
"enum": [
"item",
"delivered"
],
"type": "string",
"default": "item"
}
},
"additionalProperties": false
}Find monitored retailer offers for one set in a supported market. Compare item prices and reported shipping totals. Unknown shipping is not free shipping. Results do not guarantee stock or checkout prices.
| Argument | Type | Description |
|---|---|---|
| market* | string | Retailer market. Required; ask when unknown. |
| set_id* | integer | |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
| price_basis | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market",
"set_id"
],
"properties": {
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"set_id": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
},
"price_basis": {
"enum": [
"item",
"delivered"
],
"type": "string",
"default": "item"
}
},
"additionalProperties": false
}Find catalogue theme IDs and names, optionally by text. Theme IDs can be used to narrow a set search.
| Argument | Type | Description |
|---|---|---|
| query | string | |
| market* | string | Retailer market. Required; ask when unknown. |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market"
],
"properties": {
"query": {
"type": "string",
"maxLength": 100
},
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
}
},
"additionalProperties": false
}After searching or choosing sets, show the final one to six set IDs as shopping cards, or two to four as a side-by-side comparison. Includes images, reported delivered prices, card shortlist and app handoffs. Data remains available without UI.
| Argument | Type | Description |
|---|---|---|
| view | string | |
| market* | string | Retailer market. Required; ask when unknown. |
| set_ids* | array | |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market",
"set_ids"
],
"properties": {
"view": {
"enum": [
"cards",
"comparison"
],
"type": "string",
"default": "cards"
},
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"set_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1
},
"maxItems": 6,
"minItems": 1
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
}
},
"additionalProperties": false
}Find sets by name or number, theme IDs, budget, pieces, age recommendation or retirement status. Use price_basis delivered for budgets including shipping; item preserves the original item-only search. Delivered search excludes unknown shipping before pagination. Returns links to Brickfact comparison pages.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| sort | string | |
| limit | integer | |
| query | string | |
| market* | string | Retailer market. Required; ask when unknown. |
| language | string | Preferred result language. Comparison-page links always keep the selected retailer market. |
| max_price | number | |
| min_price | number | |
| theme_ids | array | |
| max_pieces | integer | |
| min_pieces | integer | |
| retirement | string | |
| price_basis | string | |
| retirement_year | integer | |
| age_recommendations | array | |
| current_offers_only | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 1000,
"minimum": 1
},
"sort": {
"enum": [
"price_asc",
"price_desc",
"discount",
"newest"
],
"type": "string",
"default": "price_asc"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200
},
"market": {
"enum": [
"DE",
"AT",
"CH",
"GB",
"US",
"FR",
"NL",
"ES",
"IT"
],
"type": "string",
"description": "Retailer market. Required; ask when unknown."
},
"language": {
"enum": [
"de",
"en",
"fr",
"nl",
"es",
"it"
],
"type": "string",
"description": "Preferred result language. Comparison-page links always keep the selected retailer market."
},
"max_price": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"min_price": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"theme_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 10
},
"max_pieces": {
"type": "integer",
"maximum": 100000,
"minimum": 0
},
"min_pieces": {
"type": "integer",
"maximum": 100000,
"minimum": 0
},
"retirement": {
"enum": [
"any",
"retiring_soon",
"retired"
],
"type": "string",
"default": "any"
},
"price_basis": {
"enum": [
"item",
"delivered"
],
"type": "string",
"default": "item"
},
"retirement_year": {
"type": "integer",
"maximum": 2100,
"minimum": 1950
},
"age_recommendations": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{1,2}\\+$"
},
"maxItems": 10
},
"current_offers_only": {
"type": "boolean",
"default": true
}
},
"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 9, 2026.