lego-oracle
LEGO Oracle is an MCP server for exploring a comprehensive LEGO catalog (26k sets, 62k parts, 17k minifigs) backed by Rebrickable data — no network calls or configuration required at runtime.
Search LEGO sets by name, theme, year range, or piece count
Get full set details including part inventory (grouped by category), minifigures, and theme hierarchy
Compare 2–4 sets side by side — piece counts, release year, theme, minifig count, and shared parts
Search for parts by name, category, colour, or material
Get part details including available colours and mold/print variants
Find which sets contain a specific part (optionally filtered by colour), sorted by quantity
Search minifigures by name and get minifig details including every set a minifigure appears in
Browse the LEGO theme hierarchy — explore top-level themes and sub-themes with set counts
Find community MOCs (alternate builds) constructible from the parts of a specific set you already own
Ask your AI assistant about LEGO sets, find specific bricks, look up minifigures, browse themes, and compare sets. All backed by Rebrickable's catalog (26k sets, 62k parts, 17k minifigs), not hallucinations.
10 tools. Zero config. Works with every MCP-compatible IDE.
Install
npx -y lego-oracleAdd to your IDE
claude mcp add lego-oracle -- npx -y lego-oracleAdd to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows):
{
"mcpServers": {
"lego-oracle": {
"command": "npx",
"args": ["-y", "lego-oracle"]
}
}
}Add to .cursor/mcp.json:
{
"mcpServers": {
"lego-oracle": {
"command": "npx",
"args": ["-y", "lego-oracle"]
}
}
}Add to .vscode/mcp.json:
{
"servers": {
"lego-oracle": {
"command": "npx",
"args": ["-y", "lego-oracle"]
}
}
}Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"lego-oracle": {
"command": "npx",
"args": ["-y", "lego-oracle"]
}
}
}Add to settings.json:
{
"context_servers": {
"lego-oracle": {
"command": {
"path": "npx",
"args": ["-y", "lego-oracle"]
}
}
}
}Related MCP server: brickem-mcp-server
Tools
Set Tools
Tool | Description |
| Search for sets by name, theme, year, or piece count. Full-text search with filters. |
| Get complete set details: inventory (grouped by part category), minifigures, theme hierarchy. |
| Compare 2-4 sets side by side: piece count, year, theme, minifigs, shared parts. |
Part Tools
Tool | Description |
| Search parts by name, category, colour, or material. |
| Get part details including available colours and mold/print variants. |
| Find which sets contain a specific part (optionally in a specific colour), sorted by quantity. |
Minifig Tools
Tool | Description |
| Search minifigures by name. |
| Get minifig details and every set it appears in. |
Discovery Tools
Tool | Description |
| Browse the LEGO theme hierarchy. Top-level themes or drill into sub-themes with set counts. |
| Find community alternate builds (MOCs) for a set's parts. |
Data
All data is embedded at build time from Rebrickable. No network calls at runtime.
Category | Count |
Sets | 26,339 |
Parts | 61,702 |
Colours | 275 |
Minifigures | 16,646 |
Inventory entries | 1,483,652 |
Part relationships | 35,757 |
Themes | 490 |
Data is updated daily via GitHub Actions. New npm versions are published automatically when Rebrickable data changes.
Development
npm install
npm run build
npm test # 141 testsTo refresh data from Rebrickable:
npm run fetch-data
npm run buildAttribution
Data from Rebrickable. LEGO is a trademark of the LEGO Group. This project is not produced by or endorsed by the LEGO Group.
License
MIT
Available Tools
10 toolsbrowse_themesA
Browse the LEGO theme hierarchy. With no input, returns all top-level themes with set counts. With a theme name, returns its sub-themes and sets. Use this to explore what LEGO themes exist or drill into a specific theme.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | Theme name or numeric ID. Omit to list all top-level themes with set counts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses the two distinct behaviors and the output includes set counts for top-level themes and sub-themes/sets for specific themes. No mention of side effects or destructive actions, but as a read-only browse operation, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. Efficiently covers purpose, usage, and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema or annotations, the description fully informs an agent about its behavior and usage. No missing information needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameter semantics (theme name/numeric ID, optional). Description adds that using a theme name returns its sub-themes and sets, which provides modest extra context beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool browses the LEGO theme hierarchy with specific behaviors for no input (top-level themes with set counts) and with input (sub-themes and sets). This distinguishes it from sibling tools that focus on sets, minifigs, or parts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains when to use: to explore themes or drill into a specific theme. It implies alternatives by listing sibling tools with different purposes, but does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_setsA
Compare 2 to 4 LEGO sets side by side. Shows piece count, year, theme, minifig count, and shared parts between sets. Use this when someone is deciding between sets or wants to know what parts overlap.
| Name | Required | Description | Default |
|---|---|---|---|
| set_nums | Yes | Array of 2-4 LEGO set numbers to compare side by side |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral transparency. It does not disclose whether the tool requires authentication, has rate limits, is read-only, or any other behavioral traits. It only mentions output fields but not how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose and followed by usage guidance. Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one parameter, no nested objects, no output schema), the description adequately covers the tool's purpose and usage. It distinguishes from siblings and provides enough context for an agent to select it correctly, though it omits return format details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already describes the 'set_nums' parameter well. The description reinforces the range (2 to 4 sets) but does not add significant new semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Compare' and the resource 'LEGO sets' with a specific range of 2 to 4. It lists the output attributes (piece count, year, theme, minifig count, shared parts), making the tool's purpose distinct from siblings like get_set (single set) or search_sets (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use: 'when someone is deciding between sets or wants to know what parts overlap.' While it does not name alternative tools, the usage context is clear and matches the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_mocsA
Find community alternate builds (MOCs) that can be made from a specific LEGO set's parts. Use this when someone wants to know what else they can build with parts they already own.
| Name | Required | Description | Default |
|---|---|---|---|
| set_num | Yes | LEGO set number (e.g. "75192-1" for the Millennium Falcon) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It does not mention any behavioral traits like destructive nature, rate limits, or what happens if set_num is invalid. The tool appears read-only, but this is not confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, and directly communicates the tool's purpose and usage. Front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with one parameter, the description is fairly complete. It explains what it does and when to use it. Lacking mention of output format or potential failure modes, but adequate given low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a good parameter description. The description adds minor context ('parts they already own'), but does not significantly extend beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Find' and the resource 'community alternate builds (MOCs) that can be made from a specific LEGO set's parts.' It also provides a usage scenario, distinguishing it from siblings like search_sets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when someone wants to know what else they can build with parts they already own,' which gives a clear context. It does not mention when not to use it or alternatives, but the sibling list provides that information implicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_part_in_setsA
Find which LEGO sets contain a specific part, optionally in a specific colour. Use this when a builder wants to know where to source a particular brick. Results sorted by quantity (most pieces first).
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Optional colour filter (name or ID) | |
| limit | No | Max results (default 25, max 50) | |
| part_num | Yes | Part number to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description adds behavioral context by stating results are sorted by quantity (most pieces first). However, it does not disclose other behaviors like pagination, error handling, or authentication needs, which would be expected for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences. The purpose is front-loaded in the first sentence, and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description could be more complete by hinting at the output format (e.g., returns set IDs or names). It mentions sorting but lacks detail on response structure. Still, it covers the core functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes all parameters. The description adds that color is optional and the purpose of the tool, but does not provide additional details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: finding LEGO sets containing a specific part, with optional color filter. It distinguishes from siblings like search_parts (which searches parts themselves) by specifying the use case of sourcing a brick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: 'when a builder wants to know where to source a particular brick.' It does not explicitly mention when not to use this tool or alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_minifigA
Get complete details for a specific LEGO minifigure including every set it appears in. Use this when you know a minifig name or fig number and want to find which sets include it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Minifig name for fuzzy search if fig_num not provided | |
| fig_num | No | Exact minifig number (e.g. "fig-000100") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as a read operation (get complete details) and implies no destructive behavior. However, it does not mention authentication, rate limits, or what happens when both parameters are provided. The disclosure is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the main purpose and then usage guidance. Every word serves a purpose, with no fluff or repetition. It is highly efficient for an agent to process.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, the description could specify what fields are included in 'complete details' beyond 'every set it appears in'. The tool is simple but the lack of output format hints may leave the agent uncertain. Still, basic context is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with descriptions for both parameters. The description adds value by noting that 'name' is for fuzzy search if 'fig_num' is not provided, and 'fig_num' is the exact identifier. This clarifies the relationship between parameters and their usage beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves complete details for a specific minifigure including its sets. The verb 'Get' and resource 'complete details for a specific LEGO minifigure' are specific. While it doesn't explicitly differentiate from sibling tools like search_minifigs, the usage context implies it's for a lookup of a known minifig, not general search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when you know a minifig name or fig number and want to find which sets include it.' This provides a clear when-to-use condition. However, it does not mention when not to use or compare with alternatives like search_minifigs, which would strengthen guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_partA
Get complete details for a specific LEGO part including available colours and mold/print variants. Use this when you know a part number (like 3001) and need its specifications, colour availability, or related parts.
| Name | Required | Description | Default |
|---|---|---|---|
| part_num | Yes | Part number to look up (e.g. "3001") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses the tool returns 'complete details' including colours and variants, but lacks specifics on authorization, rate limits, or the structure of the response. It is adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the action and scope, and every sentence contributes value. No superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 parameter, no output schema, no nested objects), the description covers the core functionality: retrieving details including colours and variants. It is mostly complete, though an example response or mention of field names would improve it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (part_num) with schema coverage 100% and a description in the schema. The tool description adds no new meaning beyond the schema's example ('3001'). Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get complete details for a specific LEGO part including available colours and mold/print variants.' It specifies a verb (Get) and resource (part), and implicitly distinguishes from sibling tools like search_parts or browse_themes by focusing on a known part number.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use this when you know a part number (like 3001) and need its specifications, colour availability, or related parts.' This is clear context, though it does not explicitly state when not to use or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_setA
Get complete details for a specific LEGO set including piece inventory, minifigures, and theme. Use this when you know a set number (like 75192-1) or set name and need full information. Returns inventory grouped by part category.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Set name for fuzzy search if set_num not provided | |
| set_num | No | Exact set number (e.g. "75192-1") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It does so by specifying that it returns 'complete details' including inventory grouped by part category. It is a read operation with no side effects, and the description accurately conveys that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence states the purpose and what is returned; the second provides usage context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description must hint at return structure. It does so by listing inventory, minifigures, theme, and noting grouping by part category. While not exhaustive, it covers key elements for a moderate complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains both parameters. The description adds no new parameter semantics beyond echoing the schema (e.g., 'fuzzy search for name' is already in schema). Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets complete details for a LEGO set, listing piece inventory, minifigures, and theme. It distinguishes itself from siblings like search_sets (which finds sets) and get_minifig (which gets a specific minifigure).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use: 'Use this when you know a set number or set name and need full information.' It implies the alternative search_sets if the set number/name is unknown, though not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_minifigsA
Search for LEGO minifigures by name. Use this when looking for specific characters or minifig types. Returns fig numbers and names: use get_minifig for full details and set appearances.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25, max 50) | |
| query | Yes | Free-text search (FTS5) across minifig names |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It mentions the return format (fig numbers and names), which is helpful, but lacks details on pagination, ordering, or error handling. The tool is inherently read-only, so no destructive behavior, but more transparency would improve the score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words: first states purpose, second gives usage guidance and next steps. Information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains that the tool returns fig numbers and names, which is adequate. It also suggests the follow-up tool get_minifig for details. Lacks coverage of pagination defaults and error scenarios, but is fairly complete for a simple search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers both parameters with descriptions (100% coverage). The description adds no additional meaning beyond the schema, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for LEGO minifigures by name, distinguishing it from sibling tools like get_minifig which provide full details. The verb 'search' and specific resource 'LEGO minifigures' are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises when to use this tool ('looking for specific characters or minifig types') and directs to get_minifig for full details, providing clear usage context and an alternative, though it doesn't explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_partsA
Search for LEGO parts by name, category, colour, or material. Use this when looking for specific brick types, plates, tiles, or other elements. Returns part numbers and names: use get_part for full details.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Filter by colour name or ID (finds parts available in this colour) | |
| limit | No | Max results (default 25, max 50) | |
| query | No | Free-text search (FTS5) across part names | |
| category | No | Filter by part category name | |
| material | No | Filter by part material (e.g. "Plastic", "Rubber") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the tool returns part numbers and names, implying a read operation, but does not disclose pagination, authentication, or other behavioral traits. Adequate for a simple search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. First defines purpose, second adds usage guidance and redirect. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return value (part numbers and names) and covers the main search dimensions. It could mention the limit parameter but that is already in the schema. Completion is good for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions. The description echoes the parameters (name, category, colour, material) but adds no additional meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Search for LEGO parts' with specific verbs and resources. Distinguishes from sibling 'get_part' by noting it returns only part numbers and names, deferring to get_part for full details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when looking for specific brick types, plates, tiles, or other elements.' Also provides direction to use get_part for full details. Could be more explicit about alternatives like search_sets, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_setsA
Search for LEGO sets by name, theme, year, or piece count. Use this when looking for sets matching specific criteria. Returns a summary list: use get_set for full details on a specific set.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 25, max 50) | |
| query | No | Free-text search (FTS5) across set names | |
| theme | No | Filter by theme name (includes sub-themes recursively) | |
| year_max | No | Maximum release year (inclusive) | |
| year_min | No | Minimum release year (inclusive) | |
| max_parts | No | Maximum piece count (inclusive) | |
| min_parts | No | Minimum piece count (inclusive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description notes it returns a summary list and mentions FTS5 search, which adds transparency beyond the schema. However, without annotations, it does not cover potential side effects or other behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose and immediately followed by usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema), the description covers purpose, usage, and output type. It could mention limit behavior but schema already does. Adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description summarizes the parameters but adds no new meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for LEGO sets by specific criteria (name, theme, year, piece count) and distinguishes it from siblings like get_set and search_parts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it ('when looking for sets matching specific criteria') and directs users to get_set for full details, but does not mention when not to use or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct function: browsing themes, comparing sets, finding alternate builds, searching/getting parts/minifigs/sets. The search/get pairing is clear and avoids ambiguity.
All tool names follow a consistent verb_noun pattern (e.g., browse_themes, compare_sets, search_parts), with lowercase and underscores throughout.
10 tools is well-scoped for a LEGO data exploration server, covering all common operations without excess or shortfall.
The tool surface covers all essential workflows: browsing themes, searching and retrieving details for sets/parts/minifigs, comparing sets, and finding alternate builds. No obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
LEGO catalog: sets, parts, minifigs, themes, colors via Rebrickable. Free key required.
Provides data for LEGO sets, minifigures, parts and elements. Not affiliated with LEGO® Group.
Read-only access to your Brickway LEGO and alt-brick collection: sets, builds, figures, catalog.
Live TCG card and decklist prices for AI assistants. 22+ games, no account, ready-to-buy links.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables beginner-friendly Python and Pybricks development support through RAG-powered tools that search official documentation, suggest code snippets, and provide version-aware guidance for LEGO robotics programming.
- AlicenseAqualityDmaintenanceLEGO minifigure price lookup and identification. Search 18,000+ minifigs by name, theme, or description. Prices for used and new condition. Powered by brick'em (brickem.io).4211MIT
- AlicenseNot gradedqualityDmaintenanceConnects the 1001 Albums Generator dataset to AI assistants, enabling natural language exploration of your listening journey, taste analysis, and group comparisons.ISC
- AlicenseBqualityCmaintenanceEnables AI assistants to search, understand, and retrieve UI components from ui-layouts.com through tools like search, documentation, metadata, and source code access.416733MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gregario/lego-oracle'
If you have feedback or need assistance with the MCP directory API, please join our Discord server