Skip to main content
Glama

Check a BOM

check_bom

Match every BOM line to an orderable part, price the whole build for N boards (price breaks and MOQ applied), and flag problems: out of stock, not enough stock, uncertain matches, MPN vs distributor number conflicts, no footprint, JLCPCB extended-part fees (with assembly=true). Suggests alternatives for problem lines and similar parts for unmatched ones. A 'Pack size' column (or a pack named by the distributor) orders whole packs. Shows the shipments per distributor with estimated shipping. Becomes the project's current BOM (without project_id: the project you just created, else a new one). Returns a quote_id for place_order and the dashboard_url.

Input Schema

NameRequiredDescriptionDefault
nameNoProject name. Used when no project_id is given: a new project is created with this name.
boardsNoHow many boards to build.
reasonNoOne line on why, shown to the user in the project's activity log.
bom_csvYesThe BOM as CSV/TSV text (KiCad, Altium, EasyEDA/JLCPCB or a spreadsheet export). Needs a header row; columns like Designator, Quantity, MPN, Manufacturer, Value, Footprint, LCSC, Digikey, Mouser are recognised. A Digikey/Mouser number pins that exact listing.
assemblyNoTrue when JLCPCB assembles the boards: its extended-part fees count and no-fee alternatives are suggested. Default: parts only.
project_idNoproject_id from create_project. Links this call to the project and its dashboard.
same_packageNoSuggest only alternatives in the same package (pin-to-pin, no PCB change). False also allows other sizes.
minimize_shipmentsNoMove lines to fewer distributors when the shipping saved is more than the price difference. False = cheapest source per line.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full load and does well: it discloses the state change ('Becomes the project's current BOM') and the side effect of creating a project when project_id is absent, plus the JLCPCB fee implications of assembly=true. It does not cover failure modes, latency for large BOMs, or whether re-checking overwrites a previous BOM.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the core action and every sentence carries distinct information, but the whole thing is a dense run-on with the side-effect and return-value details buried mid-paragraph. Some clauses (the parenthetical about a distributor-named pack) read as internal notes rather than agent-facing guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with an output schema, the description covers what it computes, what it changes, how it links to projects, and what the caller needs back (quote_id, dashboard_url). Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: boards interacts with price breaks and MOQ, assembly gates extended-part fees and no-fee alternatives, and a 'Pack size' column changes ordering to whole packs. That is genuine semantic value, though the pack-size behavior is not tied explicitly to a named parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb chain (match, price, flag) on a specific resource (BOM lines), and enumerates the exact problem classes it detects. It is clearly distinguishable from find_parts, find_alternatives and place_order, which it references by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is strongly implied by the workflow hooks: it returns a quote_id 'for place_order' and becomes the project's current BOM, so an agent knows it sits between create_project and place_order. It never states explicit exclusions (e.g. when to use find_parts instead for a single lookup), which keeps it off a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources