SheetsData

io.github.octoco-ltdPublished by GitHub account octoco-ltdv1.4.0Updated Oct 27, 2026

Electronic component datasheets for AI agents: pinouts, specs, package info and design checks.

VerifiedStreamable HTTPWeb executableKnowledge & MemoryDeveloper ToolsData & Analytics

Overview

AI-generated overview

Hosted MCP server that lets an assistant search electronic components, read datasheet sections, compare parts, check BOMs and validate design conditions.

What you can do
  • Search parts by number or keyword across JLCPCB, Mouser and DigiKey, or by numeric specs, package and stock
  • Look up part details, compare 2-5 parts side by side and find alternative or second-source parts
  • Read datasheet sections as text and tables, search datasheets semantically, prefetch extraction and poll its status
  • Check a BOM for lifecycle, stock, sourcing and price issues, and check operating conditions against ratings
  • Read values off datasheet figures with vision, and upload a missing PDF into a private library
When to use it
Useful for hardware and electronics work: choosing components, reviewing a bill of materials, checking whether a part suits given operating conditions, or pulling pinouts, register maps and electrical specs out of manufacturer datasheets without handling PDFs.
Requirements
A SheetsData account and either browser OAuth sign-in or an API key in SHEETSDATA_API_KEY (sent as an Authorization Bearer header). Remote endpoint over Streamable HTTP; clients that only start local servers need Node.js 20.18.1 or later for the @sheetsdata/mcp stdio proxy. Network access required.
Before you install
Most tools are billed per call against a prepaid balance or subscription, so agent use spends money; a failed call is not charged. Uploading a datasheet PDF is charged on confirmation. Extracted data comes from automated and AI processing and may be wrong, so verify critical specs against the official datasheet. The API key is a billable credential; keep it out of shared config files.

Installation

In SourceWeft

  1. Open SheetsData in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.octoco-ltd%2Fsheetsdata-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "sheetsdata": {
      "type": "http",
      "url": "https://mcp.sheetsdata.com/mcp"
    }
  }
}

README

SheetsData MCP

[npm] [MCP Badge] [sheetsdata-mcp MCP server]

[sheetsdata-mcp MCP server]

Electronic component datasheets for AI agents — pinouts, specs, package info and design checks from manufacturer PDFs.

SheetsData is a hosted MCP server. Your agent finds parts across JLCPCB, Mouser and DigiKey, reads any section of a part's datasheet as text and tables, compares parts, checks a BOM, and checks your operating conditions against the datasheet's ratings. The agent never sees a PDF, and you don't have to find or paste one.

Server URL:  https://mcp.sheetsdata.com/mcp   (Streamable HTTP)Sign-in:     MCP OAuth (browser), or an API key as "Authorization: Bearer <key>"

This repository holds the install configs, the @sheetsdata/mcp stdio proxy for clients that only start local servers, and the Claude Desktop bundle. The server itself is a hosted service.

Create a free account  ·  Install in your client  ·  Pricing  ·  Docs

What it looks like

"Is the TPS54302 fine with 24 V in and 2.5 A out?"

check_design_fit("TPS54302", input_voltage=24, output_current=2.5)
overall: WARNING  input_voltage  24 V  PASS  within the recommended range 4.5–28 V (14.3% margin)                             datasheet row: "| V I |  | 4.5 | 28 | V |"  unmatched: output_current

A condition the tool can't find a limit for is listed as unmatched and keeps the verdict at WARNING: a clean PASS means every condition was checked against the datasheet.

"Buck converters that take 24 V in and give at least 2 A" (free):

find_parts("buck converter", constraints=[vin_max >= 24 V, iout >= 2 A])
AP63357DV-7       32 V  3.5 A  pass@digikey   stock: DigiKey 49,457   datasheet: readyLM2596S-5.0/NOPB  40 V  3 A    pass@digikey   stock: DigiKey 4,460    datasheet: readyLMR33630ADDAR     36 V  3 A    pass@digikey   stock: JLCPCB 17,768    datasheet: ready
read_datasheet("TPS54302", section="pinout")→ GND (1), SW (2), VIN (3), FB (4), EN (5), BOOT (6)

Tools

Prices are per call and the same on every plan. A call that fails is not charged. Current prices are on sheetsdata.com/pricing.

