accueil / serveurs / Médias / io.github.octoco-ltd/sheetsdata-mcp
io.github.octoco-ltd/sheetsdata-mcp
serveur MCP (Model Context Protocol) · sheetsdata 1.0.5
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.octoco-ltd/sheetsdata-mcp est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.octoco-ltd/sheetsdata-mcp » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 14 outils
- analyze_image≈ 301 tokens
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?')
Paramètres, retour & exemple (3)
Paramètresquestion· string · optionnel
Optional question about the image (e.g. 'What are the package dimensions?')image_key· string · requis
Image storage path from read_datasheet output (e.g. 'images/abc123.png')part_number· string · requis
MPN of the component
Exemple d'appel{"name": "analyze_image", "arguments": {"image_key": "texte", "part_number": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check_bom≈ 252 tokens
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.
Paramètres, retour & exemple (2)
Paramètreslines· array · requisverbose· boolean · optionnel
Exemple d'appel{"name": "check_bom", "arguments": {"lines": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check_design_fit≈ 1322 tokens
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 junction limits, reported as 'temperature (junction est.)'. Pd by part type: LDO (Vin - Vout) × Iout; switching converter Vout × Iout × (1/η - 1), which needs efficiency; anything else, pass power_dissipation (for a MOSFET, ID² × RDS(on)). 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). temperature_basis says which basis was used. Stored parameters answer instantly; anything else is read from the datasheet's ratings tables (validation_method says which). A part not yet extracted 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. Not for: transient or full thermal analysis (the junction estimate is a steady-state screen), MOSFET SOA curves (analyze_image the SOA graph), passives with no ratings table. Example: check_design_fit('TPS54302', input_voltage=24, output_voltage=5, output_current=2.5, ambient_temp=70, efficiency=0.92)
Paramètres, retour & exemple (10)
Paramètresefficiency· number · optionnel
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.part_number· string · requis
Specific manufacturer part number (MPN) or LCSC number (e.g. 'TPS54302DDCR', 'C2837938'). Not a value ('100nF'), description or reference designator ('R1').ambient_temp· number · optionnel
Ambient temperature TA (°C).derating_pct· number · optionnel
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.input_voltage· number · optionnel
Input voltage / VIN (V). For converters.output_current· number · optionnel
Output current / IOUT (A). For MOSFETs, this is drain current ID.output_voltage· number · optionnel
Output voltage / VOUT (V). For converters/LDOs.supply_voltage· number · optionnel
Supply voltage / VCC / VDD (V). For MOSFETs, VDS; compared against VDS(max) only.power_dissipation· number · optionnel
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.switching_frequency· number · optionnel
Switching frequency FSW (kHz). For converters.
Exemple d'appel{"name": "check_design_fit", "arguments": {"part_number": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check_extraction_status≈ 388 tokens
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.
Paramètres, retour & exemple (1)
Paramètrespart_numbers· array · requis
1-20 parts. Specific manufacturer part number (MPN) or LCSC number (e.g. 'TPS54302DDCR', 'C2837938'). Not a value ('100nF'), description or reference designator ('R1').
Exemple d'appel{"name": "check_extraction_status", "arguments": {"part_numbers": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - compare_parts≈ 530 tokens
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.
Paramètres, retour & exemple (3)
Paramètrescompact· boolean · optionnel
Return the shorter answer: per-part flags and the comparison table, without per-provider detail or summaries. Default false: the full answer.part_numbers· array · requis
2-5 parts. Specific manufacturer part number (MPN) or LCSC number (e.g. 'TPS54302DDCR', 'C2837938'). Not a value ('100nF'), description or reference designator ('R1').include_summaries· boolean · optionnel
With compact=true, also return each part's cached datasheet summary (about 2-4k characters each). The full answer always has them.
Exemple d'appel{"name": "compare_parts", "arguments": {"part_numbers": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - confirm_datasheet_upload≈ 318 tokens
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).
Paramètres, retour & exemple (1)
Paramètresupload_token· string · requis
Opaque token returned by request_datasheet_upload.
Exemple d'appel{"name": "confirm_datasheet_upload", "arguments": {"upload_token": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - find_alternative≈ 806 tokens
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.
Paramètres, retour & exemple (5)
Paramètreslimit· integer · optionnel
Max alternatives to return (default 5, max 20).compact· boolean · optionnel
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.constraints· array · optionnel
Optional filters. 'in_stock' = known non-zero stock at some provider. 'same_package' = same footprint (fuzzy). 'jlcpcb' = orderable at JLCPCB (also limits the provider search to JLCPCB).part_number· string · requis
Specific manufacturer part number (MPN) or LCSC number (e.g. 'TPS54302DDCR', 'C2837938'). Not a value ('100nF'), description or reference designator ('R1').include_original_summary· boolean · optionnel
With compact=true, also return the reference part's cached datasheet summary (about 2-3k characters). The full answer always has it.
Exemple d'appel{"name": "find_alternative", "arguments": {"part_number": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - find_parts≈ 402 tokens
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.
Paramètres, retour & exemple (6)
Paramètreslimit· integer · optionnelquery· string · requis
Function, e.g. buck converter, N-channel MOSFET, 6-axis IMUpackage· string · optionnelverbose· boolean · optionnelin_stock· boolean · optionnel
Require positive stock observed within 24h; refresh at most six candidates.constraints· array · optionnel
Exemple d'appel{"name": "find_parts", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_part_details≈ 596 tokens
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.
Paramètres, retour & exemple (5)
Paramètrescompact· boolean · optionnel
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.verbose· boolean · optionnel
Return every available_sections entry. By default the first 50 are returned, plus a '_truncated' entry saying how many more exist.provider· string · optionnel · all | jlcpcb | mouser | digikey
Which provider's sources to show (default 'all').part_number· string · requis
Specific manufacturer part number (MPN) or LCSC number (e.g. 'TPS54302DDCR', 'C2837938'). Not a value ('100nF'), description or reference designator ('R1').prefetch_datasheet· boolean · optionnel
Start background datasheet extraction (no extra charge).
Exemple d'appel{"name": "get_part_details", "arguments": {"part_number": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - prefetch_datasheets≈ 410 tokens
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.
Paramètres, retour & exemple (1)
Paramètrespart_numbers· array · requis
1-20 parts. Specific manufacturer part number (MPN) or LCSC number (e.g. 'TPS54302DDCR', 'C2837938'). Not a value ('100nF'), description or reference designator ('R1').
Exemple d'appel{"name": "prefetch_datasheets", "arguments": {"part_numbers": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - read_datasheet≈ 773 tokens
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.
Paramètres, retour & exemple (8)
Paramètresmode· string · optionnel · section | search
'section' (default) returns a named section, 'search' does semantic searchlimit· integer · optionnel
Max search results in search mode (default 3). Each result includes adjacent context chunks.query· string · optionnel
Search query; required when mode='search', ignored otherwise. Example: 'charge voltage register', 'I2C address'.format· string · optionnel · markdown | json
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.offset· integer · optionnel
Continue a section using next_offset from the previous read.section· string · optionnel
Section name for section mode. Start with 'summary' to discover available sections. Common: summary, pinout, electrical, abs_max, register_map, timing, package. Any heading in the datasheet works (slugified).max_chars· integer · optionnel
Text budget; a whole sentence or table row may exceed it.part_number· string · requis
Specific manufacturer part number (MPN) or LCSC number (e.g. 'TPS54302DDCR', 'C2837938'). Not a value ('100nF'), description or reference designator ('R1').
Exemple d'appel{"name": "read_datasheet", "arguments": {"part_number": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - request_datasheet_upload≈ 473 tokens
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.
Paramètres, retour & exemple (4)
Paramètressize_bytes· integer · requis
Size of the PDF in bytes (1,024 to 50,000,000).part_number· string · requis
MPN the PDF belongs to. Not a value or description.manufacturer· string · optionnel
Optional manufacturer name (e.g. 'Texas Instruments') when the MPN alone is ambiguous.expected_sha256· string · requis
Lowercase hex SHA-256 of the PDF bytes (64 chars), e.g. from `shasum -a 256 file.pdf`.
Exemple d'appel{"name": "request_datasheet_upload", "arguments": {"size_bytes": 1, "part_number": "texte", "expected_sha256": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - search_datasheets≈ 266 tokens
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.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Max results (default 3)query· string · requis
Natural language search querysection_type· string · optionnel · all | electrical_characteristics | features | description | pin_configuration | absolute_maximum_ratings | application_information | recommended_operating_conditions
Optional: limit search to a specific section type
Exemple d'appel{"name": "search_datasheets", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - search_parts≈ 373 tokens
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.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Max results per provider (default 20). With providers='all' the total can be up to 3× this.query· string · requis
Search query (part number or keyword)providers· string · optionnel · all | jlcpcb | mouser | digikey
Which providers to query (default 'all').
Exemple d'appel{"name": "search_parts", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».