PCB Parts MCP Server
The PCB Parts MCP Server provides 14 tools across 7 data sources for electronic component search, design resources, and ECAD model management — usable directly from AI coding assistants like Claude and Cursor.
Component Search & Details (JLCPCB)
Search 575K+ in-stock parts with natural language query parsing (e.g., "10k 0603 1%" auto-extracts value, package, tolerance) and parametric spec filters (e.g.,
Vgs(th) < 2V,Rds(on), capacitance, voltage)Retrieve full part details by LCSC code or MPN (pricing tiers, datasheet, footprint availability)
Check real-time stock levels via live JLCPCB API
Find spec-compatible alternative parts with filtering by library type, package, and EasyEDA footprint availability
Browse categories, subcategories, and filterable attributes to build precise searches
Get component pinout info (pin names, numbers, electrical types) from EasyEDA symbol data
Cross-Distributor Reference
Look up parts on Mouser and DigiKey for pricing, availability, and full parameters (API keys required)
ECAD Models (SamacSys)
Check availability of KiCad/Eagle/Altium symbols, footprints, and 3D models
Download ready-to-use
.kicad_symand.kicad_modfiles (no API key required)
Sensor Recommendations
Find sensor ICs/modules across 1,500+ sensors covering 56 measurement types, filtered by protocol, platform (Arduino, ESPHome, etc.), or sensing technology
Reference Boards
Search ~285 open-source hardware board schematics by IC, tag, or free text
View full BOM, design rules, dimensions, and IC neighborhoods (decoupling, bias, pin-grouped connections)
PCB Design Rules
Access 41 curated design reference files covering power, protection, interfaces, MCUs, layout, and EMC best practices
No API key required for core functionality (JLCPCB search, sensors, boards, design rules, SamacSys). Mouser and DigiKey keys are optional.
Retrieves component pin information and symbol availability data from EasyEDA to assist with electronic part verification and circuit design.
Provides specialized sensor recommendations, including ICs and modules, specifically tailored for projects utilizing the ESPHome platform.
Enables searching for and downloading schematic symbols and PCB footprints in KiCad format for electronic components through SamacSys integration.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PCB Parts MCP Serverfind an N-channel MOSFET with Vgs(th) < 2V and Rds(on) < 10mΩ"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PCB Parts MCP Server
MCP server for searching electronic components across JLCPCB, Mouser, and DigiKey directly from Claude, Cursor, and other AI coding assistants. 1.5M+ parts with parametric filtering and KiCad footprints. No API key required.
Website: pcbparts.dev
Features
Cross-distributor search: JLCPCB, Mouser, and DigiKey from one MCP server
Parametric search: Filter by electrical specs (Vgs(th) < 2V, Rds(on) < 10mΩ, etc.)
Smart query parsing: "10k 0603 1%" auto-parses into structured filters
Find alternatives: Spec-aware compatibility checking for 120+ component types
KiCad footprints: Download symbols and footprints via SamacSys
Pinout data: Component pin information from EasyEDA symbols
MPN lookup: Find JLCPCB equivalents by manufacturer part number
Sensor recommendation: Find sensor ICs by what they measure, protocol, or platform (1,500+ sensors, 56 measure types)
Reference boards: Search ~285 OSHW board schematics, IC neighborhoods, cross-board consensus for design patterns
Design rules: 41 curated PCB design reference files covering power, protection, interfaces, MCUs, layout, and EMC
14 MCP tools across 7 data sources
No API key required for JLCPCB (Mouser/DigiKey optional)
Related MCP server: KiCad MCP Server
Quick Start
Claude Code
claude mcp add -s user --transport http pcbparts https://pcbparts.dev/mcpOptional — auto-approve all pcbparts tools in ~/.claude/settings.json:
{
"permissions": {
"allow": ["mcp__pcbparts__*"]
}
}Claude Desktop
Add via Settings → Connectors → "Add custom connector", or add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"pcbparts": {
"type": "http",
"url": "https://pcbparts.dev/mcp"
}
}
}Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"pcbparts": {
"type": "http",
"url": "https://pcbparts.dev/mcp"
}
}
}VS Code
Add to .vscode/mcp.json:
{
"servers": {
"pcbparts": {
"type": "http",
"url": "https://pcbparts.dev/mcp"
}
}
}Copilot for Xcode
Add to Extensions config:
{
"mcpServers": {
"pcbparts": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://pcbparts.dev/mcp"]
}
}
}Available Tools
JLCPCB (Local DB + Live API)
Tool | Description |
| Primary search — smart query parsing + parametric spec filters (local DB, 575K+ in-stock parts) |
| Real-time stock verification via live JLCPCB API (use |
| Full details for a specific LCSC part code or MPN lookup |
| Component pin information from EasyEDA symbols |
| Find spec-compatible alternative parts with verification |
| Browse categories, subcategories, and filterable attributes |
Mouser (requires MOUSER_API_KEY)
Tool | Description |
| Cross-reference a specific MPN on Mouser (daily quota applies) |
DigiKey (requires DIGIKEY_CLIENT_ID + DIGIKEY_CLIENT_SECRET)
Tool | Description |
| Cross-reference a specific MPN on DigiKey (daily quota applies) |
Sensor Recommendation (no key required)
Tool | Description |
| Find sensor ICs/modules by measurement need, protocol, or platform (1,500+ sensors, 56 measure types) |
Reference Boards (no key required)
Tool | Description |
| Search ~285 OSHW reference board schematics by IC, tag, org, or free text. Cross-board consensus shows how ICs are typically used. |
| Get full board details — BOM, design rules, dimensions. Use |
Design Rules (no key required)
Tool | Description |
| PCB design rules & best practices (41 curated reference files: power, protection, interfaces, MCUs, layout, EMC) |
SamacSys (no key required)
Tool | Description |
| Search for ECAD models, datasheets, and footprint availability |
| Download KiCad symbols and footprints for any part |
search vs stock_check
Use jlc_search (default) for:
Parametric filtering ("Vgs(th) < 2V", "voltage >= 25V")
Smart query parsing ("10k 0603 1%" auto-detects value, package, tolerance)
Most searches
Use jlc_stock_check only when you need:
Real-time stock verification before ordering
Out-of-stock or low-stock parts (stock < 10)
Full 1.5M catalog (search indexes 575K+ with stock >= 10)
Library Types
Type | Assembly Fee | Description |
| None | Common parts in JLCPCB's standard library |
| None | Recommended parts with good availability |
| $3/unique part | Less common parts |
| None | Filter shortcut: searches basic + preferred combined |
Subcategory Aliases
Natural language names that map to JLCPCB subcategories (220+ aliases supported):
Category | Aliases |
Capacitors |
|
Resistors |
|
Inductors |
|
Diodes |
|
MOSFETs |
|
Regulators |
|
Crystals |
|
Connectors |
|
LEDs |
|
MCUs |
|
Attribute Aliases
Short names for parametric spec filters:
Component | Attributes |
MOSFETs |
|
Diodes |
|
BJTs |
|
Passives |
|
Use jlc_search_help(subcategory=...) to discover all filterable specs for any subcategory.
Package Expansion
Package filters auto-expand to include variants:
"SOT-23"→ includesSOT-23-3,SOT-23-3L,SOT-23(TO-236)"0603"→ includes1608(metric equivalent)Specific packages like
"QFN-24-EP(4x4)"are NOT expanded
find_alternatives
Finds verified-compatible alternatives using spec-aware rules:
Matches primary spec (resistance, capacitance, etc.)
Verifies
must_matchspecs (dielectric, LED color, relay coil voltage)Verifies
same_or_betterspecs (higher voltage OK, lower tolerance OK)Ranks by library type (basic/preferred saves $3), stock, EasyEDA availability
Supported: Resistors, capacitors, inductors, ferrite beads, MOSFETs, BJTs, diodes (all types), LEDs, optocouplers, crystals, oscillators, LDOs, DC-DC converters, voltage references, WiFi/BT/LoRa modules, switches, relays, connectors, and more (120+ subcategories).
Example Queries
"Find logic-level MOSFETs with Vgs(th) < 2V and Id >= 5A"
"100nF 25V capacitors in 0402 or 0603"
"Find alternatives for C82899 in basic library"
"STM32 microcontrollers with 10000+ stock"
"Cross-reference TPS63020 on Mouser and compare with JLCPCB pricing"
"Get KiCad footprint for ESP32-S3-WROOM-1"
"What sensor should I use to measure CO2 on ESPHome?"
"Recommend an IMU sensor with I2C interface"
"Show me boards that use the MCP73831 charger"
"How is the RP2040 typically used? What decoupling and crystal do real boards use?"
"Get the ESP32-S3 neighborhood on the Adafruit Feather"
"What are the design rules for USB-C?"
"Show me LDO design best practices"API Details
Endpoint:
https://pcbparts.dev/mcpTransport: Streamable HTTP (stateless)
Health:
https://pcbparts.dev/healthRate limit: 100 requests/minute per IP
Auth: None required
Self-Hosting
git clone https://github.com/Averyy/pcbparts-mcp
cd pcbparts-mcp
uv venv && uv pip install -e .
.venv/bin/python -m pcbparts_mcp.server # http://localhost:8080/mcpOr with Docker:
docker compose up -d # production (GHCR image)
docker compose -f docker-compose.local.yml up --build # local dev (builds from source)Environment Variables
Variable | Default | Description |
|
| Server port |
|
| Requests per minute per IP |
|
| Comma-separated Host headers accepted by the server (DNS-rebinding protection; localhost is always allowed) |
|
| Daily API request quota per distributor (Mouser/DigiKey) |
| — | Mouser API key (optional, enables Mouser tools) |
| — | DigiKey OAuth2 client ID (optional, enables DigiKey tools) |
| — | DigiKey OAuth2 client secret |
LLM-Readable Documentation
An llms.txt file is available for LLMs and AI agents to quickly understand this service. See llmstxt.org for the spec.
Contributing
Issues and PRs welcome — see CONTRIBUTING.md for development setup, testing, and project conventions.
License
MIT
Links
Available Tools
11 toolscse_get_kicadGet KiCad Symbol & FootprintARead-onlyIdempotent
Get KiCad schematic symbol and PCB footprint for any component.
Downloads from SamacSys ComponentSearchEngine. Works for any manufacturer's part, not limited to JLCPCB. Returns the raw .kicad_sym and .kicad_mod file contents as text that can be read directly or saved to a KiCad project.
WARNING: This tool is slow (up to 45s response time). Only use when you specifically need KiCad symbol/footprint files. For checking if an EasyEDA footprint exists, use jlc_get_part instead.
Args: query: MPN to search for (e.g., "LM358P", "STM32F103CBT6", "ESP32-WROOM-32E"). Finds the best matching part with an available model. part_id: CSE part ID from a previous cse_search result (skips search step). Use this if you already know the exact part.
One of query or part_id must be provided.
Returns: kicad_symbol: Raw .kicad_sym file content (pin names, types, graphical symbol) kicad_footprint: Raw .kicad_mod file content (pad layout, silkscreen, courtyard) part_id: CSE part ID (for future lookups) mfr_part_number, manufacturer, description: Part metadata (when searched by query)
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| part_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: it discloses the slow response time (up to 45s), specifies the source (SamacSys ComponentSearchEngine), and explains the return format (raw file contents as text). Annotations cover read-only, open-world, and idempotent hints, but the description complements these with practical constraints and data source details without contradiction.
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 well-structured and front-loaded, starting with the core purpose, followed by key details (source, scope, output format), warnings, usage guidelines, and parameter explanations. Every sentence adds value, with no redundant information, making it efficient and easy to parse.
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 (external API integration, slow operation, multiple parameters) and the presence of an output schema, the description is complete. It covers purpose, usage context, behavioral traits, parameter semantics, and output details, providing all necessary context for an agent to invoke the tool correctly without needing to rely solely on structured fields.
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?
With 0% schema description coverage, the description fully compensates by explaining both parameters in detail: 'query' is defined as an MPN to search for with examples, and 'part_id' is described as a CSE part ID from previous results that skips search. It also clarifies the relationship ('One of query or part_id must be provided'), adding crucial semantics not in 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 purpose with specific verbs ('Get', 'Downloads') and resources ('KiCad schematic symbol and PCB footprint', 'raw .kicad_sym and .kicad_mod file contents'). It distinguishes itself from siblings by specifying it works for any manufacturer's part via SamacSys ComponentSearchEngine, unlike JLCPCB-focused tools like jlc_get_part.
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 explicit guidance on when to use this tool ('when you specifically need KiCad symbol/footprint files') and when not to ('For checking if an EasyEDA footprint exists, use jlc_get_part instead'). It also mentions performance considerations ('slow, up to 45s response time') and prerequisites ('One of query or part_id must be provided'), offering clear alternatives and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cse_searchCSE Search (ECAD Models)ARead-onlyIdempotent
Search SamacSys ComponentSearchEngine for ECAD model availability and datasheets.
Use this to check if KiCad/Eagle/Altium symbols, footprints, and 3D models exist for a part. No API key required.
WARNING: This tool is slow (up to 45s response time). Only use when you specifically need ECAD model availability or datasheets from ComponentSearchEngine. For general part search, use jlc_search instead. For EasyEDA footprint availability, use jlc_get_part.
Args: query: MPN or keyword (e.g., "LM358P", "STM32F103", "ESP32") limit: Max results to return (1-10, default 5)
Returns: results: List of parts with mfr_part_number, manufacturer, description, datasheet_url, has_model (symbol/footprint available), has_3d (3D model available), model_quality (0-4), cse_part_id, pin_count, image_url total: Total matching results
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it discloses the slow response time ('up to 45s response time'), clarifies that no API key is required, and specifies the return format (list of parts with detailed fields). Annotations cover read-only, open-world, and idempotent hints, but the description enriches this with practical constraints and output details, providing full transparency.
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 front-loaded with purpose and key guidelines, followed by parameter and return details. Every sentence adds value—no redundancy or fluff. It efficiently conveys essential information in a well-structured manner, making it easy to parse and apply.
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 (search with performance constraints) and the presence of annotations and an output schema, the description is complete. It covers purpose, usage, behavioral traits, parameters, and returns, ensuring the agent has all necessary context without needing to rely solely on structured fields.
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?
With 0% schema description coverage, the description compensates by explaining both parameters: 'query' is defined as 'MPN or keyword' with examples, and 'limit' specifies the range and default. It adds meaningful semantics beyond the bare schema, though it could detail format constraints (e.g., query syntax) more fully to reach a perfect score.
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 specific action ('Search SamacSys ComponentSearchEngine') and resource ('ECAD model availability and datasheets'), distinguishing it from siblings by specifying its focus on ECAD models rather than general part search or other functions. It explicitly mentions the target formats (KiCad/Eagle/Altium symbols, footprints, and 3D models), making the purpose highly specific and differentiated.
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 explicit guidance on when to use this tool ('when you specifically need ECAD model availability or datasheets from ComponentSearchEngine') and when not to use it ('For general part search, use jlc_search instead. For EasyEDA footprint availability, use jlc_get_part'). It names specific alternative tools, offering clear context and exclusions for proper tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
digikey_get_partDigiKey Part LookupARead-onlyIdempotent
Cross-reference a specific MPN on DigiKey. Use jlc_search first for general component searches. Daily quota applies.
Args: product_number: DigiKey part number or manufacturer PN (e.g., "296-1395-5-ND" or "LM358P")
Returns: Full product details including all parameters, pricing variations, availability, datasheet
| Name | Required | Description | Default |
|---|---|---|---|
| product_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, idempotent, and open-world behavior. The description adds valuable context beyond annotations by disclosing a 'Daily quota applies' constraint, which is critical for usage planning. No contradictions with annotations are present.
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 highly concise and well-structured: a purpose statement, usage guideline, quota warning, parameter explanation with examples, and return value summary—all in minimal sentences. Every part adds value without 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 the tool's complexity (single parameter, annotations, output schema), the description is complete. It covers purpose, usage guidelines, behavioral constraints (quota), parameter semantics, and return values, with the output schema handling detailed response structure.
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?
With 0% schema description coverage, the description fully compensates by explaining the parameter's purpose ('DigiKey part number or manufacturer PN') and providing concrete examples (e.g., '296-1395-5-ND' or 'LM358P'). This adds essential meaning not present in 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 purpose with specific verbs ('Cross-reference', 'Lookup') and identifies the resource ('specific MPN on DigiKey'). It distinguishes from siblings by mentioning 'jlc_search' as an alternative for general searches, making the scope 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 provides explicit guidance on when to use this tool ('Cross-reference a specific MPN on DigiKey') versus alternatives ('Use jlc_search first for general component searches'), including a named sibling tool. This helps the agent choose appropriately based on the query type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jlc_find_alternativesFind Alternative PartsARead-onlyIdempotent
Find alternative parts similar to a given component.
Searches the same subcategory for parts with better availability. Useful when a part has low stock or you want to compare options.
Args: lcsc: LCSC part code to find alternatives for (e.g., "C2557") min_stock: Minimum stock for alternatives (default: 10) same_package: If True, only return parts with the same package size library_type: Filter alternatives by library type: - "basic": Only basic parts (no assembly fee) - "preferred": Only preferred parts (no assembly fee) - "no_fee": Basic or preferred (no assembly fee) - best for cost optimization - "extended": Only extended parts ($3 assembly fee each) - "all" or None (default): All library types Use "no_fee" to find cheaper alternatives for an extended part. has_easyeda_footprint: Filter by EasyEDA footprint availability: - True: Only return parts WITH EasyEDA footprints (for Atopile/KiCad users) - False: Only return parts WITHOUT footprints - None (default): Don't filter by footprint (fastest) Note: Filtering by footprint is slower as it checks each alternative. limit: Maximum alternatives to return (default: 10, max: 50)
Returns: Original part info (with library_type and has_easyeda_footprint) and list of alternatives sorted by stock. Alternatives include library_type and specs for easy comparison. When filtering by footprint, alternatives also include EasyEDA UUIDs.
| Name | Required | Description | Default |
|---|---|---|---|
| lcsc | Yes | ||
| min_stock | No | ||
| same_package | No | ||
| library_type | No | ||
| has_easyeda_footprint | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond what annotations provide. While annotations already indicate this is a read-only, non-destructive, idempotent operation, the description adds practical details about performance implications ('filtering by footprint is slower'), sorting behavior ('sorted by stock'), and response structure. It doesn't contradict annotations, which already cover the safety profile adequately.
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 well-structured and efficiently organized. It starts with a clear purpose statement, provides usage context, then documents parameters in a structured format with bullet points for enum values, and concludes with return value information. Every sentence adds value without 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 the tool's complexity (6 parameters, 0% schema coverage) and the presence of an output schema, the description provides excellent contextual completeness. It fully documents all parameters, explains behavioral aspects, provides usage guidance, and describes the return structure. The output schema handles the formal return specification, allowing the description to focus on semantic understanding.
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?
With 0% schema description coverage, the description fully compensates by providing comprehensive parameter documentation. It explains each parameter's purpose, provides examples (e.g., 'C2557'), documents defaults, enumerates valid values for library_type and has_easyeda_footprint with clear explanations, and offers practical guidance on parameter usage. This goes well beyond what the bare schema provides.
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 with specific verbs ('find alternative parts similar to a given component') and resources ('searches the same subcategory for parts with better availability'). It distinguishes itself from siblings like 'jlc_get_part' or 'jlc_search' by focusing specifically on finding alternatives rather than retrieving or searching for parts generally.
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 explicit guidance on when to use this tool ('useful when a part has low stock or you want to compare options'). It also offers specific usage advice within parameter descriptions, such as recommending 'no_fee' library type 'to find cheaper alternatives for an extended part' and noting that 'filtering by footprint is slower as it checks each alternative.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jlc_get_partGet Part DetailsARead-onlyIdempotent
Get full details for a specific JLCPCB part.
Args: lcsc: LCSC part code (e.g., "C82899") mpn: Manufacturer part number (e.g., "LM358P", "STM32F103C8T6"). Searches local DB by exact MPN match, then normalized variants, then full-text search. Useful for finding the JLCPCB equivalent of a part from another distributor or reference design.
One of lcsc or mpn must be provided. If both are provided, lcsc takes precedence.
Returns: For lcsc: Full part details including description, all pricing tiers, datasheet URL, component attributes, and EasyEDA footprint availability: - has_easyeda_footprint: True if EasyEDA has footprint/symbol, False if not, null if unknown - easyeda_symbol_uuid: UUID for direct EasyEDA editor link (null if no footprint) - easyeda_footprint_uuid: UUID for footprint (null if no footprint)
For mpn: List of matching JLCPCB parts from the local database (stock >= 10),
sorted by stock. Each result includes lcsc, model (MPN), manufacturer,
package, stock, price, library_type, category, subcategory, and specs.
Note: has_easyeda_footprint=True means `ato create part` will work for Atopile/KiCad users.| Name | Required | Description | Default |
|---|---|---|---|
| lcsc | No | ||
| mpn | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it explains the search logic for mpn ('exact match, then normalized variants, then full-text search'), specifies a stock threshold ('stock >= 10'), and mentions sorting order ('sorted by stock'), which are not captured in 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 well-structured with clear sections (Args, Returns, Note), uses bullet points for readability, and every sentence adds value—no fluff. It efficiently covers parameter rules, return formats, and a practical note, making it easy to scan and understand.
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 (two parameters with conditional logic, different return formats based on input) and the presence of an output schema, the description is complete. It explains parameter requirements, search behavior, return details (including specific fields like has_easyeda_footprint), and even includes a practical note for Atopile/KiCad users, leaving no gaps for agent understanding.
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?
With 0% schema description coverage, the description fully compensates by detailing both parameters: lcsc is defined as 'LCSC part code' with an example, and mpn is defined as 'Manufacturer part number' with examples and a thorough explanation of its search behavior. This adds significant meaning beyond the bare 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 'Get' and resource 'full details for a specific JLCPCB part', making the purpose explicit. It distinguishes from siblings like 'jlc_search' (which likely returns multiple results) and 'jlc_stock_check' (which focuses on stock), establishing a specific lookup function.
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 explicit usage rules: 'One of lcsc or mpn must be provided. If both are provided, lcsc takes precedence.' It also explains when to use mpn ('Useful for finding the JLCPCB equivalent of a part from another distributor or reference design'), guiding users on parameter selection based on their needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jlc_get_pinoutGet Component PinoutARead-onlyIdempotent
Get pin information for a component from EasyEDA symbol data.
Returns raw pin data exactly as EasyEDA provides it, with no interpretation or guessing. Pin names are descriptive (VCC, GND, PA0, etc.) and can be read directly by LLMs and users.
Args: lcsc: LCSC part code (e.g., "C8304"). If provided, fetches UUID automatically. uuid: EasyEDA symbol UUID directly (alternative to lcsc)
One of lcsc or uuid must be provided.
Returns: Pin mapping with: - lcsc: LCSC code (if provided) - model: Part model/name - manufacturer: Manufacturer name - package: Package type - pin_count: Total number of pins - pins: List of pins, each with: - number: Physical pin number (e.g., "1", "2") - name: Pin name exactly as in EasyEDA symbol - electrical: (rare) EasyEDA electrical type if set by symbol creator - easyeda_symbol_uuid: UUID to view symbol at easyeda.com/component/{uuid} - unverified: (only if true) "Symbol not verified by LCSC"
The electrical field is only included when the symbol creator explicitly set it in EasyEDA. Values: "input", "output", "bidirectional", "power". Most symbols don't set this field.
Example output for STM32F103CBT6: {"pin_count": 48, "pins": [ {"number": "1", "name": "VBAT"}, {"number": "2", "name": "PC13-TAMPER-RTC"}, {"number": "10", "name": "PA0_WKUPUSART2_CTSADC12_IN0TIM2_CH1_ETR"}, ... ]}
Example output for MOSFET AO3400: {"pin_count": 3, "pins": [ {"number": "1", "name": "G"}, {"number": "2", "name": "S"}, {"number": "3", "name": "D"} ]}
Example output for RP2040 (has electrical types): {"pin_count": 57, "pins": [ {"number": "1", "name": "1", "electrical": "bidirectional"}, {"number": "2", "name": "2", "electrical": "bidirectional"}, ... ]}
| Name | Required | Description | Default |
|---|---|---|---|
| lcsc | No | ||
| uuid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations. While annotations indicate read-only, non-destructive, and idempotent operations, the description clarifies that data is returned 'exactly as EasyEDA provides it, with no interpretation or guessing,' explains the optional 'electrical' field's rarity and possible values, and mentions the 'unverified' flag. This provides important implementation details not covered by 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 well-structured and appropriately sized. It begins with the core purpose, then explains the return format, details parameters, and provides multiple illustrative examples. Every sentence adds value - there's no redundant information, and the structure helps users quickly understand what the tool does and how to use it.
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 (fetching and returning structured pin data), the description is complete. It explains the purpose, parameters, return format with detailed field descriptions, includes important behavioral notes about data interpretation and optional fields, and provides multiple concrete examples. The presence of an output schema reduces the need to explain return values, but the description still provides valuable context about what to expect.
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?
With 0% schema description coverage, the description fully compensates by explaining both parameters: 'lcsc: LCSC part code (e.g., "C8304"). If provided, fetches UUID automatically.' and 'uuid: EasyEDA symbol UUID directly (alternative to lcsc).' It also clarifies the relationship between them: 'One of lcsc or uuid must be provided.' This provides complete parameter semantics beyond the bare 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 purpose: 'Get pin information for a component from EasyEDA symbol data.' It specifies the exact resource (component pinout) and source (EasyEDA symbol data), and distinguishes itself from siblings like 'jlc_get_part' by focusing specifically on pin information rather than general part data.
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 explicit usage guidance: 'One of lcsc or uuid must be provided.' It also distinguishes this tool from alternatives by specifying it returns 'raw pin data exactly as EasyEDA provides it, with no interpretation or guessing,' which helps users understand when to use this versus other data-fetching tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jlc_searchSearch ComponentsARead-onlyIdempotent
Fast DB search with natural language parsing and parametric filters. In-stock parts only (stock >= 10).
Args: query: Search query - supports natural language like: - "10k resistor 0603 1%" (auto-detects type, value, package, tolerance) - "100nF 25V capacitor" (auto-applies voltage >= 25V filter) - "n-channel mosfet SOT-23" (auto-filters to MOSFETs subcategory) Or use with explicit filters for text search within results.
subcategory_id: Subcategory ID (e.g., 2954 for MOSFETs)
subcategory_name: Subcategory name (e.g., "MOSFETs", "Schottky Diodes")
spec_filters: Parametric filters for precise searches. Each filter is a dict:
- name: Attribute name (Vgs(th), Capacitance, Voltage, etc.)
- op: Operator: "=", ">=", "<=", ">", "<"
- value: Value with units (e.g., "2.5V", "10uF", "20mΩ")
Example: [{"name": "Vgs(th)", "op": "<", "value": "2.5V"}]
min_stock: Minimum stock (default 10). Database only indexes stock >= 10.
library_type: "basic", "preferred", "no_fee", "extended", or None (all)
prefer_no_fee: Sort basic/preferred first (default True)
package: Single package filter (e.g., "0603", "SOT-23")
packages: Multiple packages (OR logic): ["0402", "0603", "0805"]
manufacturer: Manufacturer filter
match_all_terms: AND logic for query terms (default True)
sort_by: "stock" (highest) or "price" (cheapest)
limit: Max results (default 50, max 100)Attribute aliases: MOSFETs: Vgs(th), Vds, Id, Rds(on) Diodes: Vr, If, Vf Passives: Capacitance, Resistance, Inductance, Voltage, Tolerance
Returns: results: Matching components with specs total: Total count (before limit) filters_applied: Applied filters (useful for debugging) parsed: (when using natural language) What was extracted from query
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| subcategory_id | No | ||
| subcategory_name | No | ||
| spec_filters | No | ||
| min_stock | No | ||
| library_type | No | ||
| prefer_no_fee | No | ||
| package | No | ||
| packages | No | ||
| manufacturer | No | ||
| match_all_terms | No | ||
| sort_by | No | stock | |
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: it specifies that the search is limited to 'In-stock parts only (stock >= 10)' and 'Database only indexes stock >= 10', which are not covered by annotations like readOnlyHint. It also details natural language parsing capabilities and result sorting options. However, it does not mention rate limits or authentication needs, which could be relevant for a 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?
The description is well-structured with sections like 'Args:', 'Attribute aliases:', and 'Returns:', making it easy to navigate. It is appropriately sized for a tool with 13 parameters, but some parts (e.g., the detailed 'query' examples) could be slightly condensed without losing clarity. Overall, it is efficient but not maximally concise.
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 complexity (13 parameters, 0% schema coverage) and the presence of an output schema (implied by 'Returns:' section), the description is complete. It thoroughly explains all parameters, provides usage examples, details return values, and adds behavioral context like stock limitations. No gaps are evident for a search tool of this nature.
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?
With 0% schema description coverage, the description fully compensates by providing detailed explanations for all 13 parameters. It includes examples for 'query', clarifies defaults (e.g., 'min_stock: Minimum stock (default 10)'), lists enum values for 'library_type' and 'sort_by', and explains complex structures like 'spec_filters' with attribute aliases. This adds significant meaning beyond the bare 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 purpose as 'Fast DB search with natural language parsing and parametric filters' and specifies 'In-stock parts only (stock >= 10)', which distinguishes it from other search tools. It provides specific details about what it searches (components) and how (natural language parsing, parametric filters), making it distinct from siblings like 'jlc_stock_check' or 'jlc_get_part'.
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 clear context for when to use this tool: for searching components with natural language queries or parametric filters, and it specifies 'In-stock parts only (stock >= 10)'. However, it does not explicitly mention when not to use it or name alternatives among sibling tools (e.g., 'jlc_search_help' or 'jlc_find_alternatives'), which prevents a score of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jlc_search_helpSearch Help & BrowseARead-onlyIdempotent
Browse categories, subcategories, and filterable attributes to help build searches.
Call with no args to list all categories. Pass a category to see its subcategories. Pass a subcategory to discover filterable attributes for use with jlc_search spec_filters.
Args: category: Category name (e.g., "Connectors") or ID (e.g., 13). Lists subcategories. subcategory: Subcategory name (e.g., "MOSFETs") or ID (e.g., 2954). Lists filterable attributes.
If both provided, subcategory takes precedence (more specific).
Returns: No args: List of all categories with id, name, part count, subcategory count category: Subcategories with id, name, part count subcategory: Filterable attributes with name, alias, type, example values
Example: 1. search_help() → see all categories sorted by part count 2. search_help(category="Transistors") → see MOSFETs, BJTs, etc. 3. search_help(subcategory="MOSFETs") → see Vgs(th), Vds, Id, Rds(on) filters 4. jlc_search(query="n-channel", spec_filters=[{"name": "Vgs(th)", "op": "<", "value": "2.5V"}])
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | ||
| subcategory | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable behavioral context: the precedence rule ('If both provided, subcategory takes precedence'), the sorting behavior ('sorted by part count'), and the relationship to jlc_search. No contradictions with 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 well-structured and front-loaded with the core purpose. Each sentence adds value: purpose statement, usage rules, parameter details, return values, and examples. No redundant information, and the example section efficiently demonstrates three key usage patterns.
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 (hierarchical browsing with multiple modes), the description is complete. It covers all parameter combinations, return formats for each case, and ties into the broader workflow with jlc_search. With annotations covering safety and an output schema presumably detailing return structures, no gaps remain.
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?
With 0% schema description coverage, the description fully compensates by explaining both parameters in detail: 'category: Category name (e.g., "Connectors") or ID (e.g., 13). Lists subcategories.' and 'subcategory: Subcategory name (e.g., "MOSFETs") or ID (e.g., 2954). Lists filterable attributes.' It also clarifies precedence and provides concrete examples.
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: 'Browse categories, subcategories, and filterable attributes to help build searches.' It specifies the verb ('browse') and resources ('categories, subcategories, filterable attributes'), and distinguishes it from sibling tools like jlc_search by explaining it's for discovery rather than actual searching.
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 explicit guidance on when to use this tool: 'Call with no args to list all categories. Pass a category to see its subcategories. Pass a subcategory to discover filterable attributes for use with jlc_search spec_filters.' It also references the sibling tool jlc_search for actual searching, creating clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jlc_stock_checkStock Check (Live API)ARead-onlyIdempotent
Real-time stock verification via live JLCPCB API. Use jlc_search first for most queries — it's faster and supports parametric filters.
Only use this when you need:
Real-time stock verification before placing an order
Parts with stock < 10 or out-of-stock parts
Pagination through large result sets
Args: query: Search keywords (e.g., "ESP32", "10uF 25V", "STM32F103") category_id: Category ID from search_help subcategory_id: Subcategory ID from search_help category_name: Category name (e.g., "Resistors", "Capacitors") subcategory_name: Subcategory name (e.g., "Tactile Switches") min_stock: Min stock (default 10). Set 0 for out-of-stock parts library_type: "basic", "preferred", "no_fee", "extended", or "all" package: Package filter (e.g., "0402", "LQFP48") manufacturer: Manufacturer filter packages: Multiple packages (OR filter) manufacturers: Multiple manufacturers (OR filter) sort_by: "quantity" or "price" page: Page number (default 1) limit: Results per page (default 20, max 100)
Returns: Results with pagination. Use get_part(lcsc) for full details.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| category_id | No | ||
| subcategory_id | No | ||
| category_name | No | ||
| subcategory_name | No | ||
| min_stock | No | ||
| library_type | No | ||
| package | No | ||
| manufacturer | No | ||
| packages | No | ||
| manufacturers | No | ||
| sort_by | No | ||
| page | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable context: it's a 'live API' for 'real-time' verification, mentions pagination behavior ('Pagination through large result sets'), and notes it's specifically for low-stock scenarios ('Parts with stock < 10 or out-of-stock parts'). It doesn't contradict annotations and provides operational context beyond them.
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 efficiently structured: purpose and guidelines upfront, followed by categorized parameter explanations and return note. Every sentence adds value—no redundancy. It's appropriately sized for a complex tool with many parameters, using bullet points and clear sections without unnecessary elaboration.
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 (14 parameters, 0% schema coverage), the description provides comprehensive guidance: clear purpose, explicit usage scenarios, detailed parameter semantics, and notes on output ('Results with pagination. Use get_part(lcsc) for full details.'). With annotations covering safety and an output schema presumably detailing returns, the description fills all necessary gaps without over-explaining structured data.
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?
With 0% schema description coverage and 14 parameters, the description carries full burden. It provides detailed semantic explanations for all parameters: examples (e.g., 'ESP32' for query), clarifications (e.g., 'default 10. Set 0 for out-of-stock parts' for min_stock), enumerations (e.g., library_type options), and usage notes (e.g., 'Category ID from search_help'). This fully compensates for the schema's lack of descriptions.
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 performs 'Real-time stock verification via live JLCPCB API' with specific verb ('verification') and resource ('stock'), distinguishing it from siblings like 'jlc_search' (faster with parametric filters) and 'jlc_get_part' (full details). It explicitly differentiates from 'jlc_search' by noting this tool is for real-time verification before orders.
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 explicit when-to-use guidance: 'Use jlc_search first for most queries — it's faster and supports parametric filters. Only use this when you need: - Real-time stock verification before placing an order - Parts with stock < 10 or out-of-stock parts - Pagination through large result sets.' It names the alternative tool ('jlc_search') and specifies three concrete scenarios for this tool's use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouser_get_partMouser Part LookupARead-onlyIdempotent
Cross-reference a specific MPN on Mouser. Use jlc_search first for general component searches. Daily quota applies.
Args: part_number: Mouser part number or manufacturer PN (e.g., "595-LM358P" or "LM358P"). For batch lookup, pipe-delimit up to 10 numbers: "595-LM358P|511-LM358P"
Returns: results: Full part details including all attributes, pricing tiers, availability, datasheet total: Number of parts found
| Name | Required | Description | Default |
|---|---|---|---|
| part_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: the daily quota constraint (rate limiting) and batch lookup capability (pipe-delimited up to 10 numbers), which are not captured in 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 perfectly structured and front-loaded: the first sentence states purpose and usage guidance, the second adds behavioral constraints, then parameter and return sections provide essential details. Every sentence earns its place with zero 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 (cross-referencing with batch capability), the description provides complete context: purpose, usage guidelines, behavioral constraints (quota), parameter semantics, and return value explanation. With an output schema present, the description appropriately focuses on what the tool does rather than 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?
With 0% schema description coverage, the description fully compensates by explaining the part_number parameter's semantics: it accepts 'Mouser part number or manufacturer PN' with examples ('595-LM358P' or 'LM358P') and describes batch lookup syntax ('pipe-delimit up to 10 numbers'). This adds crucial meaning beyond the bare 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 specific action ('Cross-reference a specific MPN on Mouser') and resource ('MPN'), distinguishing it from siblings like 'jlc_search' for general searches and 'digikey_get_part' for other distributors. It precisely defines the tool's scope as a targeted part lookup rather than general component searching.
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 explicit guidance on when to use this tool ('Cross-reference a specific MPN') versus alternatives ('Use jlc_search first for general component searches'), naming a specific sibling tool. It also includes a daily quota constraint that informs usage frequency decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sensor_recommendSensor RecommendARead-onlyIdempotent
Recommend sensor ICs and modules for a measurement need. Returns popular, well-supported options with platform compatibility info.
NOT for buying parts — use jlc_search to find JLCPCB stock and pricing. This answers: "What sensor should I use to measure X on my platform?"
Args: query: Search by name, description, or manufacturer (e.g., "BME280", "waterproof temperature") measure: What to measure. Single or AND multiple: "temperature", ["temperature", "pressure"]. Types: temperature, humidity, pressure, distance, co2, gas, particulate, light, color, uv, acceleration, gyroscope, magnetic_field, current, voltage, motion, rotation, proximity, gesture, radar, sound, flow, touch, weight, ph, dissolved_oxygen, conductivity, orp, ir_temperature, biometric, radiation, gps, co, soil_moisture. Aliases: "imu" → acceleration OR gyroscope OR magnetic_field. "barometric" → pressure. Sub-measures (search directly): voc, pir, ultrasonic, lidar, tof, radar. type: Sensing technology: "tof", "ultrasonic", "radar", "ndir", "electrochemical", "mems", etc. protocol: Interface: "i2c", "spi", "uart", "one_wire", "analog", "digital", "pwm" platform: Filter by support: "arduino", "esphome", "micropython", "circuitpython", "tasmota", "zephyr" limit: Max results (default 15)
Returns: Sensors sorted by platform support (how many platforms have drivers for this sensor). Each result includes: name, manufacturer, measures, type, protocol, voltage, platforms, platform_count, description, urls, datasheet_url (when available).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| measure | No | ||
| type | No | ||
| protocol | No | ||
| platform | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable context about what the tool returns (popular, well-supported options with platform compatibility info) and how results are sorted (by platform support count), which goes beyond what annotations provide.
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 well-structured with clear sections (purpose, exclusion, question answered, parameters, returns) and every sentence adds value. It's appropriately sized for a 6-parameter tool with complex options, though slightly lengthy due to the extensive measure type list.
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 (6 parameters, 0% schema coverage) and the presence of an output schema, the description is complete. It explains all parameters thoroughly, clarifies the tool's purpose and exclusions, and describes the return format and sorting logic, making the output schema sufficient for detailed response structure.
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?
With 0% schema description coverage, the description carries the full burden of explaining parameters. It provides comprehensive details for all 6 parameters: query usage examples, measure types with extensive list and aliases, type examples, protocol options, platform filters, and limit default. This fully compensates for the schema's lack of descriptions.
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 specific verb ('Recommend') and resource ('sensor ICs and modules'), explicitly distinguishing it from sibling tools like jlc_search for buying parts. It answers a specific question pattern: 'What sensor should I use to measure X on my platform?'
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 explicit guidance on when to use this tool (for sensor recommendations based on measurement needs) and when not to use it ('NOT for buying parts — use jlc_search'). It names a specific alternative tool and defines the exact question this tool answers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, such as cse_get_kicad for KiCad files, jlc_search for parametric searches, and sensor_recommend for sensor recommendations. However, there is some overlap between jlc_search and jlc_stock_check, as both can search for parts, though jlc_stock_check is specifically for real-time stock verification. The descriptions help clarify these distinctions, but an agent might occasionally confuse them.
The naming follows a consistent pattern with prefixes like cse_, jlc_, digikey_, mouser_, and sensor_ to group tools by source, and uses verb_noun or noun_verb formats (e.g., cse_get_kicad, jlc_search_help). There are minor deviations, such as jlc_find_alternatives (verb_noun) vs. jlc_stock_check (noun_noun), but overall, the naming is predictable and readable.
With 11 tools, the count is well-scoped for a PCB parts server covering multiple distributors (JLCPCB, DigiKey, Mouser, SamacSys) and specialized functions like sensor recommendations. Each tool serves a clear purpose, such as searching, getting details, finding alternatives, or checking stock, without redundancy or bloat, making it efficient for agents to handle PCB design tasks.
The tool set provides comprehensive coverage for PCB part sourcing and design, including search (jlc_search, cse_search), detailed part retrieval (jlc_get_part, digikey_get_part), cross-referencing (jlc_find_alternatives), stock verification (jlc_stock_check), ECAD model access (cse_get_kicad), pinout data (jlc_get_pinout), and sensor recommendations (sensor_recommend). There are no obvious gaps; agents can perform end-to-end workflows from part discovery to integration in designs.
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
Electronic component datasheets for AI agents — specs, pinouts, package data on demand.
Search real parts with datasheet-provenance specs, check compatibility and compose priced BOMs.
Verified KiCad footprints, symbols & 3D models for AI agents. No signup, CC-BY-4.0, quality-gated.
Electronic component sourcing, BOM management, and PCB design workflows.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables Claude to search and manage electronic components, PCB parts, and manufacturing services through direct access to the Source Parts API. Provides comprehensive product search, pricing, inventory checking, and parametric filtering capabilities for electronics procurement.1001Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables natural language search and exploration of KiCad component symbol libraries with fast full-text search across 20,000+ components including metadata like datasheets, footprints, and descriptions.MIT
- FlicenseNot gradedqualityCmaintenanceEnables searching for electronic components, comparing prices across distributors, checking availability, and retrieving datasheets through the Nexar/Octopart API with specialized tools for resistors, capacitors, inductors, semiconductors, crystals, and connectors.8
- AlicenseAqualityCmaintenanceProvides AI agents with instant, structured access to electronic component datasheets, pinouts, and electrical specifications without requiring PDF uploads. It enables seamless part searching, design validation, and side-by-side component comparisons across major hardware providers.128410MIT
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/Averyy/pcbparts-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server