ToolPriceWhat it does
search_partsFreeFind parts by part number or keyword across JLCPCB, Mouser and DigiKey, merged by MPN, with stock, price and datasheet status from each.
find_partsFreeFind parts that meet numeric specs with units (e.g. Vin ≥ 24 V, Iout ≥ 2 A), package or stock; each constraint reports pass, fail or unknown with its source.
get_part_details3¢A part's key parameters, package, pricing, stock and datasheet status, by MPN or LCSC number.
check_bom3¢Check up to 20 BOM lines for lifecycle, stock against quantity, single-distributor sourcing, datasheet status and stale prices.
prefetch_datasheets1¢Start reading up to 20 datasheets at once, so a whole BOM is ready before you ask about it.
check_extraction_statusFreeReport how far a datasheet that is still being read has got.
read_datasheet10¢Any section of a datasheet as text and tables (summary, pinout, electrical, absolute maximum ratings, package, or any heading), or a search within one datasheet.
search_datasheets2¢Search every datasheet read so far by meaning, e.g. "LDO with PSRR above 70 dB".
compare_parts8¢Compare 2–5 parts side by side: parameters, package, pricing, stock and datasheet summaries.
find_alternative6¢Find drop-in and functional substitutes for a part, ranked by spec, package and stock match.
check_design_fit12¢Check operating conditions against the absolute maximum and recommended ratings: PASS, WARNING or FAIL per condition, with the datasheet row it used.
analyze_image10¢Read values off a datasheet figure: a characteristic graph, package drawing or pin diagram.
request_datasheet_uploadFreeGet a private upload link for a datasheet PDF we couldn't find.
confirm_datasheet_upload50¢Verify the uploaded PDF (hash, valid PDF, MPN on page one) and read it into your organisation's private library. Not charged if the file fails the checks.

Pass manufacturer part numbers (TPS54302, STM32F446RCT6) or LCSC numbers (C2837938), not values like 100nF or reference designators like R1. A datasheet nobody has asked for yet is read on first request (poll check_extraction_status); after that it is cached for everyone.

Prompts

Built-in prompts that walk the agent through common hardware tasks:

PromptWhat it does
component-selectionSelect a component: define requirements, search candidates, compare specs, validate design fit.
bom-reviewReview a bill of materials: look up each part, check stock and lifecycle, flag risks, suggest alternatives.
datasheet-deep-diveSummarise a part and extract its pinout, electrical specs, absolute maximum ratings and application circuit.
design-validationCheck each component against its operating conditions and flag out-of-spec parameters.
second-sourceFind second-source alternatives that match package, specs and availability.
interface-checkCheck electrical and protocol compatibility between two ICs on a shared bus (SPI, I2C, UART): logic levels, timing, pull-ups, level shifters.
firmware-kickstartExtract the register map, initialisation sequence and protocol details of a peripheral IC into a firmware integration guide.
thermal-reviewThermal and derating analysis: absolute maximum and recommended limits, junction temperature from RθJA, SOA derating, exposed-pad needs.

Resources

ResourceWhat it holds
sheetsdata://workflowThe recommended tool order for component selection and design validation.
sheetsdata://tips/datasheet-pitfallsThe eight most common datasheet reading mistakes: absolute maximum vs recommended, typical vs worst case, thermal derating, logic levels, I2C/SPI gotchas, decoupling, exposed pads, lifecycle.
sheetsdata://tips/design-review-checklistA hardware design review checklist (power, signal interfaces, component selection, firmware), pointing at the tool or prompt for each check.

Pricing

  • Free to start. A new account gets $5 of credit, no card needed ($20 more when you add a card). Searching (search_parts, find_parts) is free.
  • Trial is pay as you go from a prepaid balance: 5 new datasheets a day (datasheets already read are unlimited), 30 requests a minute.
  • Pro is $39 a month minimum, with your calls counting toward it: no daily cap on new datasheets, higher rate limits and a private parts library.

Plans, limits and fees: sheetsdata.com/pricing.

Authentication

Use whichever your client supports; both bill the same organisation.

OAuth (recommended)API key
Best forInteractive clientsCI, scripts, headless agents, clients without MCP OAuth
What you doAdd the URL, then sign in to SheetsData in the browser tab that opensCreate a key at sheetsdata.com/dashboard/keys and send Authorization: Bearer <key>
StandardsOAuth 2.1 with PKCE, dynamic client registration (RFC 7591), discovery (RFC 8414, RFC 9728)Bearer token (RFC 6750)
RevokePer app, from the dashboardDelete the key

If a client asks how to register an OAuth client, choose automatic (dynamic) registration; SheetsData doesn't support client ID metadata documents yet.

Install

One-click installs (sign in on first use):

[Install in Cursor] [Install in VS Code] [Install in VS Code Insiders] [Install in Kiro] [Download .mcpb for Claude Desktop]

Every client below was checked against its own documentation on 2026-10-16 (linked in each section). In the snippets, replace YOUR_API_KEY with a key from sheetsdata.com/dashboard/keys.

Claude (claude.ai and Claude Desktop)

Custom connector (OAuth). Open Customize → Connectors, click + Add, then Add custom connector. Name it SheetsData, paste https://mcp.sheetsdata.com/mcp and click Continue. Under OAuth client, choose Register automatically: SheetsData doesn't support the default "Use Claude's published identity" option yet. Click Add, then Connect, and sign in to SheetsData in the browser tab that opens. On Team and Enterprise plans an owner adds it under Organization settings → Connectors → Add → Custom → Web. Free plans can add one custom connector.

