Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Changed the definition of "check_bom", "check_design_fit", "check_extraction_status" and 4 more
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
Costs 2¢ per call. Check up to2050 BOM lines for lifecycle, stock against quantity, ⟨47 unchanged words⟩
⟨17 unchanged words⟩ "],"type":"object"},"maxItems":2050,"minItems":1,"type":"array"}, ⟨9 unchanged words⟩
⟨409 unchanged words⟩ and returns status='extracting' (not charged). A new datasheetnobodytakeshasaboutread2.5beforeminutesusuallyattakesthe1-3median and 6.5 minutes,5atorthemore90thforpercentile;
⟨33 unchanged words⟩ part numbers whose datasheet is readable now. A new datasheetnobodytakeshasaboutread2.5beforeminutesusuallyattakesthe1-3median and 6.5 minutes,5atorthemore90thforpercentile;
⟨60 unchanged words⟩ and status='pending'; poll check_extraction_status with the MPN. A new datasheetnobodytakeshasaboutread2.5beforeminutesusuallyattakesthe1-3median and 6.5 minutes,5atorthemore90thforpercentile;
⟨20 unchanged words⟩ 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 ⟨91 unchanged words⟩
⟨21 unchanged words⟩ them. Returns immediately with each part's status. A new datasheetnobodytakeshasaboutread2.5beforeminutesusuallyattakesthe1-3median and 6.5 minutes,5atorthemore90thforpercentile;
⟨101 unchanged words⟩ and returns status='extracting' (not charged). A new datasheetnobodytakeshasaboutread2.5beforeminutesusuallyattakesthe1-3median and 6.5 minutes,5atorthemore90thforpercentile;
Authorization not required, issuer https://mcp.sheetsdata.com/
Changed the definition of "analyze_image", "check_bom", "check_design_fit" and 10 more
Analyze an image from a component's datasheet using vision AI. UseCoststhis5¢whenperread_datasheetcall.returnsReads asection containing images and you needdatasheettoimageextractwithdatavisionfrom
Changed the definition of "analyze_image", "check_bom", "check_design_fit" and 11 more
before
—after
Analyze Datasheet Image{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Analyze Datasheet Image"}
before
—Check BOM
Authorization not required, issuer https://mcp.sheetsdata.com/
Added "check_bom" and "find_parts"; changed the definition of "read_datasheet" and "search_datasheets" (12 tools before, 14 now)
⟨48 unchanged words⟩ ). If a section name isn't found,automaticallyreturnsfallsthebacknearest section names and pages. Use max_chars and the returned next_offset tosearchcontinuemode.long reads. **Search mode**: Semantic search within the part's ⟨323 unchanged words⟩
Changed the definition of "find_alternative"
⟨68 unchanged words⟩ on an existing PCB (use constraints=['same_package'], then verify pinout and dimensions). When NOT to use: - You're ⟨54 unchanged words⟩ TQFP64, etc. Exact string match is not required. - Searches by function across manufacturers and compares available named electrical specs. Package data is enriched from provider parameters and cached catalogue/ordering data. Scores indicate similarity, not verified electrical or pin compatibility. - Constraints are never relaxed: unknown stock or package cannot satisfy in_stock or same_package. No verified matches means an empty list. - If provider search returns few candidates, ⟨243 unchanged words⟩
Changed the definition of "check_design_fit"
⟨225 unchanged words⟩ , an absolute-max rating, or a fixed-output setpoint. Checks read from the datasheet text (source='llm') also carry 'source_quote', the datasheet row the limit was taken from. A condition with no limit anywhere is listed in 'unmatched' and keeps the overall verdict at WARNING; a clean PASS means every condition was checked. Temperature honesty: - ambient_temp is NOT silently ⟨253 unchanged words⟩
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Authorization not required, issuer https://mcp.sheetsdata.com/
Certificate changed, valid to 2026-12-12
Authorization not required, issuer https://mcp.sheetsdata.com/
Certificate recorded, valid to 2026-12-10
Authorization not required, issuer https://mcp.sheetsdata.com/
First tool surface recorded: 12 tools (server version 1.0.5)
Showing the latest 26 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
{"properties":{"format":{"default":"markdown","description":"For a named section, json returns tables as columns and rows plus remaining text, preserving source cells (useful for register_map). Paging and page citations still apply.","enum":["markdown","json"],"type":"string"},"limit":{"default":3,"description":"Max ⟨152 unchanged words⟩
⟨20 unchanged words⟩ string"},"question":{"description":"Optionalspecificquestion about the image (e.g. 'What are the ⟨9 unchanged words⟩
$0.03/call.Costs 2¢ per call. Check up to 20 BOM lines for lifecycle ⟨50 unchanged words⟩
Validate whether aCostscomponent5¢willperworkcall.withinChecks your operatingconditions. Compares your design parametersconditions against thedatasheet'spart's absolute maximum ratings and recommended operatingconditions.conditions;ReturnsreturnsPASS/FAIL/WARNINGPASSper/parameterWARNINGwith/marginFAILpercentages. Parameter/mappingINSUFFICIENT_DATA per condition and overall. Conditions bycomponentpart type:-Buck/boostconverters:and LDOs take input_voltage, output_voltage, output_current, ambient_temp,efficiency -efficiency; MOSFETs:supply_voltage=VDS,takeoutput_current=IDsupply_voltage (drainVDS),currentoutput_current (ID), ambient_temp,power_dissipationpower_dissipation; logic ICs take supply_voltage (VCC). Verdicts: -LDOsPASS:input_voltage,insideoutput_voltage,theoutput_currentrecommended range,ambient_temp -orLogicatICs:orsupply_voltage=VCC,belowambient_temp Resultthesemanticsderated(per-parameterlimit.'result'Byfield): -defaultPASS:input_voltagecomfortableandmargin.supply_voltageFormustastayrecommended-operatingatRANGE,oranybelowvalue80%insideof therangeabsolute-maximum(includingratingthewhenexactnoedges)recommended maximum isPASS.knownFor(insideanaabsolute-MAXrecommendedrating,range is a PASS),meansandmoreoutput_currentthanat10%or belowthe80%limit. -ofWARNING:itsfortightestabsolute-maxrating;ratingsderating_pctonly,changesthethis.userZerovalueheadroomisonwithina10%ratedofcurrentthealwayslimitwarns.(butThisnotisover)a—screeningpartpolicy;willderating_referenceworkcitesbutthewithreliabilitythinguidancemarginandforitspart-to-partlimits.variation,Eachtemperaturecheckdrift,reportsandmargin_pcttransients.againstConsiderthederating.raw limit, derating_pct and derated_limit. -FAILWARNING:userwithinvaluetheislimitoutsidebut above theallowedderatedrangelimit,/aboveexceedsthe recommended maximum but below thelimitabsolute—maximum,partoriswithinout10% ofspec andanwillabsolutebemaximumstressedthatorisn'tdamaged.derated. -INSUFFICIENT_DATAFAIL: outside thecheckrangecouldornotoverbethecompletedlimit. -safelyINSUFFICIENT_DATA:—notmostsafelycommonlycheckable, usually an ambient_tempinputthat could not betranslatedturnedtointo a junction-temperaturecheck (see the temperature note below).check.INSUFFICIENT_DATAIt never counts as aPASS: it pulls the overall verdict down to at-least-WARNING.PASS. Each checkalso reportshas'limit_type'limit_type (max / min / range / fixed)so you can see whether it was judged against an operating range, an absolute-max rating, or a fixed-output setpoint.;Checkschecks read from the datasheet text (source='llm')alsocarry'source_quote'source_quote, thedatasheetrow the limitwas takencame from. A condition with no limitanywhereis listed in'unmatched'unmatched andkeepsholds the overall verdict atWARNING;WARNING. If the ratings came from acleandifferentPASSMPNmeansthaneveryyouconditionaskedwasfor,checked.resolved_as and data_quality_warning lead the response. Temperature:-ambient_temp is never silently compared with ajunction-temperaturejunction limit. When the part's own dissipation is known ⟨8 unchanged words⟩ × RθJA (RθJA from the datasheet's thermal table, the highest value it gives) and judges Tj against the junction limits, reported as 'temperature (junction est.)' with the arithmetic in the note.'. Pd by part type: LDO (Vin - ⟨8 unchanged words⟩ × (1/η - 1), which needsefficiency (read it from the datasheet's efficiency curve, e.g. with analyze_image);efficiency; anything else, pass power_dissipation (for a MOSFET, ID² × RDS(on)at your gate drive). Without these the check is INSUFFICIENT_DATA and its note says what to pass.-Current ratings are read at ambient_temp:(a MOSFET's 25 °C drain current is derated towards its maximum junction temperature, or the datasheet's own row for a hotter temperature is used. - 'temperature_basis' (junction / ambient / unknown).tellstemperature_basisyousays which basis was used.Behavior:- Two-tier validation. For parameters in our structured database (Vin, Iout, operating temp, etc.), returns instantly and free of LLM cost. ForStored parametersonly found in the datasheet text, fallsanswerbackinstantly;toanythinganelseLLMis readoffrom theabsolute-max anddatasheet'srecommended-operating-conditionsratingssections.tablesThe(validation_method'validation_method'saysfieldwhich).inAthepartresponsenottellsyetyouextractedwhichstartspathextractionwasandused. -returnsIfstatus='extracting'the(notpartcharged).hasn'tAbeendatasheetextractednobodyyethasandreadthebeforeLLMusuallyfallbacktakesis1-3neededminutes,this call triggers extraction5(usuallyor1-3moreminutes).forReturnsastatus='extracting'largeifonesoor—apollbusycheck_extraction_statusqueue.andTheseretry. WhenareNOTestimates,tonotuse:deadlines.- YouNotneedfor: transient or full thermal analysis—(the junction estimate is a steady-statescreen. - You need SOA (safe-operating-areascreen)curve checks for,MOSFETsMOSFET—SOAusecurves (analyze_imageonthe SOAgraph. - You're checking a passive or mechanicalgraph),partpassives with noabs-max table — there's nothing for this tool to compareratingsagainst.table. Example: check_design_fit('TPS54302', input_voltage=24, output_voltage=5, output_current=2.5, ambient_temp=70, efficiency=0.92)
⟨10 unchanged words⟩ "minimum":-65,"type":"number"},"derating_pct":{"description":"Percent below a rating a PASS must stay, for input_voltage, supply_voltage and output_current. Default 20 (run at no more than 80% of the rating). 0 turns optional derating off; no current headroom still warns.","maximum":50,"minimum":0,"type":"number"},"efficiency":{"description":"Converter efficiency at this ⟨80 unchanged words⟩ ":{"description":"Specific manufacturer part numberto(MPN)validate.or LCSC number (e.g. 'TPS54302DDCR', 'C2837938'). Not a value ('100nF'), description ordescription.reference designator ('R1').","type":"string"},"power_dissipation":{ ⟨38 unchanged words⟩ VCC / VDD (V). For MOSFETs,this is VDS (drain-source voltage). NOT used for power dissipation —VDS; compared against VDS(max) only.","maximum" ⟨24 unchanged words⟩
Check theFree.extractionExtraction status ofone or more1-20 parts.Free. Each entry includes the current extraction step, elapsed seconds, and document ID. Use after prefetch_datasheets or after read_datasheet triggers a new extraction. Recommended polling cadence: every 10-15 seconds.Adatasheet nobodyparthasbeing readbefore usually takes 1-3 minutes (a large one 5 or more), so faster polling wastes calls. Keep polling while the status isreports'resolving'current_step,'queued'elapsed_seconds,'pending' or 'extracting'; stop once itestimated_remaining_secondsiswith'ready',a'failed'range,'no_source' or 'unsupported'. DATASHEET STATUS VALUES: - 'ready' — extractedandindexed; call read_datasheet, search_datasheets, orpoll_after_seconds;analyze_image. -a'extracting'failed/one'in_progress'reports/its'queued'error;/a'pending'part—thatextractionisn'trunningreadyormayscheduled.listPollrelated_readycheck_extraction_statusparteverynumbers10-15swhoseuntildatasheet'ready'isorreadable'failed'.now. A datasheet nobody has read before usually takes 1-3minutes; a large one can takeminutes, 5 ormore. - 'resolving' — we're still lookingmore forthe datasheet's PDF (distributors, thenaweb search; under a minute a part,largelongeroneforor abig batch). Notbusyfinal:queue.keepThesepollingarecheck_extraction_status. -estimates,'not_extracted'not—deadlines.knownA partbut datasheet hasn't been fetched yet. Trigger it via prefetch_datasheets (cheapest) or by calling read_datasheet (auto-triggers on firstwhoseread). -PDF'no_source'is—stillthebeingsearchlooked fora public datasheet has finished andreadsfound'resolving'.noneNotforfinal.thisKeepMPN.pollingCheckwhile thepartstatusnumberis(search_parts)'resolving',or retry prefetch_datasheets later. Otherwise upload the PDF via'queued',request_datasheet_upload'pending'+orconfirm_datasheet_upload'extracting' (see thoseaftertoolspoll_after_seconds). Org-uploaded datasheets are private to the org. - 'unsupported' — PDF exists but can't be extracted;(scannedstopimage-only,atencrypted'ready',or corrupted). Upload a clean text-based PDF via request_datasheet_upload to override. -'failed'/ 'error' — extraction errored. The response includes the error reason. Retry via,prefetch_datasheets'no_source' orescalate to'unsupported'.support. -datasheet_status:'rejected''ready'—→inputreadwasn'tit;a'extracting'real/MPN'queued'(bare/value'pending'like/'100nF','resolving'description,→orpollreferencecheck_extraction_status;designator).'not_extracted'Fix→theprefetch_datasheets;input'no_source'and/re-call. -'unsupported''deduplicated'→—request_datasheet_upload.anotherFullpartlist in thefamily already has this datasheet; same content is returned under the primaryserverMPN.instructions.
{"properties":{"part_numbers":{"description":"1-20MPNsparts.toSpecificcheck.manufacturerMustpartbenumberspecific(MPN)manufacturerorpartLCSCnumbersnumber (e.g. 'TPS54302DDCR',not'C2837938').valuesNot a value ('100nF'), description ordescriptions.reference designator ('R1').","items":{"type":"string"}, ⟨10 unchanged words⟩
CompareCosts 2¢ per call. Compares 2-5electronicpartscomponentsyou already know side by side inaonesinglecallcall.(findForcandidateseachwithpart,search_partsreturnsormergedfind_alternativeproviderfirst).dataReturns each part's details (pricing,per-providerstockspecs,structuredpriceparameters,breakspackage)andpluslinks, the cached datasheet summaryif one exists, plus datasheet_status ('ready', 'extracting'),or 'not_extracted'). Useathiscomparisoninsteadtable ofcalling get_part_detailsparametersin×apartsloopbuilt—fromiteachfanspart'soutown providerqueries in paralleldata, andmerges by MPN.per-partForflags:*discovering*lifecyclecandidates(obsolete,use search_partsNRND,orlast-time-buy),find_alternativestock,first;datasheet_status,compare_partsandassumesresolved_asyouwhenalreadyaknowlookupwhichlandedMPNsonyouawantdifferenttoMPN.compare. Behavior: -compact=trueUsesreturns onlycached datasheet summaries — doesthenotflagstriggerandextraction.theCalltable,prefetch_datasheetsafirstmuchifshorteryouanswer;needaddsummariesinclude_summaries=true forpartsthethatsummaries.haven'tNeverbeenstartsextractedextraction:yet. -prefetch_datasheetsValidatesfirsteveryifMPNyouupfront.need summaries. If*any*any input is not a real part number(value,description, reference designator),the whole call is rejected with a 'rejected'map listing the offenders — other parts are not compared. Filter your list before calling. - Ifmap; a valid MPNis not found at anyno provider,that partknows stillappears ingetsthearesponsecolumn, with an'error' field; the other parts are compared normally. IMPORTANT — part_numbers must be specific manufacturer part numbers (e.g. 'TPS54302DDCR', 'STM32F446RCT6') or LCSC numbers (e.g. 'C2837938'). Do NOT pass component values ('100nF', '10K'), descriptions ('buck converter'), or reference designators ('U3',error.'R1').Example: compare_parts(['TPS54302', 'LM2596', 'MP2359'])DATASHEETSTATUS VALUESdatasheet_status:-'ready'— extracted and indexed; call read_datasheet, search_datasheets,→orreadanalyze_image. -it; 'extracting' /'in_progress' /'queued' / 'pending'— extraction running or scheduled. Poll check_extraction_status every 10-15s until 'ready' or 'failed'. A datasheet nobody has read before usually takes 1-3 minutes; a large one can take 5 or more. -/ 'resolving'— we're still looking for the datasheet's PDF (distributors, then a web search; under a minute a part, longer for a big batch). Not final: keep→pollingpollcheck_extraction_status. -check_extraction_status; 'not_extracted'— known part but datasheet hasn't been fetched yet. Trigger it via prefetch_datasheets (cheapest) or by calling read_datasheet (auto-triggers on first→read). -prefetch_datasheets; 'no_source'— the search for a public datasheet has finished and found none for this MPN. Check the part number (search_parts), or retry prefetch_datasheets later. Otherwise upload the PDF via request_datasheet_upload + confirm_datasheet_upload (see those tools). Org-uploaded datasheets are private to the org. - 'unsupported' — PDF exists but can't be extracted (scanned image-only, encrypted, or corrupted). Upload a clean text-based PDF via request_datasheet_upload to override. - 'failed'/'error' — extraction errored. The response includes the error reason. Retry via prefetch_datasheets or escalate to support. - 'rejected' — input wasn't a real MPN (bare value like '100nF', description, or reference designator). Fix the input and re-call. -'unsupported''deduplicated'→—request_datasheet_upload.anotherFullpartlist in thefamily already has this datasheet; same content is returned under the primaryserverMPN.instructions.
{"properties":{"part_numberscompact":{"default":false,"description":"2-5Returnspecificthemanufacturershorterpartanswer:numbersper-partorflagsLCSCandnumbersthetocomparisoncomparetable,head-to-head.withoutMustper-providerbedetail
ConfirmCostsa10¢datasheetper call. That is the uploadstartedfee,viachargedrequest_datasheet_upload.onlyPasswhen theupload_tokenfileyoupassesgotitsbackchecks.fromConfirmstheanrequestuploadstep.startedThewithserverrequest_datasheet_upload:downloadspasstheitsuploadedupload_token.bytes,The server re-hashestotheverifyuploadedintegritybytes,validateschecksthatitit'sis arealPDF with the MPN on the first page,creates the private Document + Componentaddsrecords,itchargestotheyouruploadorganisation'sfeeprivate(50¢),library and queues extraction.Successresponse:returns document_id, mpn, sha256, file_size_bytes,status='pending'.andPollstatus='pending'; poll check_extraction_status with theMPNMPN.toAwaitdatasheetfornobodyextractionhastoreadfinishbefore(usually takes 1-3 minutes). Failure modes: - 'upload_not_found' — no bytes at the upload URL yet. Retry,your5curlorupload. -more'sha256_mismatch'for—auploadedlargebytesonehashordiffersafrombusyexpected_sha256.queue.Re-computeThesethearehashestimates,andnotre-request.deadlines.- 'invalid_pdf' —Failuresbytes(notaren'tcharged):a'upload_not_found'parseable(noPDF.bytesNoyet;charge. -retry'mpn_not_in_pdf'the—PUT),MPN'sha256_mismatch' (orre-hashitsandstemre-request)isn't on the first page. Either you,uploaded'invalid_pdf',the'mpn_not_in_pdf' (wrong file, orit's ascanned image-onlyPDF. No charge. -), 'token_expired'— upload token is(older than 15minutes. Restartminutes;viastartrequest_datasheet_upload.again).
Find alternative /Costssecond-source2¢componentsperforcall.aFindsgivenalternativeMPN.andReturnssecond-source partsranked by how closely their specs,forpackage,anandMPNcategorythatmatchistheoutreferenceofpartstock,with a match_score and match_notes explaining each match. When to use: - Original part is outend ofstocklife orend-of-life. - Youtooneedexpensive,arankedcheaperbyequivalentmatch_score withsimilar specs. -match_notes.YouCandidatesneedcomeafromsecondprovidersourcesearchforandsupply-chainfromresilience. -partsYouwithneedtheasamedrop-infunctionreplacementinonouranownexistingdatasheetPCBindex;(usetheyconstraints=['same_package'],mustthendoverifythepinoutsameandjobdimensions). When(anNOTaccelerometertoisuse: -notYou'reofferedbrowsingfor acategory from scratch — use search_parts. - You already have6-axiscandidatesIMU) andwantareacomparedhead-to-headoncomparisonnamed—electricalusespecs.compare_partsEachdirectly. Behavior: -hasEvalaboardslifecycle,dev kits,stock andbreakout modules are filtereddatasheet_status;outobsolete—andresultsNRNDarepartsIC-levelrankalternativeslast.only. -Constraints: 'same_package'uses(fuzzymatching, so: SOT-23 ≡ SOT23, SOIC-8 ≡ SOP-8),LQFP64 ≡ TQFP64'in_stock',etc. Exact string match is not required. - Searches by function'jlcpcb'.acrossTheymanufacturersareandnevercomparesrelaxedavailablesilently:namedaelectricalcandidatespecs.thatPackagefailsdataone isenriched from providerleftparametersoutandofcachedalternatives,catalogue/orderingremoved_by_constraintsdata.countsScoreswhatindicateeachsimilarityremoved,not verified electrical orandpinwhencompatibility. -thatConstraintsleavesaretooneverfew,relaxed:relaxed_matchesunknownlistsstocktheorbestpackageonescannotwithsatisfythein_stockconstraintsortheysame_package.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.-Also searches theThe part's own familyinisdatasheetsalsoSheetsDatasearchedhasamong datasheets already read (e.g. CH340C for CH340G).-If provider searchAreturnsscorefewiscandidatessimilarity,the tool falls back to semantic search across extracted datasheets to surface niche alternatives. - The response includes a 'hint' field pointing to compare_parts / read_datasheet for drilling into promising alternatives. Example:notfind_alternative('TPS54302',verifiedconstraints=['same_package',pin'in_stock']) DATASHEETorSTATUSelectricalVALUEScompatibility:-'ready' —checkextractedpinout andindexed; call read_datasheet, search_datasheets, or analyze_image. - 'extracting' / 'in_progress' / 'queued' / 'pending' — extraction running or scheduled. Poll check_extraction_status every 10-15s until 'ready' or 'failed'. A datasheet nobody has readlimits beforeusually takes 1-3 minutes; a large one can take 5 orsubstituting.more. -Eval'resolving'boards—andwe'remodulesstillarelookingexcluded.forcompact=truethegivesdatasheet'sshorterdistributors, then a web search; under a minute a part, longer for a big batch). Not final: keep polling check_extraction_status. - 'not_extracted' — known part but datasheet hasn't been fetched yet. Trigger it vianoprefetch_datasheetsper-source(cheapest)data orby calling read_datasheet (auto-triggers on firstpricereadbreaks). -'no_source' — the search for a public datasheet has finishedandfound none for this MPN. Check the part number (search_parts), or retry prefetch_datasheets later. Otherwiseleavesuploadout thePDF via request_datasheet_upload + confirm_datasheet_upload (see those tools).referenceOrg-uploadedpart'sdatasheetssummaryareunlessprivateinclude_original_summary=true.toFortheaorg. -head-to-head'unsupported'of—candidatesexistsalreadybuthave,can'tusebecompare_parts.extractedExample: find_alternative(scanned image-only'TPS54302',encryptedconstraints=['same_package',or corrupted'in_stock']).Upload a clean text-based PDFdatasheet_status:via'ready'request_datasheet_upload→toreadoverride. -it;'failed''extracting' /'error' — extraction errored. The response includes the error reason. Retry via prefetch_datasheets or escalate to support. - 'rejected' — input wasn't a real MPN'queued'(bare/value'pending'like/'100nF','resolving'description,→orpollreferencecheck_extraction_status;designator).'not_extracted'Fix→theprefetch_datasheets;input'no_source'and/re-call. -'unsupported''deduplicated'→—request_datasheet_upload.anotherFullpartlist in thefamily already has this datasheet; same content is returned under the primaryserverMPN.instructions.
{"properties":{"compact":{"default":false,"description":"Return the shorter answer: one short row per candidate (identity, lifecycle, stock, cheapest price, providers, match notes) and no reference-part summary. Default false: the full answer.","type":"boolean"},"constraints":{"default":[],"description":"Optionalfilters to narrow alternatives.filters. 'in_stock' =only parts withknown non-zero stock atanysome provider. 'same_package' =packagesame footprintmust match(fuzzy). 'jlcpcb' =must be availableorderable at JLCPCB (useful for JLCPCB-assembled boards —alsorestrictslimits the provider search to JLCPCB).","items ⟨5 unchanged words⟩ :"string"},"type":"array"},"include_original_summary":{"default":false,"description":"With compact=true, also return the reference part's cached datasheet summary (about 2-3k characters). The full answer always has it.","type":"boolean"},"limit":{"default":5,"description":"Max ⟨11 unchanged words⟩ :"integer"},"part_number":{"description":"TheSpecific manufacturer part number (
GetFree.fullFull details fora specific electronic component by manufacturerone partnumber (MPN) or LCSC number.:Returnsprovider specs,pricingprice,andstockfrom all configured providers, plus the cached datasheet summary if available. Includes datasheet_statusandavailable_sections when ready. Set prefetch_datasheet=true to trigger background extraction — no extra charge. Use after search_parts to drill into a specific result. The part_number must be a specific manufacturer part number (e.g. 'TPS54302DDCR'lifecycle,'STM32F446RCT6') or LCSC number (e.g. 'C2837938'). Do NOT passthebareper-MPNcomponentstructured values ('100nF', '10K'), descriptions ('buck converter'specialized_specs),orthereferencecacheddesignatorsdatasheet('R1'summary,'U3'). DATASHEET STATUS VALUES: - 'ready' — extractedandindexed; call read_datasheet, search_datasheets, or analyze_image. - 'extracting' / 'in_progress' / 'queued' / 'pending' — extraction running or scheduled. Poll check_extraction_status every 10-15s until 'ready' or 'failed'.datasheet_statusAwithdatasheetavailable_sectionsnobodywhenhasready.readIfbeforeanyusuallyoftakesit1-3isminutes;for alarge one can take 5 or more. - 'resolving'different—MPNwe'rethanstillyoulookingasked forthe datasheet's PDF(distributors, then a webansearch;orderableundervariant, aminute abase part,longer forabig batch). Not final: keep polling check_extraction_status. - 'not_extracted' — known part butsibling's datasheethasn't been fetched yet. Trigger it via prefetch_datasheets (cheapest)or by calling read_datasheet (auto-triggers on,firstresolved_asread). -and'no_source'data_quality_warning—at thesearch fortopaofpublicthedatasheetresponsehassayfinishedso, andfoundprosenonewritten forthis MPN. Check theanother partnumber (search_parts), or retry prefetch_datasheets later. Otherwise upload the PDF via request_datasheet_upload + confirm_datasheet_upload (see those tools). Org-uploadedisdatasheetslabelledareasprivatesuchtoat theorg. - 'unsupported' — PDF exists but can'tstartbeofextracteddatasheet_summary (scanned image-only, encrypted,family_summaryorwithcorruptedcompact=true). Upload a clean text-based PDF via request_datasheet_upload:totrustoverride. -specialized_specs'failed'for/numbers.'error'prefetch_datasheet=true—starts extractionerrored. The response includes the erroratreason.noRetryextraviacharge.prefetch_datasheetsUseorafterescalatesearch_parts tosupport. - 'rejected' — input wasn't a real MPNdrill(bareintovalueonelikeresult.'100nF',datasheet_status:description,'ready'or→referencereaddesignator).it;Fix'extracting'the/input'queued'and/re-call. -'pending''deduplicated'/—'resolving'another→partpollincheck_extraction_status;the'not_extracted'family→alreadyprefetch_datasheets;has'no_source'this/datasheet;'unsupported'same→contentrequest_datasheet_upload.isFullreturnedlistunderin theprimaryserverMPN.instructions.
{"properties":{"compact":{"default":false,"description":"Return the shorter answer: prose written for another part comes back as family_summary instead of a labelled datasheet_summary. Default false: the full answer.","type":"boolean"},"part_number":{"description":"Specific manufacturer part number (MPN) or LCSC number (e.g. 'TPS54302DDCR', 'C2837938'). Not a value ('100nF'), description ordescription.reference designator ('R1').","type":"string"},"prefetch_datasheet":{"default":false,"description":"TriggerStart background datasheet extraction (no extra charge).Default false.","type":"boolean"},"provider":{"default":"all","description":"Whichproviderprovider'stosourcesquery:to'all'show (default),'jlcpcb', 'mouser', or 'digikey''all').","enum":["all","jlcpcb","mouser","digikey"],"type":"string"},"verbose":{"default":false,"description":"Return every available_sections entry. By default the first 50 are returned, plus a '_truncated' entry saying how many more exist.","type":"boolean"}},"required":["part_number"],"type":"object"}
TriggerFree.backgroundStartsdatasheetbackground extraction formultiple parts at once (up to 20).Non-blocking — returns immediately with the status of each part. Use this to warm up datasheets for a BOM before calling read_datasheet. Example: prefetch_datasheets(['TPS54302', 'ADS1115', 'LP5907']) A part without a known datasheet comes back 'queued' while we look for its PDF; check_extraction_status shows it as 'resolving' until the search ends. Only then is 'no_source' final: check the part number, or use request_datasheet_upload + confirm_datasheet_upload to attach your own PDF (org-private). Part numbers must be specific MPNsparts(e.g.at'STM32F446RCT6'once,'TPS54302DDCR') or LCSC numbers (e.g.'C2837938'). Do NOT pass bare values ('100nF', '10K'), descriptions, BOM reference designators, test points, or board/module names — see the server instructions for the full rule set. Whena BOMhas values-only rows,use search_parts first to resolve each to an MPN. DATASHEET STATUS VALUES: - 'ready' — extracted and indexed; call read_datasheet, search_datasheets, or analyze_image. - 'extracting' / 'in_progress' / 'queued' / 'pending'so—theyextractionarerunningreadyorbeforescheduled.youPollreadcheck_extraction_statusthem.everyReturns10-15simmediatelyuntilwith'ready'eachorpart's'failed'.status. A datasheet nobody has read before usually takes 1-3minutes; a large one can takeminutes, 5 ormore. - 'resolving' — we're still lookingmore forthe datasheet'sa(distributors,onethenor aweb search; underbusyaqueue.minuteTheseaarepartestimates,longernotfordeadlines.aPollbigcheck_extraction_statusbatch(free).Not final: keep pollingAcheck_extraction_status. -part'not_extracted'without—a knownpart butdatasheethasn't been fetched yet. Trigger it viacomesprefetch_datasheetsback(cheapest)'queued'orwhilebywecallinglookread_datasheetfor(auto-triggersitsonPDF,firstandread). -reads'no_source''resolving'—until the searchfor a public datasheet has finished andends;foundonlynonethenforisthis'no_source'MPN.final:Checkcheck the part number(search_parts), orretry prefetch_datasheets later. Otherwise uploadattach the PDFviawith request_datasheet_upload+ confirm_datasheet_upload(see those toolsorg-private).Org-uploaded datasheets are private to theTheorg. -Free'unsupported'plan—hasexistsdailybutcapcan'tonbenewextracteddatasheets (scanned image-only, encrypted, or corrupted'trial_limit').Upload a clean text-based PDF via request_datasheet_upload to override. - 'failed' /MPNs'error'or—LCSCextractionnumberserrored.only;Theresolveresponsevalue-onlyincludesBOMtherowserrorwithreason.search_partsRetryfirst.viaExample: prefetch_datasheetsor escalate to support. - 'rejected' — input wasn't a real MPN(bare['TPS54302',value'ADS1115',like'LP5907'])'100nF',datasheet_status:description,'ready'or→referencereaddesignator).it;Fix'extracting'the/input'queued'and/re-call. -'pending''deduplicated'/—'resolving'another→partpollincheck_extraction_status;the'not_extracted'family→alreadyprefetch_datasheets;has'no_source'this/datasheet;'unsupported'same→contentrequest_datasheet_upload.isFullreturnedlistunderin theprimaryserverMPN.instructions.
{"properties":{"part_numbers":{"description":"List1-20ofparts.MPNsSpecifictomanufacturerprefetchpart(maxnumber20(MPN).Must beorspecificLCSCmanufacturernumberpart(e.g.numbers'TPS54302DDCR',not'C2837938').valuesNot
ReadCostsfrom2¢ per call. Reads acomponent'spart's datasheet.Two modes: **SectionSectionmode**mode (default):Returns a named section. Startstart with section='summary'to getfor an overview anda list ofavailable_sections,available_sections.thenThenaskrequestforspecificanysectionssection byname. Sectionname; namesare dynamic — any headingcomeinfrom theactualdatasheet'sdatasheetownworksheadings (e.g. 'register_map', 'i2c_interface', 'power_management'). If;aansectionunknown nameisn't found,returns the nearest section names and pages. Use max_chars and the returned next_offset to continuelong reads. **Search mode**: Semantic search within the part's datasheet. Best for targeted questions (register bit fields, I2C config, specific specs). Use when you need to find specific information rather thanawhole section. First call for a newlongpartread.triggersSearchextractionmode (usually 1-3mode='search'minutes;withpollacheck_extraction_statusquery). Subsequent calls are cached. **Datasheet vs Reference Manual**:Manufacturer datasheets cover high-level specs,semanticpinout,searchabsolutewithinmaximumthisratingsdatasheet,andforpackagetargetedinfo.questionsForsuchmicrocontrollersas(STM32,anRF52,registerRP2040),bitregister-levelfieldprogrammingordetailsan(I2CCR1/CR2, DMA config, interrupt bits) areaddress.inPreferaspecificseparatesectionsReferencetoManualsection='all',not the datasheet. The summary's available_sectionswhichwillcanshowfillwhat'syouractuallycontext.present.Thepart_numberfirstmustreadbeof aspecific manufacturernew partnumber (e.g. 'TPS54302',starts'STM32F446RCT6')extractionorandLCSCreturnsnumberstatus='extracting' (e.g.not'C2837938'charged).Do NOT pass bare component values ('100nF', '10K'), descriptions, or reference designators. DATASHEET STATUS VALUES: - 'ready' — extracted and indexed; call read_datasheet, search_datasheets, or analyze_image. - 'extracting' / 'in_progress' / 'queued' / 'pending' — extraction running or scheduled. Poll check_extraction_status every 10-15s until 'ready' or 'failed'.A datasheet nobody has read before usually takes 1-3minutes; a large one can takeminutes, 5 ormore. - 'resolving' — we're still looking for the datasheet's PDF (distributors, then a web search; under a minute a part, longermore for abig batch). Not final: keep polling check_extraction_status. - 'not_extracted' — known part but datasheet hasn't been fetched yet. Trigger it via prefetch_datasheetslarge(cheapest)one orby calling read_datasheet (auto-triggers on first read). - 'no_source' — the search forapublic datasheet has finished and found none for this MPN. Check the part number (search_parts), or retry prefetch_datasheets later. Otherwise upload the PDF via request_datasheet_upload + confirm_datasheet_upload (see those tools).busyOrg-uploadedqueue.datasheetsThese areprivate to the org. - 'unsupported' — PDF exists but can't be extracted (scanned image-only, encryptedestimates,or corrupted). Upload a clean text-basednotviaForrequest_datasheet_uploadmicrocontrollers,toregister-leveloverride. -programming'failed'detail/usually'error'lives—inextractionaerrored.separateThereferenceresponsemanual,includesnot theerror reason. Retrydatasheet;viaavailable_sectionsprefetch_datasheetsshowsorwhatescalateistopresent.support. -datasheet_status:'rejected''ready'—→inputreadwasn'tit;a'extracting'real/MPN'queued'(bare/value'pending'like/'100nF','resolving'description,→orpollreferencecheck_extraction_status;designator).'not_extracted'Fix→theprefetch_datasheets;input'no_source'and/re-call. -'unsupported''deduplicated'→—request_datasheet_upload.anotherFullpartlist in thefamily already has this datasheet; same content is returned under the primaryserverMPN.instructions.
⟨2 unchanged words⟩ default":3,"description":"Max search resultsforin search mode (default 3). Each result includes adjacent contextchunks for continuity.chunks.","type":"integer"},"max_chars":{ ⟨19 unchanged words⟩ ":{"default":"section","description":"Reading mode:'section' (default) returns a named section, 'search' ⟨27 unchanged words⟩ Specific manufacturer part number (MPN) or LCSCnumber.number (e.g. 'TPS54302DDCR', 'C2837938'). Not a value ('100nF'), description ordescription.reference designator ('R1').","type":"string"},"query":{"description":"Searchquery —query;REQUIREDrequired when mode='search', ignoredwhen mode='section'.otherwise. Example: 'charge voltage register', 'I2C address'.", ⟨40 unchanged words⟩
RequestFree. The upload fee is charged by confirm_datasheet_upload, after the file is checked. Gives a signed URL to upload a datasheet PDFfor a component whose datasheetwe don'thave.have:Useusethisit whensearch_parts / get_part_details / prefetch_datasheetsdatasheet_statusreturnisdatasheet_status='no_source''no_source' (once the search has finished: not while it is 'resolving') or 'unsupported'.Free — the upload fee is only charged on confirm_datasheet_upload after we validate the file. Flow (3Three steps): 1. Callrequest_datasheet_uploadthis with the MPN, the file's SHA-256,and its bytesize.size;Youyou getback anupload_url, upload_method ('PUT'), upload_headers,and anopaqueupload_token. 2. Upload thePDF directly to the returned URL with curlbytes: `curl -X PUT -H 'Content-Type: application/pdf' --data-binary @file.pdf "$UPLOAD_URL"` (addplus anyheaders fromupload_headers). 3. Call confirm_datasheet_upload with the upload_token.Server verifies the bytes, re-hashes, checks for the MPN on the first page, charges the upload fee (50¢), and queues extraction. Returns document_id +Checkedstatus='pending'. Validationatrulesconfirm (checked atnothingconfirmchargedtime,ifrefundedaoncheckfailurefails):-File must beavalidparseable PDF(magic bytes + parseable). -,Actualthe SHA-256must match expected_sha256. - Actual byteand sizemustyoumatchdeclared,size_bytesand(±0). -the MPN or itscorestemmust appear inon the first pagetext(catches wrong-file uploads). Scannedscanned image-only PDFswillfail thischeck — upload a text-based PDF. -). Max50MB per file. No dev-kit manuals /50BOBMB;schematicsthe/part'sapp-notesdatasheet,asnotdatasheetsa—dev-kitusemanual,theschematicmatchingorMPN'sappactualnote.datasheet.Uploaded datasheets arescoped to your organization (private).They satisfy read_datasheet, search_datasheets, check_design_fit, and analyze_image forto yourorg's tokensorganisation.only.Tokens expire after 15minutes. If upload fails orminutes;timesrequestout,ajustnewcallonerequest_datasheet_uploadifagain.needed.
⟨5 unchanged words⟩ SHA-256 of the PDF bytes (64 chars). Used both as the storage key (content-addressed) and to detect tampering.,Computee.g.withfrom `shasum -a 256 file.pdf`.","pattern":"^ ⟨4 unchanged words⟩ :"string"},"manufacturer":{"description":"Optional.OptionalManufacturermanufacturer name (e.g. 'Texas Instruments')ifwhen the MPN alonedoesn'tisdisambiguate.ambiguous.","type":"string"},"part_number":{"description":"Manufacturer part numberMPN the PDF belongs to.Must be a real MPN, notNot a value or description.","type":"string"},"size_bytes":{"description":"Size of the PDF inbytes. Must be ≤ 50_000_000bytes (50MB) and
Semantic search acrossCostsall2¢extractedperdatasheets.call.FindsSemanticcomponentssearchmatchingacrossnaturaleverylanguagedatasheetqueriesalreadyaboutextractedspecifications,(notfeatures,everyorpartcapabilities.thatBestexists), forbroadspec-based discoveryacross all partssuch(e.g.as 'low-noise LDO with PSRR above70dB'). Only searches datasheets that70dB'.haveReturnsbeenmatchingpreviouslychunksextractedwith—part_numbernotandallaparts0-100thatrelevance_score.exist.ToForfindfindinga specificpartspart by number, usesearch_parts instead.search_parts.
SearchFree.forStartelectronichere. Searches components by part number,description,orkeyword. Start here — this is thekeywordbest(e.g.entry'STM32F103',point'buckforconverterfinding3A')components.acrossQueriesJLCPCB,allMouserconfiguredandprovidersDigiKey in parallel. Results are merged by MPN with indicativepricingprice and stockfrom each source. Each result includes datasheet_status so you know which parts have datasheets available for read_datasheet. Best with specific part numbers or keywords (e.g.per'STM32F103',source'buckandconvertera3A').datasheet_status. Forspec-based discovery in natural language, use search_datasheets instead. When the calling org has a privateanpartsMPNlibraryquery,matching org-uploaded parts are appended toevaltheboardsresultsandwithdevsource='private_library'kitsandcomeanybacktagsseparatelytheasteamrelated_kits.hasPartsappliedin—yourincludingorganisation's privatepartslibrary whose MPN, manufacturer, description, type, category,or tag matchesthe query. DATASHEET STATUS VALUES: -are'ready'appended—withextractedsource='private_library' andindexed; call read_datasheet, search_datasheets, or analyze_image. - 'extracting' / 'in_progress' / 'queued' / 'pending'their—tags.extractionForrunningspec-basedordiscoveryscheduled.inPollplaincheck_extraction_statuslanguage,everyuse10-15ssearch_datasheets.untildatasheet_status: 'ready'or 'failed'. A datasheet nobody has→ readbefore usually takes 1-3 minutes; a largeit;one'extracting'can/take'queued'5/or'pending'more. -/ 'resolving'— we're still looking for the datasheet's PDF (distributors, then a web search; under a minute a part, longer for a big batch). Not final: keep→pollingpollcheck_extraction_status. -check_extraction_status; 'not_extracted'— known part but datasheet hasn't been fetched yet. Trigger it via prefetch_datasheets (cheapest) or by calling read_datasheet (auto-triggers on first→read). -prefetch_datasheets; 'no_source'— the search for a public datasheet has finished and found none for this MPN. Check the part number (search_parts), or retry prefetch_datasheets later. Otherwise upload the PDF via request_datasheet_upload + confirm_datasheet_upload (see those tools). Org-uploaded datasheets are private to the org. - 'unsupported' — PDF exists but can't be extracted (scanned image-only, encrypted, or corrupted). Upload a clean text-based PDF via request_datasheet_upload to override. - 'failed'/'error' — extraction errored. The response includes the error reason. Retry via prefetch_datasheets or escalate to support. - 'rejected' — input wasn't a real MPN (bare value like '100nF', description, or reference designator). Fix the input and re-call. -'unsupported''deduplicated'→—request_datasheet_upload.anotherFullpartlist in thefamily already has this datasheet; same content is returned under the primaryserverMPN.instructions.
⟨6 unchanged words⟩ results per provider (default 20). With providers='all',totaltheresultstotal can be up to 3×this value (one set per provider).this.","type":"integer"},"providers":{"default":"all","description":"Which providers to query:'all'(default),'jlcpcb', 'mouser', or 'digikey''all').","enum":["all","jlcpcb"," ⟨18 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Check BOM"}
before
—after
Check Design Fit⟨37 unchanged words⟩ Buck/boost converters: input_voltage, output_voltage, output_current, ambient_temp, efficiency - MOSFETs: supply_voltage=VDS, output_current=ID (drain current), ambient_temp, power_dissipation - LDOs: input_voltage, output_voltage, output_current, ambient_temp ⟨212 unchanged words⟩ clean PASS means every condition was checked. Temperaturehonesty: - ambient_temp isNOTnever silentlytreatedcomparedaswith ajunctionjunction-temperaturetemperature.limit.TheWhenstoredtheoperating-temperaturepart'slimitown dissipation isjunction-suspectknown,sotheatoolbareestimatesambientTjinput=isTanever+reportedPdas×aRθJAclean(RθJAPASSfromonthethermaldatasheet'sgrounds.thermalIftable,youthealsohighestsupplyvalueinput_voltage,itoutput_voltagegives) andoutput_currentjudgesANDTjaagainstthermal-resistancethe junction limits, reported as 'temperature (RthJAjunction est.)'valuewithistheavailable,arithmetictheintooltheestimatesnote.TjPd=byTapart+type:Pd·RthJALDO (PdVin≈- Vout) × Iout; switching converter Vout × Iout × (Vin-Vout1/η - 1)·Iout,awhichdocumentedneedsapproximation)efficiencyand(readchecksit from thejunctiondatasheet'sestimateefficiency—curve,reportede.g.aswith'temperatureanalyze_image); anything else, pass power_dissipation (junctionforest.)'awithMOSFET,theID²assumptions×inRDS(on)theatnote.yourOtherwisegatethedrive).temperatureWithout these the checkreturnsis INSUFFICIENT_DATAaskingandyouits note says what topullpass. -RthJACurrentviaratingsread_datasheet.areTheread'temperature_basis'atfieldambient_temp: a MOSFET's 25 °C drain current is derated towards its maximum junction temperature, or the datasheet's own row for a hotter temperature is used. - 'temperature_basis' (junction / ambient / unknown) tells you ⟨69 unchanged words⟩ fallback is needed, this call triggers extraction (30s-2minusually 1-3 minutes). Returns status='extracting' if so — poll check_extraction_status and retry. When NOT to use: - You needpower dissipationtransient orjunction-temperature rise — this tool onlyfullchecksthermalnameplateanalysislimits.—PulltheRthJAjunctionfromestimateread_datasheetisandacalculatesteady-stateyourself.screen. - You need SOA (safe-operating-area) curve checks ⟨28 unchanged words⟩ compare against. Example: check_design_fit('TPS54302', input_voltage=24, output_voltage=5, output_current=2.5, ambient_temp=70, efficiency=0.92)
⟨10 unchanged words⟩ "minimum":-65,"type":"number"},"efficiency":{"description":"Converter efficiency at this operating point, as a fraction (0.92) or a percentage (92). Lets the tool estimate a switching converter's junction temperature.","exclusiveMinimum":0,"maximum":100,"type":"number"},"input_voltage":{"description":"Input voltage / VIN ⟨56 unchanged words⟩ a value or description.","type":"string"},"power_dissipation":{"description":"The part's own power dissipation (W), if you have worked it out (e.g. ID² × RDS(on) for a MOSFET). Used for the junction-temperature estimate.","maximum":1000,"minimum":0,"type":"number"},"supply_voltage":{"description":"Supply voltage ⟨50 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Check Design Fit"}
before
—after
Check Datasheet Status⟨29 unchanged words⟩ a new extraction. Recommended polling cadence: every5-1010-15 seconds.ExtractionAtypicallydatasheet nobody has read before usually takes30s-2min1-3forminutesnew(aparts,largesoonepolling5fasterorthanmore),everyso5sfaster polling wastes calls.StopKeep pollingoncewhile the status is 'resolving', 'queued', 'pending' or 'extracting'; stop once it is 'ready', 'failed', 'no_source',or 'unsupported'. DATASHEET STATUS VALUES: - 'ready' ⟨17 unchanged words⟩ — extraction running or scheduled. Poll check_extraction_status every5-10s10-15s until 'ready' or 'failed'.TypicalAtimedatasheet nobody has read before usually takes 1-3 minutes; a large one can take 5 or more. - 'resolving' — we're still looking for the datasheet's PDF (distributors, then a web search; under a minute a part, longer for a big batch). Not final:30s-2min.keep polling check_extraction_status. - 'not_extracted' — known part but datasheet hasn't ⟨12 unchanged words⟩ auto-triggers on first read). - 'no_source' —wethecouldn'tsearchfindfor a public datasheetURLhasforfinishedthisandMPN.foundFirst,noneretryforprefetch_datasheetsthisinMPN.10-30sCheck(theURL resolver re-runs and often finds a source on thepartsecondnumberpass(search_parts). If,stillor'no_source',retrytheprefetch_datasheetsagentlater.canOtherwise upload the PDFmanuallyvia request_datasheet_upload + confirm_datasheet_upload (see those tools) ⟨94 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Check Datasheet Status"}
before
—after
Compare Parts⟨234 unchanged words⟩ — extraction running or scheduled. Poll check_extraction_status every5-10s10-15s until 'ready' or 'failed'.TypicalAtimedatasheet nobody has read before usually takes 1-3 minutes; a large one can take 5 or more. - 'resolving' — we're still looking for the datasheet's PDF (distributors, then a web search; under a minute a part, longer for a big batch). Not final:30s-2min.keep polling check_extraction_status. - 'not_extracted' — known part but datasheet hasn't ⟨12 unchanged words⟩ auto-triggers on first read). - 'no_source' —wethecouldn'tsearchfindfor a public datasheetURLhasforfinishedthisandMPN.foundFirst,noneretryforprefetch_datasheetsthisinMPN.10-30sCheck(theURL resolver re-runs and often finds a source on thepartsecondnumberpass(search_parts). If,stillor'no_source',retrytheprefetch_datasheetsagentlater.canOtherwise upload the PDFmanuallyvia request_datasheet_upload + confirm_datasheet_upload (see those tools) ⟨94 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Compare Parts"}
before
—after
Confirm Datasheet Upload⟨66 unchanged words⟩ MPN to wait for extraction to finish (30s-2minusuallytypically1-3 minutes). Failure modes: - 'upload_not_found' — no ⟨73 unchanged words⟩
{"destructiveHint":true,"openWorldHint":true,"readOnlyHint":false,"title":"Confirm Datasheet Upload"}
before
—after
Find Alternative Parts⟨187 unchanged words⟩ stock or package cannot satisfy in_stock or same_package.NoWhenverifiednothing matches,meanstheancallemptyreturnslist.error_type 'not_found' (not charged) with the parts that would match without the constraints, under matches_without_constraints. - Also searches the part's own family in datasheets SheetsData has already read (e.g. CH340C for CH340G). - If provider search returns few candidates, the tool ⟨57 unchanged words⟩ — extraction running or scheduled. Poll check_extraction_status every5-10s10-15s until 'ready' or 'failed'.TypicalAtimedatasheet nobody has read before usually takes 1-3 minutes; a large one can take 5 or more. - 'resolving' — we're still looking for the datasheet's PDF (distributors, then a web search; under a minute a part, longer for a big batch). Not final:30s-2min.keep polling check_extraction_status. - 'not_extracted' — known part but datasheet hasn't ⟨12 unchanged words⟩ auto-triggers on first read). - 'no_source' —wethecouldn'tsearchfindfor a public datasheetURLhasforfinishedthisandMPN.foundFirst,noneretryforprefetch_datasheetsthisinMPN.10-30sCheck(theURL resolver re-runs and often finds a source on thepartsecondnumberpass(search_parts). If,stillor'no_source',retrytheprefetch_datasheetsagentlater.canOtherwise upload the PDFmanuallyvia request_datasheet_upload + confirm_datasheet_upload (see those tools) ⟨94 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Find Alternative Parts"}
before
—after
Find Parts by Spec{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Find Parts by Spec"}
before
—after
Get Part Details⟨114 unchanged words⟩ — extraction running or scheduled. Poll check_extraction_status every5-10s10-15s until 'ready' or 'failed'.TypicalAtimedatasheet nobody has read before usually takes 1-3 minutes; a large one can take 5 or more. - 'resolving' — we're still looking for the datasheet's PDF (distributors, then a web search; under a minute a part, longer for a big batch). Not final:30s-2min.keep polling check_extraction_status. - 'not_extracted' — known part but datasheet hasn't ⟨12 unchanged words⟩ auto-triggers on first read). - 'no_source' —wethecouldn'tsearchfindfor a public datasheetURLhasforfinishedthisandMPN.foundFirst,noneretryforprefetch_datasheetsthisinMPN.10-30sCheck(theURL resolver re-runs and often finds a source on thepartsecondnumberpass(search_parts). If,stillor'no_source',retrytheprefetch_datasheetsagentlater.canOtherwise upload the PDFmanuallyvia request_datasheet_upload + confirm_datasheet_upload (see those tools) ⟨94 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Get Part Details"}
before
—after
Prefetch Datasheets⟨35 unchanged words⟩ Example: prefetch_datasheets(['TPS54302', 'ADS1115', 'LP5907'])If aA partcomeswithoutbacka'no_source'knownondatasheetthecomesfirstbackcall,'queued'retrywhileprefetchwe look forthatitsMPNPDF;oncecheck_extraction_statusaftershows10-30sit—asthe'resolving'URLuntilresolvertheissearchretriableends.andOnlyoftenthenfindsisa'no_source'sourcefinal:oncheck thesecond pass. If stillpart'no_source'number, or use request_datasheet_upload + confirm_datasheet_upload to attach your own ⟨81 unchanged words⟩ — extraction running or scheduled. Poll check_extraction_status every5-10s10-15s until 'ready' or 'failed'.TypicalAtimedatasheet nobody has read before usually takes 1-3 minutes; a large one can take 5 or more. - 'resolving' — we're still looking for the datasheet's PDF (distributors, then a web search; under a minute a part, longer for a big batch). Not final:30s-2min.keep polling check_extraction_status. - 'not_extracted' — known part but datasheet hasn't ⟨12 unchanged words⟩ auto-triggers on first read). - 'no_source' —wethecouldn'tsearchfindfor a public datasheetURLhasforfinishedthisandMPN.foundFirst,noneretryforprefetch_datasheetsthisinMPN.10-30sCheck(theURL resolver re-runs and often finds a source on thepartsecondnumberpass(search_parts). If,stillor'no_source',retrytheprefetch_datasheetsagentlater.canOtherwise upload the PDFmanuallyvia request_datasheet_upload + confirm_datasheet_upload (see those tools) ⟨94 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Prefetch Datasheets"}
before
—after
Read Datasheet⟨106 unchanged words⟩ call for a new part triggers extraction (30s-2minusually 1-3 minutes; poll check_extraction_status). Subsequent calls are cached. **Datasheet vs Reference ⟨96 unchanged words⟩ — extraction running or scheduled. Poll check_extraction_status every5-10s10-15s until 'ready' or 'failed'.TypicalAtimedatasheet nobody has read before usually takes 1-3 minutes; a large one can take 5 or more. - 'resolving' — we're still looking for the datasheet's PDF (distributors, then a web search; under a minute a part, longer for a big batch). Not final:30s-2min.keep polling check_extraction_status. - 'not_extracted' — known part but datasheet hasn't ⟨12 unchanged words⟩ auto-triggers on first read). - 'no_source' —wethecouldn'tsearchfindfor a public datasheetURLhasforfinishedthisandMPN.foundFirst,noneretryforprefetch_datasheetsthisinMPN.10-30sCheck(theURL resolver re-runs and often finds a source on thepartsecondnumberpass(search_parts). If,stillor'no_source',retrytheprefetch_datasheetsagentlater.canOtherwise upload the PDFmanuallyvia request_datasheet_upload + confirm_datasheet_upload (see those tools) ⟨94 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Read Datasheet"}
before
—after
Request Datasheet Upload⟨20 unchanged words⟩ search_parts / get_part_details / prefetch_datasheets return datasheet_status='no_source' (andonceatheretrysearchdidn'thashelpfinished: not while it is 'resolving') or 'unsupported'. Free — the upload fee ⟨219 unchanged words⟩
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Request Datasheet Upload"}
before
—after
Search Datasheets{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Search Datasheets"}
before
—after
Search Parts⟨140 unchanged words⟩ — extraction running or scheduled. Poll check_extraction_status every5-10s10-15s until 'ready' or 'failed'.TypicalAtimedatasheet nobody has read before usually takes 1-3 minutes; a large one can take 5 or more. - 'resolving' — we're still looking for the datasheet's PDF (distributors, then a web search; under a minute a part, longer for a big batch). Not final:30s-2min.keep polling check_extraction_status. - 'not_extracted' — known part but datasheet hasn't ⟨12 unchanged words⟩ auto-triggers on first read). - 'no_source' —wethecouldn'tsearchfindfor a public datasheetURLhasforfinishedthisandMPN.foundFirst,noneretryforprefetch_datasheetsthisinMPN.10-30sCheck(theURL resolver re-runs and often finds a source on thepartsecondnumberpass(search_parts). If,stillor'no_source',retrytheprefetch_datasheetsagentlater.canOtherwise upload the PDFmanuallyvia request_datasheet_upload + confirm_datasheet_upload (see those tools) ⟨94 unchanged words⟩
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Search Parts"}
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
{"properties":{"limit":{"default":153,"description":"Max results (default153)","type":"integer"},"query": ⟨34 unchanged words⟩
$0.03/call. Check up to 20 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.
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.