Claude Desktop bundle. Download sheetsdata-x.y.z.mcpb from the latest release and drop it onto the Claude Desktop window. Leave the API key field blank to sign in with OAuth, or paste a key.

Use an API key instead

In the custom connector dialog, add the request header Authorization: Bearer YOUR_API_KEY. Or, in Claude Desktop, open Settings → Developer → Edit Config and add the stdio proxy (needs Node.js 20.18.1 or later; claude_desktop_config.json only starts local servers, so it cannot hold the remote URL):

json
{  "mcpServers": {    "sheetsdata": {      "command": "npx",      "args": ["-y", "@sheetsdata/mcp"],      "env": { "SHEETSDATA_API_KEY": "YOUR_API_KEY" }    }  }}

Restart Claude. The proxy sends the key in a header, never on the command line.

Docs: Custom connectors using remote MCP

Claude Code

bash
claude mcp add --transport http sheetsdata https://mcp.sheetsdata.com/mcp

Start Claude Code, run /mcp, choose sheetsdata → Authenticate and sign in (or run claude mcp login sheetsdata from your shell). Add --scope user to have SheetsData in every project.

Use an API key instead
bash
claude mcp add --transport http sheetsdata https://mcp.sheetsdata.com/mcp \  --header "Authorization: Bearer YOUR_API_KEY"

In a project's .mcp.json, give the entry "type": "http"; an entry without a type is treated as a local server.

Docs: Claude Code MCP

ChatGPT

On the web, open chatgpt.com/plugins, click +, then Add custom MCP server. Name it SheetsData, paste https://mcp.sheetsdata.com/mcp and choose OAuth. Accept the warning, choose Create as a plugin, install it and sign in to SheetsData. Your plan and workspace settings decide whether custom servers are available. ChatGPT cannot send an API key.

Docs: Custom MCP servers in ChatGPT

OpenAI Codex

bash
codex mcp add sheetsdata --url https://mcp.sheetsdata.com/mcpcodex mcp login sheetsdata

The second command opens your browser to sign in. The Codex IDE extension and app read the same ~/.codex/config.toml.

Use an API key instead

Add to ~/.codex/config.toml, and set SHEETSDATA_API_KEY in your shell:

toml
[mcp_servers.sheetsdata]url = "https://mcp.sheetsdata.com/mcp"bearer_token_env_var = "SHEETSDATA_API_KEY"

Docs: Codex MCP

Cursor

Click Install in Cursor, or add to ~/.cursor/mcp.json (every project) or .cursor/mcp.json (one project):

json
{  "mcpServers": {    "sheetsdata": {      "url": "https://mcp.sheetsdata.com/mcp"    }  }}

Cursor opens your browser to sign in when it first connects.

Use an API key instead
json
{  "mcpServers": {    "sheetsdata": {      "url": "https://mcp.sheetsdata.com/mcp",      "headers": { "Authorization": "Bearer YOUR_API_KEY" }    }  }}

Docs: Cursor MCP

VS Code (GitHub Copilot)

Click Install in VS Code, run code --add-mcp '{"name":"sheetsdata","type":"http","url":"https://mcp.sheetsdata.com/mcp"}', or add to .vscode/mcp.json (run MCP: Open User Configuration for every workspace):

json
{  "servers": {    "sheetsdata": {      "type": "http",      "url": "https://mcp.sheetsdata.com/mcp"    }  }}

Start the server; VS Code asks you to sign in. Use it from Copilot Chat in agent mode.

Use an API key instead

VS Code asks for the key the first time the server starts and keeps it out of the file:

json
{  "inputs": [    { "type": "promptString", "id": "sheetsdata-key", "description": "SheetsData API key", "password": true }  ],  "servers": {    "sheetsdata": {      "type": "http",      "url": "https://mcp.sheetsdata.com/mcp",      "headers": { "Authorization": "Bearer ${input:sheetsdata-key}" }    }  }}

Docs: VS Code MCP configuration

GitHub Copilot CLI

bash
copilot mcp add --transport http sheetsdata https://mcp.sheetsdata.com/mcp

Or run /mcp add in a session, choose HTTP and paste the URL. Copilot CLI signs in with OAuth when the server asks.

Use an API key instead
bash
copilot mcp add --transport http sheetsdata https://mcp.sheetsdata.com/mcp \  --header "Authorization: Bearer YOUR_API_KEY"

Docs: Adding MCP servers to Copilot CLI

Gemini CLI

bash
gemini mcp add --transport http --scope user sheetsdata https://mcp.sheetsdata.com/mcp

Start Gemini CLI, run /mcp auth sheetsdata and sign in.

Use an API key instead
bash
gemini mcp add --transport http --scope user \  --header "Authorization: Bearer YOUR_API_KEY" \  sheetsdata https://mcp.sheetsdata.com/mcp

Editing ~/.gemini/settings.json by hand? Use "httpUrl" for the address; "url" means the older SSE transport.

Docs: Gemini CLI MCP servers

Google Antigravity

Open the … menu → MCP Servers → Manage MCP Servers → View raw config (~/.gemini/config/mcp_config.json, or .agents/mcp_config.json in a workspace) and add:

json
{  "mcpServers": {    "sheetsdata": {      "serverUrl": "https://mcp.sheetsdata.com/mcp"    }  }}

Antigravity needs serverUrl; it rejects url. Then open Agent settings → Customizations and click Authenticate next to sheetsdata. For an API key, add "headers": { "Authorization": "Bearer YOUR_API_KEY" } to the entry.

Docs: Antigravity MCP

Windsurf (Devin Desktop)

In the Cascade panel, open the … menu → MCPs → Open MCP config file (~/.config/devin/mcp_config.json; %APPDATA%\devin\mcp_config.json on Windows; older Windsurf versions use ~/.codeium/windsurf/mcp_config.json) and add:

json
{  "mcpServers": {    "sheetsdata": {      "serverUrl": "https://mcp.sheetsdata.com/mcp"    }  }}

You sign in to SheetsData in your browser when it connects. For an API key, add "headers": { "Authorization": "Bearer YOUR_API_KEY" } to the entry.

Docs: Cascade MCP

Zed

Add to your Zed settings.json (or Settings → AI → MCP Servers → Add Server → Add Remote Server):

json
{  "context_servers": {    "sheetsdata": {      "url": "https://mcp.sheetsdata.com/mcp"    }  }}

Zed asks you to sign in. For an API key, add "headers": { "Authorization": "Bearer YOUR_API_KEY" } to the entry.

Docs: Zed MCP

Cline

Open MCP Servers → Remote Servers, name it SheetsData, paste https://mcp.sheetsdata.com/mcp, choose Streamable HTTP and click Add Server; complete the browser sign-in when prompted. In Cline CLI, run cline mcp and choose Authorize OAuth for sheetsdata.

Use an API key instead

Open MCP Servers → Configure → Configure MCP Servers (cline_mcp_settings.json) and add the entry below. Without "type", Cline assumes SSE.

json
{  "mcpServers": {    "sheetsdata": {      "type": "streamableHttp",      "url": "https://mcp.sheetsdata.com/mcp",      "headers": { "Authorization": "Bearer YOUR_API_KEY" }    }  }}

Or from Cline CLI: cline mcp add sheetsdata https://mcp.sheetsdata.com/mcp --transport http --header "Authorization: Bearer YOUR_API_KEY" --yes

Docs: Cline MCP

Roo Code

Roo Code's docs don't describe MCP OAuth, so use an API key. Open MCP → Edit Global MCP (mcp_settings.json) or the project's .roo/mcp.json:

json
{  "mcpServers": {    "sheetsdata": {      "type": "streamable-http",      "url": "https://mcp.sheetsdata.com/mcp",      "headers": { "Authorization": "Bearer YOUR_API_KEY" }    }  }}

Docs: Using MCP in Roo Code

Continue

Continue's docs don't describe MCP OAuth, so use an API key. Save as .continue/mcpServers/sheetsdata.yaml in your workspace and add SHEETSDATA_API_KEY to your Continue secrets:

yaml
name: SheetsDataversion: 0.0.1schema: v1mcpServers:  - name: SheetsData    type: streamable-http    url: https://mcp.sheetsdata.com/mcp    requestOptions:      headers:        Authorization: "Bearer ${{ secrets.SHEETSDATA_API_KEY }}"

Docs: Continue MCP

Goose

In Goose Desktop, open Extensions → Add custom extension and choose Streamable HTTP with the URL https://mcp.sheetsdata.com/mcp; in the CLI, run goose configure → Add Extension → Remote Extension (Streamable HTTP). Goose runs the OAuth sign-in when it connects. Or add to ~/.config/goose/config.yaml:

yaml
extensions:  sheetsdata:    name: SheetsData    type: streamable_http    uri: https://mcp.sheetsdata.com/mcp    enabled: true    timeout: 300

For an API key, add headers: { Authorization: "Bearer YOUR_API_KEY" } to the entry.

Docs: Using extensions in Goose

Amp

bash
amp mcp add sheetsdata https://mcp.sheetsdata.com/mcp

Amp opens your browser to sign in.

Use an API key instead

Add to ~/.config/amp/settings.json (or .amp/settings.json in a project, then run amp mcp approve sheetsdata):

json
{  "amp.mcpServers": {    "sheetsdata": {      "url": "https://mcp.sheetsdata.com/mcp",      "headers": { "Authorization": "Bearer YOUR_API_KEY" }    }  }}

Docs: Amp MCP

Kiro

Click Install in Kiro, or add to ~/.kiro/settings/mcp.json (or .kiro/settings/mcp.json in a workspace):

json
{  "mcpServers": {    "sheetsdata": {      "url": "https://mcp.sheetsdata.com/mcp"    }  }}

Kiro asks you to sign in. For an API key, add "headers": { "Authorization": "Bearer YOUR_API_KEY" } to the entry.

Docs: Kiro MCP configuration

JetBrains (Junie and AI Assistant)

Junie (IDE and CLI): add to ~/.junie/mcp/mcp.json (or .junie/mcp/mcp.json in a project), then run /mcp and choose Authorize. For an API key, add "headers": { "Authorization": "Bearer YOUR_API_KEY" }.

json
{  "mcpServers": {    "sheetsdata": {      "url": "https://mcp.sheetsdata.com/mcp"    }  }}

AI Assistant: its docs describe neither OAuth nor headers for remote servers, so run the local proxy. Open Settings → Tools → AI Assistant → Model Context Protocol (MCP) → Add and paste the stdio entry below.

Docs: Junie MCP, AI Assistant MCP

opencode

Add to opencode.json:

json
{  "mcp": {    "sheetsdata": {      "type": "remote",      "url": "https://mcp.sheetsdata.com/mcp",      "enabled": true    }  }}

opencode signs in automatically, or run opencode mcp auth sheetsdata. For an API key, add "headers": { "Authorization": "Bearer YOUR_API_KEY" } to the entry.

Docs: opencode MCP servers

LM Studio

LM Studio's docs don't describe MCP OAuth, so use an API key. Open the Program tab → Install → Edit mcp.json:

json
{  "mcpServers": {    "sheetsdata": {      "url": "https://mcp.sheetsdata.com/mcp",      "headers": { "Authorization": "Bearer YOUR_API_KEY" }    }  }}

Docs: LM Studio MCP

Warp

Open Settings → Agents → MCP servers → + Add and paste:

json
{  "sheetsdata": {    "url": "https://mcp.sheetsdata.com/mcp"  }}

Warp opens your browser to sign in when the server starts. For an API key, add "headers": { "Authorization": "Bearer YOUR_API_KEY" } to the entry.

Docs: Warp MCP

Any client that only starts local servers

The @sheetsdata/mcp package (Node.js 20.18.1 or later) proxies stdio to the hosted server. Without SHEETSDATA_API_KEY it opens your browser to sign in with OAuth and caches the token.

json
{  "mcpServers": {    "sheetsdata": {      "command": "npx",      "args": ["-y", "@sheetsdata/mcp"],      "env": { "SHEETSDATA_API_KEY": "YOUR_API_KEY" }    }  }}

From a shell: SHEETSDATA_API_KEY=YOUR_API_KEY npx -y @sheetsdata/mcp, or npx -y @sheetsdata/mcp --api-key YOUR_API_KEY.

Your own code

Connect with the MCP TypeScript SDK over Streamable HTTP (the SDK can also run the OAuth flow):

ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js";import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const transport = new StreamableHTTPClientTransport(new URL("https://mcp.sheetsdata.com/mcp"), {  requestInit: { headers: { Authorization: "Bearer YOUR_API_KEY" } },});const client = new Client({ name: "my-agent", version: "1.0.0" });await client.connect(transport);
const result = await client.callTool({ name: "search_parts", arguments: { query: "TPS54302" } });

Recommended workflow

1. search_parts / find_parts → candidates by part number, keyword or spec2. get_part_details          → parameters, package, pricing, stock3. read_datasheet            → "summary" first, then the sections you need4. check_design_fit          → your operating conditions against the ratings5. find_alternative          → substitutes, if needed6. compare_parts             → finalists side by side7. check_bom                 → lifecycle, stock and sourcing for the whole BOM

Support

Disclaimer

Data is extracted from publicly available manufacturer datasheets by automated tools, including AI. It may contain errors, omissions or inaccuracies.

SheetsData and Octoco Ltd provide this data on an "as is" basis and make no warranties, express or implied, regarding its accuracy, completeness or fitness for any particular purpose. Always verify critical specifications against the official manufacturer datasheet before making design, purchasing or manufacturing decisions.

By using this service, you acknowledge that:

  • Extracted data may differ from the original manufacturer datasheet
  • SheetsData is not a substitute for reviewing official documentation
  • Octoco Ltd is not liable for any damages, losses, or design failures arising from the use of this data
  • Features, APIs and pricing may change

For terms of use, see sheetsdata.com/terms.

License

MIT (this repository: install configs, the npm proxy and the Claude Desktop bundle). The hosted service is covered by the terms of use.

Source: README.md at commit 5eb962d

Tools

14

find_parts

Find Parts by Spec

Free. Find candidates by function and numeric specs with units, package or stock. Example: query='buck converter', constraints=[{parameter:'vin_max',op:'>=',value:'24 V'}, {parameter:'iout',op:'>=',value:'2 A'}]. Also accepts vds, rds_on, canonical parameter names and text constraints (interface contains I2C). Uses catalogue/JLCPCB parameters and DigiKey parametric filters when configured. Ranks pass/fail/unknown evidence; unknown is unverified. Values retain sources and test conditions. Compact columns/rows by default; verbose returns objects. Does not validate design fit.

Parameterslimitqueryrequiredpackageverbosein_stockconstraints

check_bom

Check BOM

Costs 2¢ per call. Check up to 50 BOM lines for lifecycle, stock against quantity, observed single-distributor sourcing, datasheet status and stale/missing prices. Accepts MPNs or LCSC numbers; duplicate MPN quantities are aggregated. Uses exact identities, catalogue snapshots and available distributor details. Unknown remains unknown; single_source does not prove only one supplier exists. Compact columns/rows by default; verbose returns objects. No extraction.

Parameterslinesrequiredverbose

search_parts

Search Parts

Free. Start here. Searches components by part number or keyword (e.g. 'STM32F103', 'buck converter 3A') across JLCPCB, Mouser and DigiKey in parallel. Results are merged by MPN with indicative price and stock per source and a datasheet_status. For an MPN query, eval boards and dev kits come back separately as related_kits. Parts in your organisation's private library whose MPN, manufacturer, description, type, category or tag matches are appended with source='private_library' and their tags. For spec-based discovery in plain language, use search_datasheets. datasheet_status: 'ready' → read it; 'extracting' / 'queued' / 'pending' / 'resolving' → poll check_extraction_status; 'not_extracted' → prefetch_datasheets; 'no_source' / 'unsupported' → request_datasheet_upload. Full list in the server instructions.

Parameterslimitqueryrequiredproviders

search_datasheets

Search Datasheets

Costs 2¢ per call. Semantic search across every datasheet already extracted (not every part that exists), for spec-based discovery such as 'low-noise LDO with PSRR above 70dB'. Returns matching chunks with part_number and a 0-100 relevance_score. To find a specific part by number, use search_parts.

Parameterslimitqueryrequiredsection_type

prefetch_datasheets

Prefetch Datasheets

Free. Starts background extraction for up to 20 parts at once, e.g. a BOM, so they are ready before you read them. Returns immediately with each part's status. A new datasheet takes about 2.5 minutes at the median and 6.5 minutes at the 90th percentile; a cold GPU start can take about 12 minutes. These are estimates, not deadlines. Poll check_extraction_status (free). A part without a known datasheet comes back 'queued' while we look for its PDF, and reads 'resolving' until the search ends; only then is 'no_source' final: check the part number, or attach the PDF with request_datasheet_upload (org-private). The Free plan has a daily cap on new datasheets ('trial_limit'). MPNs or LCSC numbers only; resolve value-only BOM rows with search_parts first. Example: prefetch_datasheets(['TPS54302', 'ADS1115', 'LP5907']) datasheet_status: 'ready' → read it; 'extracting' / 'queued' / 'pending' / 'resolving' → poll check_extraction_status; 'not_extracted' → prefetch_datasheets; 'no_source' / 'unsupported' → request_datasheet_upload. Full list in the server instructions.

Parameterspart_numbersrequired

check_extraction_status

Check Datasheet Status

Free. Extraction status of 1-20 parts. A part being read reports current_step, elapsed_seconds, estimated_remaining_seconds with a range, and poll_after_seconds; a failed one reports its error; a part that isn't ready may list related_ready part numbers whose datasheet is readable now. A new datasheet takes about 2.5 minutes at the median and 6.5 minutes at the 90th percentile; a cold GPU start can take about 12 minutes. These are estimates, not deadlines. A part whose PDF is still being looked for reads 'resolving'. Not final. Keep polling while the status is 'resolving', 'queued', 'pending' or 'extracting' (after poll_after_seconds); stop at 'ready', 'failed', 'no_source' or 'unsupported'. datasheet_status: 'ready' → read it; 'extracting' / 'queued' / 'pending' / 'resolving' → poll check_extraction_status; 'not_extracted' → prefetch_datasheets; 'no_source' / 'unsupported' → request_datasheet_upload. Full list in the server instructions.

Parameterspart_numbersrequired

get_part_details

Get Part Details

Free. Full details for one part: provider specs, price, stock and lifecycle, the per-MPN structured values (specialized_specs), the cached datasheet summary, and datasheet_status with available_sections when ready. Known lifecycle risks carry lifecycle_warning. Discovered in-document errata_sections and application_circuit_sections include names for read_datasheet (use read_args when supplied); absence does not prove the manufacturer has no separate errata. If any of it is for a different MPN than you asked for (an orderable variant, a base part, a sibling's datasheet), resolved_as and data_quality_warning at the top of the response say so, and prose written for another part is labelled as such at the start of datasheet_summary (family_summary with compact=true): trust specialized_specs for numbers. prefetch_datasheet=true starts extraction at no extra charge. Use after search_parts to drill into one result. datasheet_status: 'ready' → read it; 'extracting' / 'queued' / 'pending' / 'resolving' → poll check_extraction_status; 'not_extracted' → prefetch_datasheets; 'no_source' / 'unsupported' → request_datasheet_upload. Full list in the server instructions.

Parameterscompactverboseproviderpart_numberrequiredprefetch_datasheet

read_datasheet

Read Datasheet

Costs 2¢ per call. Reads a part's datasheet. Section mode (default): start with section='summary' for an overview and available_sections, then ask for any section by name; names come from the datasheet's own headings (e.g. 'register_map', 'i2c_interface'); an unknown name returns the nearest section names and pages. Use max_chars and the returned next_offset to continue a long read. Search mode (mode='search' with a query): semantic search within this datasheet, for targeted questions such as a register bit field or an I2C address. Prefer specific sections to section='all', which can fill your context. The first read of a new part starts extraction and returns status='extracting' (not charged). A new datasheet takes about 2.5 minutes at the median and 6.5 minutes at the 90th percentile; a cold GPU start can take about 12 minutes. These are estimates, not deadlines. For microcontrollers, register-level programming detail usually lives in a separate reference manual, not the datasheet; available_sections shows what is present. datasheet_status: 'ready' → read it; 'extracting' / 'queued' / 'pending' / 'resolving' → poll check_extraction_status; 'not_extracted' → prefetch_datasheets; 'no_source' / 'unsupported' → request_datasheet_upload. Full list in the server instructions.

Parametersmodelimitqueryformatoffsetsectionmax_charspart_numberrequired

compare_parts

Compare Parts

Costs 2¢ per call. Compares 2-5 parts you already know side by side in one call (find candidates with search_parts or find_alternative first). Returns each part's details (per-provider specs, price breaks and links, the cached datasheet summary), a comparison table of parameters × parts built from each part's own provider data, and per-part flags: lifecycle (obsolete, NRND, last-time-buy), stock, datasheet_status, and resolved_as when a lookup landed on a different MPN. compact=true returns only the flags and the table, a much shorter answer; add include_summaries=true for the summaries. Never starts extraction: prefetch_datasheets first if you need summaries. If any input is not a real part number, the whole call is rejected with a 'rejected' map; a valid MPN no provider knows still gets a column, with an error. Example: compare_parts(['TPS54302', 'LM2596', 'MP2359']) datasheet_status: 'ready' → read it; 'extracting' / 'queued' / 'pending' / 'resolving' → poll check_extraction_status; 'not_extracted' → prefetch_datasheets; 'no_source' / 'unsupported' → request_datasheet_upload. Full list in the server instructions.

Parameterscompactpart_numbersrequiredinclude_summaries

check_design_fit

Check Design Fit

Costs 5¢ per call. Checks your operating conditions against the part's absolute maximum ratings and recommended operating conditions; returns PASS / WARNING / FAIL / INSUFFICIENT_DATA per condition and overall. Conditions by part type: converters and LDOs take input_voltage, output_voltage, output_current, ambient_temp, efficiency; MOSFETs take supply_voltage (VDS), output_current (ID), ambient_temp, power_dissipation; logic ICs take supply_voltage (VCC). Verdicts: - PASS: inside the recommended range, or at or below the derated limit. By default input_voltage and supply_voltage must stay at or below 80% of the absolute-maximum rating when no recommended maximum is known (inside a recommended range is a PASS), and output_current at or below 80% of its tightest rating; derating_pct changes this. Zero headroom on a rated current always warns. This is a screening policy; derating_reference cites the reliability guidance and its limits. Each check reports margin_pct against the raw limit, derating_pct and derated_limit. - WARNING: within the limit but above the derated limit, above the recommended maximum but below the absolute maximum, or within 10% of an absolute maximum that isn't derated. - FAIL: outside the range or over the limit. - INSUFFICIENT_DATA: not safely checkable, usually an ambient_temp that could not be turned into a junction-temperature check. It never counts as a PASS. Each check has limit_type (max / min / range / fixed); checks read from the datasheet text (source='llm') carry source_quote, the row the limit came from. A condition with no limit is listed in unmatched and holds the overall verdict at WARNING. If the ratings came from a different MPN than you asked for, resolved_as and data_quality_warning lead the response. Temperature: ambient_temp is never silently compared with a junction limit. When the part's own dissipation is known, the tool estimates Tj = Ta + Pd × RθJA (RθJA from the datasheet's thermal table) and judges Tj against the junct

Parametersefficiencypart_numberrequiredambient_tempderating_pctinput_voltageoutput_currentoutput_voltagesupply_voltagepower_dissipationswitching_frequency

analyze_image

Analyze Datasheet Image

Costs 5¢ per call. Reads a datasheet image with vision AI: a graph, package drawing, pin diagram or schematic that read_datasheet returned. Pass the image_key from that response (the storage path in the image URL), optionally with a question. For exact electrical values prefer read_datasheet's text tables; use this for what only the picture shows (package dimensions, pin assignments, curve trends, approximate values off a curve). Example: analyze_image(part_number='IRFZ44N', image_key='images/abc123.png', question='What is the drain current at Vgs=5V?')

Parametersquestionimage_keyrequiredpart_numberrequired

find_alternative

Find Alternative Parts

Costs 2¢ per call. Finds alternative and second-source parts for an MPN that is out of stock, end of life or too expensive, ranked by match_score with match_notes. Candidates come from provider search and from parts with the same function in our own datasheet index; they must do the same job (an accelerometer is not offered for a 6-axis IMU) and are compared on named electrical specs. Each has a lifecycle, stock and datasheet_status; obsolete and NRND parts rank last. Constraints: 'same_package' (fuzzy: SOT-23 ≡ SOT23, SOIC-8 ≡ SOP-8), 'in_stock', 'jlcpcb'. They are never relaxed silently: a candidate that fails one is left out of alternatives, removed_by_constraints counts what each removed, and when that leaves too few, relaxed_matches lists the best ones with the constraints they failed. When nothing matches at all, the call returns error_type 'not_found' (not charged) with the parts that would match without the constraints, under matches_without_constraints. The part's own family is also searched among datasheets already read (e.g. CH340C for CH340G). A score is similarity, not verified pin or electrical compatibility: check pinout and limits before substituting. Eval boards and modules are excluded. compact=true gives shorter rows (no per-source data or price breaks) and leaves out the reference part's summary unless include_original_summary=true. For a head-to-head of candidates you already have, use compare_parts. Example: find_alternative('TPS54302', constraints=['same_package', 'in_stock']) datasheet_status: 'ready' → read it; 'extracting' / 'queued' / 'pending' / 'resolving' → poll check_extraction_status; 'not_extracted' → prefetch_datasheets; 'no_source' / 'unsupported' → request_datasheet_upload. Full list in the server instructions.

Parameterslimitcompactconstraintspart_numberrequiredinclude_original_summary

request_datasheet_upload

Request Datasheet Upload

Free. The upload fee is charged by confirm_datasheet_upload, after the file is checked. Gives a signed URL to upload a datasheet PDF we don't have: use it when datasheet_status is 'no_source' (once the search has finished: not while it is 'resolving') or 'unsupported'. Three steps: 1. Call this with the MPN, the file's SHA-256 and its byte size; you get upload_url, upload_method ('PUT'), upload_headers and an upload_token. 2. Upload the bytes: `curl -X PUT -H 'Content-Type: application/pdf' --data-binary @file.pdf "$UPLOAD_URL"` (plus any upload_headers). 3. Call confirm_datasheet_upload with the upload_token. Checked at confirm (nothing charged if a check fails): a parseable PDF, the SHA-256 and size you declared, and the MPN or its stem on the first page (scanned image-only PDFs fail this). Max 50 MB; the part's datasheet, not a dev-kit manual, schematic or app note. Uploaded datasheets are private to your organisation. Tokens expire after 15 minutes; request a new one if needed.

Parameterssize_bytesrequiredpart_numberrequiredmanufacturerexpected_sha256required

confirm_datasheet_upload

Confirm Datasheet Upload

Costs 10¢ per call. That is the upload fee, charged only when the file passes its checks. Confirms an upload started with request_datasheet_upload: pass its upload_token. The server re-hashes the uploaded bytes, checks it is a PDF with the MPN on the first page, adds it to your organisation's private library and queues extraction. Success returns document_id, mpn, sha256, file_size_bytes and status='pending'; poll check_extraction_status with the MPN. A new datasheet takes about 2.5 minutes at the median and 6.5 minutes at the 90th percentile; a cold GPU start can take about 12 minutes. These are estimates, not deadlines. Failures (not charged): 'upload_not_found' (no bytes yet; retry the PUT), 'sha256_mismatch' (re-hash and re-request), 'invalid_pdf', 'mpn_not_in_pdf' (wrong file, or scanned image-only), 'token_expired' (older than 15 minutes; start again).

Parametersupload_tokenrequired

Version history

3
  1. v1.4.0LatestOct 16, 2026
  2. v1.3.3Oct 14, 2026
  3. v1.3.2Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts