Koskamo

DatasheetVend MCP

An MCP server that extracts engineering datasheets into machine-readable JSON contracts and KiCad CAD files. It provides tools for decoding part numbers, extracting pinouts, analog specs, thermal limits, and generating component twins with source-grounded confidence scores.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

DatasheetVend MCP logo, by DatasheetVendVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by DatasheetVend
MCP endpoint (Streamable HTTP)
https://datasheetvend.com/api/mcp
Vendor documentation

What you can do with it

  • Extract datasheet pinouts and pin cautions
  • Generate KiCad schematic symbols and footprints
  • Decode manufacturer part numbers
  • Extract absolute maximum ratings and timing characteristics

Source and maintenance

Vendor evidenceRegistry 1.1.0
Maintenance checked

Protocol and capabilities

Server
datasheetvend 1.0.0
MCP protocol
2025-06-18
Tools
24 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

24 advertised

datasheetvend_extract_document_map — Map a datasheet (deterministic index)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Build the Document Map of a datasheet PDF: a deterministic, machine-readable index of WHERE the topics live (pinout, package, mechanical, electrical, timing, thermal, absolute_max, registers, cautions …) and WHAT each page physically looks like (table / prose / vector_drawing / raster_image / blank / honest unknown), including a per-page geometry census (vector paths, ruling lines, raster coverage). No LLM is involved — the same document yields the same map, cached by SHA-256, so repeat calls are served from the cache. USE IT FIRST, before reading any page of a datasheet: read the candidate pages it recommends and pick your tool per page from anatomy.dominant_form. The result is wrapped as { contractVersion, documentRef, review, map }; inside `map` it names `map.document.total_pages` (the physical page count) and, per topic, `map.module_targets[].primary_pages` — so it answers 'how many pages' and points to the pages likely to hold the absolute-max ratings / pinout / package drawing (a primary page can miss, so read the candidates and check the warnings). Do NOT use it to get pin names, dimensions, or ratings — it contains no extracted values (use datasheetvend_extract_pinout for pins). Page numbers are physical 1-based PDF pages, not printed labels. Check review.required and the warnings before trusting a degraded map.

datasheetvend_extract_document_map input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve).."
    }
  }
}
datasheetvend_extract_document_map output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contractVersion",
    "documentRef",
    "cached",
    "review",
    "map"
  ],
  "properties": {
    "map": {
      "type": "object",
      "description": "The versioned Document Map agent delivery envelope (document_map_agent_v1): document.{total_pages,sha256}, module_targets[], toc[], page_grid_summary, warnings. The top-level envelope also carries `cached` (true on a repeat call for the same document).",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "cached": {
      "type": "boolean",
      "description": "True when served from the deterministic SHA-256 cache"
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Review reasons if required"
        },
        "required": {
          "type": "boolean",
          "description": "Whether human review is required"
        }
      },
      "additionalProperties": false
    },
    "documentRef": {
      "type": "string",
      "description": "Echo of the documentPath/URL that was mapped"
    },
    "contractVersion": {
      "type": "string",
      "description": "Contract schema identifier: dmap_evidence_v1"
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_document_map annotations
{
  "title": "Map a datasheet (deterministic index)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_read_document_map_instructions — Document Map usage instructions
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return the versioned usage instructions for Document Map consumers: the binding rule (SHA-256 + physical pages), field semantics, the dominant_form action table, and the measured routing discipline. Call once per session before working with maps from datasheetvend_extract_document_map; do not call repeatedly — the text is static per contract version.

datasheetvend_read_document_map_instructions input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
datasheetvend_read_document_map_instructions output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "instructions"
  ],
  "properties": {
    "instructions": {
      "type": "string",
      "description": "The Document Map markdown guidelines and dominant_form action matrix"
    }
  },
  "additionalProperties": false
}
datasheetvend_read_document_map_instructions annotations
{
  "title": "Document Map usage instructions",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_inspect_document_page — Inspect one mapped page (Tier-2 detail)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Tier-2 detail for ONE page of an already-mapped datasheet: the full measured anatomy (text metrics, MuPDF geometry census, structural geometry signals), the page's own headings and first lines, and which modules claim the page. Use it AFTER datasheetvend_extract_document_map, when the Tier-1 index says a page matters and its one-line summary is not enough. Pass the document.sha256 from the map (served free from cache). Set include_physical=true ONLY when you truly need the raw positioned tokens/vector paths — that payload can weigh hundreds of KB for one dense page. Read-only; never rebuilds, never bills.

datasheetvend_inspect_document_page input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentRef",
    "page"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 1,
      "description": "Physical 1-based PDF page number to inspect."
    },
    "documentRef": {
      "type": "string",
      "minLength": 1,
      "description": "The document.sha256 from a prior datasheetvend_extract_document_map result (preferred), or the same document path/URL."
    },
    "include_physical": {
      "type": "boolean",
      "description": "Include the raw MuPDF physical reconstruction (positioned tokens, vector paths). Heavy — default false."
    }
  }
}
datasheetvend_inspect_document_page output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "cached",
    "status"
  ],
  "properties": {
    "page": {
      "type": "number",
      "description": "status page_out_of_range: the page that was asked for"
    },
    "cached": {
      "type": "boolean",
      "description": "Whether served from the Document Map cache"
    },
    "status": {
      "enum": [
        "ok",
        "page_out_of_range"
      ],
      "type": "string",
      "description": "ok, or page_out_of_range when the map has no such page"
    },
    "inspection": {
      "type": "object",
      "description": "status ok: document_map_page_inspection_v1 (page, form, headings, claimed_by_modules, anatomy, physical_map)",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "total_pages": {
      "type": [
        "number",
        "null"
      ],
      "description": "status page_out_of_range: the map's page count"
    }
  },
  "additionalProperties": false
}
datasheetvend_inspect_document_page annotations
{
  "title": "Inspect one mapped page (Tier-2 detail)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_pinout — Extract datasheet pinout
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract a component's pin/pad table from a datasheet PDF as verifiable, provenance-tracked evidence — not raw PDF text to re-interpret. Returns a PinoutEvidence document (contract pinout_evidence_v1): the canonical pins and special pads with names/types/functions. It also RESOLVES THE PACKAGE from the terminals — `package.family`, `package.variant` (e.g. SOT-223, TQFP-32) and `package.pin_count` — so use this tool to answer package-variant and pin-count questions, not extract_package_dimensions (mechanical geometry) or decode_part_number (ordering codes). A review-state flags when the result must be human-checked (e.g. no pins recovered, or the module raised warnings). Prefer this over reading the PDF yourself; trust `review.required` before acting. Runs DatasheetVend Fast Extraction: a page scout routes targeted reads of the pin tables, cross-checked against the package drawing where the document prints one, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot extract the pinout, the slower deep engine re-runs pinout alone (engine.runtime is then `monolith_rescue`; a rescue can take several minutes, so set a client timeout of 10 minutes). Only if that also fails does it come back as an error with the reason.

datasheetvend_extract_pinout input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a datasheet that covers several parts."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    },
    "packageSelection": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional package/variant (e.g. 'LQFP48') when the datasheet lists more than one; Fast Extraction reads that package's pin column."
    }
  }
}
datasheetvend_extract_pinout output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contractVersion",
    "documentRef",
    "review",
    "evidence"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Review reasons if required"
        },
        "required": {
          "type": "boolean",
          "description": "Whether human review is required before CAD integration"
        }
      },
      "additionalProperties": false
    },
    "evidence": {
      "type": "object",
      "description": "The pinout module's canonical output: component, package (family/variant/pin_count), pins[] with capability mappings, special_pads[], enriched_fields, normalized_output, engineering_summary, warnings.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "documentRef": {
      "type": "string",
      "description": "Echo of the documentPath/URL that was extracted"
    },
    "contractVersion": {
      "type": "string",
      "description": "Contract schema identifier: pinout_evidence_v1"
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_pinout annotations
{
  "title": "Extract datasheet pinout",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_thermal_limits — Extract thermal resistance and operating limits
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract thermal characteristics: junction-to-ambient (θJA) and junction-to-case (θJC) thermal resistance, power dissipation limits, and operating/junction/storage temperature ranges — with the datasheet page where one was recorded. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_thermal_limits input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_thermal_limits output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_thermal_limits annotations
{
  "title": "Extract thermal resistance and operating limits",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_absolute_max — Extract absolute maximum ratings
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract the Absolute Maximum Ratings: never-exceed supply/pin voltages, max currents, and storage temperatures. Use extract_logic_levels for the OPERATING supply range, not these stress limits. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_absolute_max input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_absolute_max output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_absolute_max annotations
{
  "title": "Extract absolute maximum ratings",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_logic_levels — Extract DC logic levels and operating conditions
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract DC electrical characteristics: VIH/VIL/VOH/VOL thresholds, Schmitt hysteresis, AND the VCC/VDD operating supply voltage range. Use this for supply-range questions; extract_absolute_max gives never-exceed limits. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_logic_levels input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_logic_levels output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_logic_levels annotations
{
  "title": "Extract DC logic levels and operating conditions",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_timing_characteristics — Extract AC timing characteristics
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract AC timing: setup/hold (tSU, tH), propagation delays, maximum clock frequencies (fMAX), rise/fall times, and bus timing. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_timing_characteristics input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_timing_characteristics output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_timing_characteristics annotations
{
  "title": "Extract AC timing characteristics",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_register_map — Extract hardware register map
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract the register map: memory addresses, reset values, access permissions (RO/RW/W1C), and per-bit field definitions. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_register_map input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_register_map output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_register_map annotations
{
  "title": "Extract hardware register map",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_package_dimensions — Extract package dimensions and land geometry
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract mechanical package outline dimensions (D, E, A, A1, e, L, b) and a nominal land geometry estimate in the spirit of IPC-7351B (review-level, not a manufacturer land pattern). For the package variant/pin count from the pin table, prefer extract_pinout. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_package_dimensions input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_package_dimensions output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_package_dimensions annotations
{
  "title": "Extract package dimensions and land geometry",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_decode_part_number — Decode manufacturer ordering part numbers
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Decode the ordering nomenclature: per-position suffix meanings (temp grade, package, speed, packaging) and, where the datasheet's ordering information supports it, the enumerated orderable_part_numbers list — the direct answer to 'which/how many orderable part numbers'. Codes the document's ordering legend lists that the decode lacks come back as deterministic_harvest_only_rules, each with its source page: text-layer evidence to check, not decoded rules. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_decode_part_number input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_decode_part_number output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_decode_part_number annotations
{
  "title": "Decode manufacturer ordering part numbers",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_peripheral_matrix — Extract on-chip peripheral matrix
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract the on-chip peripheral inventory, one row per instance, in 13 classes: serial/communication (UART/USART, SPI, I2C, CAN, USB, Ethernet, SDIO, I2S/SAI), analog blocks (ADC, DAC, comparator, op-amp, voltage reference, temperature sensor), timers and watchdogs, DMA, security/math accelerators (crypto, RNG, CRC), external memory interfaces (FMC/FSMC/EMC, memory-mapped QSPI), display/camera/touch, interrupt controllers, GPIO, clock/reset, low-power modes, debug/trace and device identity. Each row carries the datasheet page it was read from, where one was recorded. For ADC/DAC/comparator electrical specs (resolution, sampling rate, INL/DNL, propagation delay) use datasheetvend_extract_analog_specs. For per-mode current draw, wakeup timing, and reset/brown-out threshold voltages use datasheetvend_extract_power_domains. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_peripheral_matrix input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_peripheral_matrix output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_peripheral_matrix annotations
{
  "title": "Extract on-chip peripheral matrix",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_analog_specs — Extract analog domain specifications (ADC/DAC, Op-Amps, VREF)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract analog conversion and signal-conditioning specs: ADC/DAC resolution, sampling rates (MSPS/kSPS), channel counts, input-voltage ranges, static non-linearity (INL/DNL), dynamic specs (ENOB, SINAD, SNR, SFDR, THD), operational amplifiers (GBW, slew rate, rail-to-rail, CMRR/PSRR), internal voltage references (nominal voltage, tempco ppm/°C), and operating supply/temp envelopes, plus comparator propagation delay and hysteresis. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_analog_specs input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_analog_specs output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_analog_specs annotations
{
  "title": "Extract analog domain specifications (ADC/DAC, Op-Amps, VREF)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_power_domains — Extract power domains and consumption
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract power supply domains (VDD/VDDA/VBAT), low-power/sleep modes and their consumption, and battery-backup configuration. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_power_domains input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_power_domains output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_power_domains annotations
{
  "title": "Extract power domains and consumption",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_passive_bom — Extract passive support BOM
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract the recommended passive support components: decoupling/bypass capacitors, crystal load caps, and pull-up/down resistors, with their values and the pins they connect to. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_passive_bom input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_passive_bom output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_passive_bom annotations
{
  "title": "Extract passive support BOM",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_pin_cautions — Extract pin cautions and design rules
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract hardware design cautions: bootstrap/mode-strapping requirements, 5V-tolerant vs 3.3V-only pin boundaries, reset/debug pin precautions (NRST filtering, SWD pull-ups), oscillator/crystal PCB guardrails, analog/power-domain isolation (VDDA/VBAT), and unconnected/reserved-pin handling. Each caution row includes source_page, source_text_snippet, and verified source_evidence bounding box coordinates ([x0, y0, x1, y1] in PDF points and normalized 0..1000 space) for visual inspector auditability. Runs DatasheetVend Fast Extraction: a page scout routes targeted model reads and the module's own deterministic readers, then the same normalization and completion checks as a dashboard job finish the result, usually in seconds; `engine` names the engine on every result. If Fast Extraction cannot complete the module, the slower deep engine re-runs that module alone (engine.runtime is then `monolith_rescue`; the result says so, and it is billed as delivered). A rescue can take several minutes, so set a client timeout of 10 minutes. Only if the deep engine also cannot deliver does the module return status FAILED with the reason.

datasheetvend_extract_pin_cautions input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate a multi-part datasheet."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve)."
    }
  }
}
datasheetvend_extract_pin_cautions output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "module_id",
    "status",
    "review",
    "extracted_data",
    "canonical_output",
    "engineering_summary",
    "warnings"
  ],
  "properties": {
    "engine": {
      "type": "object",
      "required": [
        "name",
        "runtime",
        "duration_ms",
        "lanes",
        "failed_modules"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
        },
        "lanes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "module",
              "lane",
              "reason"
            ],
            "properties": {
              "lane": {
                "type": "string",
                "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
              },
              "module": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "How each module was answered, where the engine recorded it"
        },
        "runtime": {
          "type": [
            "string",
            "null"
          ],
          "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
        },
        "duration_ms": {
          "type": "number",
          "description": "Wall time of the extraction in milliseconds"
        },
        "failed_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
        }
      },
      "description": "Which engine produced this result",
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why review is required, if it is"
        },
        "required": {
          "type": "boolean",
          "description": "Whether a human should verify before trusting this wholesale"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "type": "string",
      "description": "The module's completion status (for example approved, approved_with_warnings or empty), or FAILED when Fast Extraction could not extract the module"
    },
    "contract": {
      "type": "string",
      "description": "Contract id, e.g. thermal_evidence_v2"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public engineering warnings from the extraction."
    },
    "module_id": {
      "type": "string",
      "description": "Canonical module id"
    },
    "extracted_data": {
      "description": "The module's extraction after its own normalization — values with the datasheet page they came from (source_page, where one was recorded) and, where the module provides them, confidence_score and source_text_snippet."
    },
    "canonical_output": {
      "description": "The module's canonical (CAD-ready normalized) output block."
    },
    "engineering_summary": {
      "type": [
        "string",
        "null"
      ],
      "description": "Concise human-readable engineering summary, when emitted."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_pin_cautions annotations
{
  "title": "Extract pin cautions and design rules",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_kicad_footprint — Extract KiCad PCB footprint (.kicad_mod)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Write a KiCad PCB footprint (.kicad_mod) from a datasheet's package mechanical drawing: pad geometry, pitch, thermal tabs and courtyard, using the datasheet's own recommended land pattern when it prints one, otherwise simplified IPC-7351B fillet math. Emitted files are loaded with kicad-cli (sym/fp upgrade) where it is installed, which is a file-format check, not a DRC or ERC. Only bundle_status "completed" (with final_readiness.physical_truth_approved true) means the placement was independently proven against this document; "needs_review" covers everything else that still produced a file, including one built from the KiCad library or JEDEC/IPC-7351B math instead of this document (see footprint_provenance).

datasheetvend_extract_kicad_footprint input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate package variants."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve).."
    },
    "packageSelection": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional package/variant (e.g. 'LQFP48', 'SOIC8', 'QFN32')."
    }
  }
}
datasheetvend_extract_kicad_footprint output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "manufacturer_part_number",
    "package_variant",
    "kicad_mod",
    "validation",
    "review",
    "warnings",
    "status",
    "bundle_status",
    "requested",
    "inputs",
    "status_detail",
    "human_warnings",
    "footprint_provenance",
    "symbol_provenance",
    "final_readiness"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "required": [
        "filename"
      ],
      "properties": {
        "filename": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Review reasons if required"
        },
        "required": {
          "type": "boolean",
          "description": "Whether human review is required before fabrication"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "enum": [
        "COMPLETE",
        "PARTIAL",
        "NOT_PRESENT",
        "FAILED"
      ],
      "type": "string",
      "description": "The pipeline's own run status. FAILED means nothing usable was produced and the credits for this call are refunded automatically."
    },
    "contract": {
      "type": "string",
      "description": "Contract schema identifier: kicad_evidence_v1"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Engineering warnings emitted during generation"
    },
    "kicad_mod": {
      "type": [
        "string",
        "null"
      ],
      "description": "Complete KiCad PCB footprint (.kicad_mod) file content, or null if withheld/not produced."
    },
    "requested": {
      "type": "object",
      "required": [
        "part_name",
        "package_selection"
      ],
      "properties": {
        "part_name": {
          "type": [
            "string",
            "null"
          ]
        },
        "package_selection": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "description": "Exactly what the caller sent, kept distinct from the resolved identity above.",
      "additionalProperties": false
    },
    "validation": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ],
      "description": "kicad-cli file-load result (sym/fp upgrade — a format check, not a DRC)."
    },
    "bundle_status": {
      "anyOf": [
        {
          "enum": [
            "completed",
            "needs_review",
            "cannot_extract"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "completed = both requested files were proven against this document. needs_review = a run finished (or a fallback file was attached) without that proof. cannot_extract = nothing usable. null = the pipeline never reached a stage that could compute this."
    },
    "status_detail": {
      "type": "object",
      "required": [
        "gaps",
        "not_present_evidence",
        "failed"
      ],
      "properties": {
        "gaps": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "stage",
              "severity",
              "message"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "stage": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "severity": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "failed": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "stage",
                "reason",
                "recoverable"
              ],
              "properties": {
                "stage": {
                  "type": "string"
                },
                "reason": {
                  "type": "string"
                },
                "recoverable": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "not_present_evidence": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "pages_scanned",
                "strongest_score",
                "reason"
              ],
              "properties": {
                "reason": {
                  "type": "string"
                },
                "pages_scanned": {
                  "type": "array",
                  "items": {
                    "type": "number"
                  }
                },
                "strongest_score": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "human_warnings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "severity",
          "area",
          "message",
          "action"
        ],
        "properties": {
          "area": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "severity": {
            "enum": [
              "info",
              "review",
              "blocked"
            ],
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "final_readiness": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "physical_truth_approved",
            "syntax_valid",
            "native_kicad_valid",
            "placement_structurally_valid",
            "terminal_census_consistent",
            "package_identity_consistent",
            "dimension_evidence_coherent",
            "placement_reconciliation_authority",
            "blocking_reasons",
            "review_reasons"
          ],
          "properties": {
            "syntax_valid": {
              "type": "boolean",
              "description": "The emitted file is well-formed for its type (kicad-cli loaded it)."
            },
            "review_reasons": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "code",
                  "detail"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "Stable diagnostic code (never matched by prose)."
                  },
                  "detail": {
                    "type": "string",
                    "description": "Human-readable detail for this code."
                  }
                },
                "additionalProperties": false
              }
            },
            "blocking_reasons": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "code",
                  "detail"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "Stable diagnostic code (never matched by prose)."
                  },
                  "detail": {
                    "type": "string",
                    "description": "Human-readable detail for this code."
                  }
                },
                "additionalProperties": false
              }
            },
            "native_kicad_valid": {
              "type": "boolean",
              "description": "kicad-cli accepted the file. Tooling acceptance only, not a design-rule or electrical check."
            },
            "physical_truth_approved": {
              "type": "boolean",
              "description": "The artifact may be presented as physically true. This is the ONLY field that means 'proven correct' — kicad-cli acceptance alone does not."
            },
            "terminal_census_consistent": {
              "type": "boolean"
            },
            "dimension_evidence_coherent": {
              "type": "boolean"
            },
            "package_identity_consistent": {
              "type": "boolean"
            },
            "placement_structurally_valid": {
              "type": "boolean",
              "description": "The emitted pads reconcile with the resolved package's pad map."
            },
            "placement_reconciliation_authority": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The emit gate's full verdict. null when the pipeline never reached this stage."
    },
    "package_variant": {
      "type": [
        "string",
        "null"
      ],
      "description": "Resolved package code."
    },
    "symbol_provenance": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "tier",
            "confidence",
            "reason"
          ],
          "properties": {
            "tier": {
              "enum": [
                "local_synthesis",
                "library_fetch"
              ],
              "type": "string"
            },
            "reason": {
              "type": "string"
            },
            "confidence": {
              "type": "number"
            },
            "library_id": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Set only when this file did NOT come from this document's own extraction (a KiCad-library match or JEDEC/IPC-7351B math instead). null means the file was built from this document."
    },
    "footprint_provenance": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "tier",
            "confidence",
            "reason"
          ],
          "properties": {
            "tier": {
              "enum": [
                "local_synthesis",
                "library_fetch"
              ],
              "type": "string"
            },
            "reason": {
              "type": "string"
            },
            "confidence": {
              "type": "number"
            },
            "library_id": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Set only when this file did NOT come from this document's own extraction (a KiCad-library match or JEDEC/IPC-7351B math instead). null means the file was built from this document."
    },
    "manufacturer_part_number": {
      "type": [
        "string",
        "null"
      ],
      "description": "Resolved by the pipeline's identity resolution — not an echo of the input. See requested.part_name for what was sent."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_kicad_footprint annotations
{
  "title": "Extract KiCad PCB footprint (.kicad_mod)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_kicad_symbol — Extract KiCad schematic symbol (.kicad_sym)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Write a KiCad schematic symbol library (.kicad_sym) with logical pin groupings (Power, Ground, Reset, Clocks, GPIO, Analog, Bus interfaces) from a datasheet's pinout. Symbol layout is generated from the pin functions the pinout module resolved; there is no IEEE/IEC symbol-drawing standard applied. The emitted file is loaded with kicad-cli (sym upgrade) where it is installed, a file-format check, not a DRC or ERC.

datasheetvend_extract_kicad_symbol input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate package variants."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve).."
    },
    "packageSelection": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional package/variant (e.g. 'LQFP48', 'SOIC8', 'QFN32')."
    }
  }
}
datasheetvend_extract_kicad_symbol output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "manufacturer_part_number",
    "package_variant",
    "kicad_sym",
    "review",
    "warnings",
    "status",
    "bundle_status",
    "requested",
    "inputs",
    "status_detail",
    "human_warnings",
    "footprint_provenance",
    "symbol_provenance",
    "final_readiness"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "required": [
        "filename"
      ],
      "properties": {
        "filename": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Review reasons if required"
        },
        "required": {
          "type": "boolean",
          "description": "Whether human review is required"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "enum": [
        "COMPLETE",
        "PARTIAL",
        "NOT_PRESENT",
        "FAILED"
      ],
      "type": "string",
      "description": "The pipeline's own run status. FAILED means nothing usable was produced and the credits for this call are refunded automatically."
    },
    "contract": {
      "type": "string",
      "description": "Contract schema identifier: kicad_evidence_v1"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Engineering warnings emitted during generation"
    },
    "kicad_sym": {
      "type": [
        "string",
        "null"
      ],
      "description": "Complete KiCad schematic symbol (.kicad_sym) file content, or null if withheld/not produced."
    },
    "requested": {
      "type": "object",
      "required": [
        "part_name",
        "package_selection"
      ],
      "properties": {
        "part_name": {
          "type": [
            "string",
            "null"
          ]
        },
        "package_selection": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "description": "Exactly what the caller sent, kept distinct from the resolved identity above.",
      "additionalProperties": false
    },
    "bundle_status": {
      "anyOf": [
        {
          "enum": [
            "completed",
            "needs_review",
            "cannot_extract"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "completed = both requested files were proven against this document. needs_review = a run finished (or a fallback file was attached) without that proof. cannot_extract = nothing usable. null = the pipeline never reached a stage that could compute this."
    },
    "status_detail": {
      "type": "object",
      "required": [
        "gaps",
        "not_present_evidence",
        "failed"
      ],
      "properties": {
        "gaps": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "stage",
              "severity",
              "message"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "stage": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "severity": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "failed": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "stage",
                "reason",
                "recoverable"
              ],
              "properties": {
                "stage": {
                  "type": "string"
                },
                "reason": {
                  "type": "string"
                },
                "recoverable": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "not_present_evidence": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "pages_scanned",
                "strongest_score",
                "reason"
              ],
              "properties": {
                "reason": {
                  "type": "string"
                },
                "pages_scanned": {
                  "type": "array",
                  "items": {
                    "type": "number"
                  }
                },
                "strongest_score": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "human_warnings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "severity",
          "area",
          "message",
          "action"
        ],
        "properties": {
          "area": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "severity": {
            "enum": [
              "info",
              "review",
              "blocked"
            ],
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "final_readiness": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "physical_truth_approved",
            "syntax_valid",
            "native_kicad_valid",
            "placement_structurally_valid",
            "terminal_census_consistent",
            "package_identity_consistent",
            "dimension_evidence_coherent",
            "placement_reconciliation_authority",
            "blocking_reasons",
            "review_reasons"
          ],
          "properties": {
            "syntax_valid": {
              "type": "boolean",
              "description": "The emitted file is well-formed for its type (kicad-cli loaded it)."
            },
            "review_reasons": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "code",
                  "detail"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "Stable diagnostic code (never matched by prose)."
                  },
                  "detail": {
                    "type": "string",
                    "description": "Human-readable detail for this code."
                  }
                },
                "additionalProperties": false
              }
            },
            "blocking_reasons": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "code",
                  "detail"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "Stable diagnostic code (never matched by prose)."
                  },
                  "detail": {
                    "type": "string",
                    "description": "Human-readable detail for this code."
                  }
                },
                "additionalProperties": false
              }
            },
            "native_kicad_valid": {
              "type": "boolean",
              "description": "kicad-cli accepted the file. Tooling acceptance only, not a design-rule or electrical check."
            },
            "physical_truth_approved": {
              "type": "boolean",
              "description": "The artifact may be presented as physically true. This is the ONLY field that means 'proven correct' — kicad-cli acceptance alone does not."
            },
            "terminal_census_consistent": {
              "type": "boolean"
            },
            "dimension_evidence_coherent": {
              "type": "boolean"
            },
            "package_identity_consistent": {
              "type": "boolean"
            },
            "placement_structurally_valid": {
              "type": "boolean",
              "description": "The emitted pads reconcile with the resolved package's pad map."
            },
            "placement_reconciliation_authority": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The emit gate's full verdict. null when the pipeline never reached this stage."
    },
    "package_variant": {
      "type": [
        "string",
        "null"
      ],
      "description": "Resolved package code."
    },
    "symbol_provenance": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "tier",
            "confidence",
            "reason"
          ],
          "properties": {
            "tier": {
              "enum": [
                "local_synthesis",
                "library_fetch"
              ],
              "type": "string"
            },
            "reason": {
              "type": "string"
            },
            "confidence": {
              "type": "number"
            },
            "library_id": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Set only when this file did NOT come from this document's own extraction (a KiCad-library match or JEDEC/IPC-7351B math instead). null means the file was built from this document."
    },
    "footprint_provenance": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "tier",
            "confidence",
            "reason"
          ],
          "properties": {
            "tier": {
              "enum": [
                "local_synthesis",
                "library_fetch"
              ],
              "type": "string"
            },
            "reason": {
              "type": "string"
            },
            "confidence": {
              "type": "number"
            },
            "library_id": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Set only when this file did NOT come from this document's own extraction (a KiCad-library match or JEDEC/IPC-7351B math instead). null means the file was built from this document."
    },
    "manufacturer_part_number": {
      "type": [
        "string",
        "null"
      ],
      "description": "Resolved by the pipeline's identity resolution — not an echo of the input. See requested.part_name for what was sent."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_kicad_symbol annotations
{
  "title": "Extract KiCad schematic symbol (.kicad_sym)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_kicad_bundle — Extract complete KiCad CAD bundle
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Generate a KiCad footprint (.kicad_mod) and schematic symbol (.kicad_sym) from a datasheet in one call. Both files are loaded with kicad-cli where it is installed (a file-format check, not a DRC/ERC) and passed through the same deterministic copper, courtyard, pin-1 and pad-placement checks the dashboard uses. bundle_status "completed" means both files were independently proven against this document; "needs_review" means a file was produced (possibly from the KiCad library or JEDEC/IPC-7351B math instead of this document — see footprint_provenance/symbol_provenance) without that proof; "cannot_extract" means nothing usable was produced, and the credits for this call are refunded automatically (status FAILED).

datasheetvend_extract_kicad_bundle input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to disambiguate package variants."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve).."
    },
    "packageSelection": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional package/variant (e.g. 'LQFP48', 'SOIC8', 'QFN32')."
    }
  }
}
datasheetvend_extract_kicad_bundle output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "manufacturer_part_number",
    "package_variant",
    "files",
    "validation_report",
    "review",
    "warnings",
    "status",
    "bundle_status",
    "requested",
    "inputs",
    "status_detail",
    "human_warnings",
    "footprint_provenance",
    "symbol_provenance",
    "final_readiness"
  ],
  "properties": {
    "files": {
      "type": "object",
      "required": [
        "footprint_kicad_mod",
        "symbol_kicad_sym"
      ],
      "properties": {
        "symbol_kicad_sym": {
          "type": [
            "string",
            "null"
          ],
          "description": "Complete .kicad_sym content"
        },
        "footprint_kicad_mod": {
          "type": [
            "string",
            "null"
          ],
          "description": "Complete .kicad_mod content"
        }
      },
      "additionalProperties": false
    },
    "inputs": {
      "type": "object",
      "required": [
        "filename"
      ],
      "properties": {
        "filename": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Review reasons if required"
        },
        "required": {
          "type": "boolean",
          "description": "Whether human review is required"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "enum": [
        "COMPLETE",
        "PARTIAL",
        "NOT_PRESENT",
        "FAILED"
      ],
      "type": "string",
      "description": "The pipeline's own run status. FAILED means nothing usable was produced and the credits for this call are refunded automatically."
    },
    "contract": {
      "type": "string",
      "description": "Contract schema identifier: kicad_evidence_v1"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Engineering warnings"
    },
    "requested": {
      "type": "object",
      "required": [
        "part_name",
        "package_selection"
      ],
      "properties": {
        "part_name": {
          "type": [
            "string",
            "null"
          ]
        },
        "package_selection": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "description": "Exactly what the caller sent, kept distinct from the resolved identity above.",
      "additionalProperties": false
    },
    "bundle_status": {
      "anyOf": [
        {
          "enum": [
            "completed",
            "needs_review",
            "cannot_extract"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "completed = both requested files were proven against this document. needs_review = a run finished (or a fallback file was attached) without that proof. cannot_extract = nothing usable. null = the pipeline never reached a stage that could compute this."
    },
    "status_detail": {
      "type": "object",
      "required": [
        "gaps",
        "not_present_evidence",
        "failed"
      ],
      "properties": {
        "gaps": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "stage",
              "severity",
              "message"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "stage": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "severity": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "failed": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "stage",
                "reason",
                "recoverable"
              ],
              "properties": {
                "stage": {
                  "type": "string"
                },
                "reason": {
                  "type": "string"
                },
                "recoverable": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "not_present_evidence": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "pages_scanned",
                "strongest_score",
                "reason"
              ],
              "properties": {
                "reason": {
                  "type": "string"
                },
                "pages_scanned": {
                  "type": "array",
                  "items": {
                    "type": "number"
                  }
                },
                "strongest_score": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "human_warnings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "severity",
          "area",
          "message",
          "action"
        ],
        "properties": {
          "area": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "severity": {
            "enum": [
              "info",
              "review",
              "blocked"
            ],
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "final_readiness": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "physical_truth_approved",
            "syntax_valid",
            "native_kicad_valid",
            "placement_structurally_valid",
            "terminal_census_consistent",
            "package_identity_consistent",
            "dimension_evidence_coherent",
            "placement_reconciliation_authority",
            "blocking_reasons",
            "review_reasons"
          ],
          "properties": {
            "syntax_valid": {
              "type": "boolean",
              "description": "The emitted file is well-formed for its type (kicad-cli loaded it)."
            },
            "review_reasons": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "code",
                  "detail"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "Stable diagnostic code (never matched by prose)."
                  },
                  "detail": {
                    "type": "string",
                    "description": "Human-readable detail for this code."
                  }
                },
                "additionalProperties": false
              }
            },
            "blocking_reasons": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "code",
                  "detail"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "Stable diagnostic code (never matched by prose)."
                  },
                  "detail": {
                    "type": "string",
                    "description": "Human-readable detail for this code."
                  }
                },
                "additionalProperties": false
              }
            },
            "native_kicad_valid": {
              "type": "boolean",
              "description": "kicad-cli accepted the file. Tooling acceptance only, not a design-rule or electrical check."
            },
            "physical_truth_approved": {
              "type": "boolean",
              "description": "The artifact may be presented as physically true. This is the ONLY field that means 'proven correct' — kicad-cli acceptance alone does not."
            },
            "terminal_census_consistent": {
              "type": "boolean"
            },
            "dimension_evidence_coherent": {
              "type": "boolean"
            },
            "package_identity_consistent": {
              "type": "boolean"
            },
            "placement_structurally_valid": {
              "type": "boolean",
              "description": "The emitted pads reconcile with the resolved package's pad map."
            },
            "placement_reconciliation_authority": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The emit gate's full verdict. null when the pipeline never reached this stage."
    },
    "package_variant": {
      "type": [
        "string",
        "null"
      ],
      "description": "Resolved package code."
    },
    "symbol_provenance": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "tier",
            "confidence",
            "reason"
          ],
          "properties": {
            "tier": {
              "enum": [
                "local_synthesis",
                "library_fetch"
              ],
              "type": "string"
            },
            "reason": {
              "type": "string"
            },
            "confidence": {
              "type": "number"
            },
            "library_id": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Set only when this file did NOT come from this document's own extraction (a KiCad-library match or JEDEC/IPC-7351B math instead). null means the file was built from this document."
    },
    "validation_report": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ],
      "description": "kicad-cli file-load result (sym/fp upgrade — a format check, not a DRC)."
    },
    "footprint_provenance": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "tier",
            "confidence",
            "reason"
          ],
          "properties": {
            "tier": {
              "enum": [
                "local_synthesis",
                "library_fetch"
              ],
              "type": "string"
            },
            "reason": {
              "type": "string"
            },
            "confidence": {
              "type": "number"
            },
            "library_id": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Set only when this file did NOT come from this document's own extraction (a KiCad-library match or JEDEC/IPC-7351B math instead). null means the file was built from this document."
    },
    "manufacturer_part_number": {
      "type": [
        "string",
        "null"
      ],
      "description": "Resolved by the pipeline's identity resolution — not an echo of the input. See requested.part_name for what was sent."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_kicad_bundle annotations
{
  "title": "Extract complete KiCad CAD bundle",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_extract_altium_bundle — Parse an Altium Designer ASCII footprint export
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Parse an Altium Designer ASCII footprint export (a text file — NOT a binary .PcbLib/.SchLib) and extract the footprint name, per-pad copper geometry (designator, name, coordinates, size, shape), layer map, and this module's own review/audit verdict. This reads an EXISTING Altium file; it does not build one from a datasheet PDF (for that, see the Altium Assist output pack on a completed extraction job). No model call — deterministic parsing only.

datasheetvend_extract_altium_bundle input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional component name / MPN."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to an Altium ASCII footprint export (a text file, not a binary .PcbLib/.SchLib). The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them); a local filesystem path works solely in local stdio mode (npm run mcp:serve).."
    }
  }
}
datasheetvend_extract_altium_bundle output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "manufacturer_part_number",
    "footprint_name",
    "pads",
    "review",
    "warnings",
    "status",
    "delivery_status",
    "warning_details",
    "units",
    "source_format_detected",
    "footprints_detected",
    "other_footprint_names",
    "layer_map"
  ],
  "properties": {
    "pads": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "designator",
          "name",
          "x",
          "y",
          "width",
          "height",
          "shape"
        ],
        "properties": {
          "x": {
            "type": [
              "number",
              "null"
            ],
            "description": "Pad center X, exactly as written in the source file — see units. Never converted."
          },
          "y": {
            "type": [
              "number",
              "null"
            ],
            "description": "Pad center Y, exactly as written in the source file — see units. Never converted."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pad signal name"
          },
          "shape": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pad shape (ROUND, RECTANGULAR, OCTAGONAL, SMD)"
          },
          "width": {
            "type": [
              "number",
              "null"
            ],
            "description": "Pad copper width, exactly as written in the source file — see units. Never converted."
          },
          "height": {
            "type": [
              "number",
              "null"
            ],
            "description": "Pad copper height, exactly as written in the source file — see units. Never converted."
          },
          "designator": {
            "type": "string",
            "description": "Pad designator / pin number"
          }
        },
        "additionalProperties": false
      }
    },
    "units": {
      "enum": [
        "mm",
        "mil",
        "inch",
        "unknown"
      ],
      "type": "string",
      "description": "Coordinate/size units exactly as the source file stated them. Values are NEVER converted — 'unknown' means the file did not state a unit, not that the numbers are millimetres."
    },
    "review": {
      "type": "object",
      "required": [
        "required",
        "reasons"
      ],
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Review reasons if required"
        },
        "required": {
          "type": "boolean",
          "description": "Whether human review is required"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "enum": [
        "OK",
        "FAILED"
      ],
      "type": "string",
      "description": "FAILED means the credits for this call are refunded automatically: the file was unreadable, a recognized-but-unsupported format, or contained no footprint."
    },
    "contract": {
      "type": "string",
      "description": "Contract schema identifier: altium_evidence_v1"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Engineering warnings emitted"
    },
    "layer_map": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "layer",
          "pad_count",
          "line_count",
          "text_count"
        ],
        "properties": {
          "layer": {
            "type": "string"
          },
          "pad_count": {
            "type": "number"
          },
          "line_count": {
            "type": "number"
          },
          "text_count": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "footprint_name": {
      "type": [
        "string",
        "null"
      ],
      "description": "Extracted Altium footprint pattern name"
    },
    "delivery_status": {
      "anyOf": [
        {
          "enum": [
            "approved",
            "approved_with_warnings",
            "blocked"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "The module's own audit verdict for this file — the same one a REST/dashboard job would carry."
    },
    "warning_details": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "code",
          "severity",
          "message"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "severity": {
            "enum": [
              "critical",
              "review",
              "info"
            ],
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "footprints_detected": {
      "type": "number",
      "description": "How many footprint blocks the file contained. Only one (the best match) is returned above."
    },
    "other_footprint_names": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Names of the OTHER footprints in the file, not returned above — nothing is silently dropped."
    },
    "source_format_detected": {
      "enum": [
        "line_block_ascii",
        "record_pipe_ascii",
        "ole_compound_binary",
        "unrecognized_text"
      ],
      "type": "string",
      "description": "line_block_ascii is the only format this tool actually reads."
    },
    "manufacturer_part_number": {
      "type": [
        "string",
        "null"
      ],
      "description": "The partName you sent, or the component name text found in the file — never the footprint's own name."
    }
  },
  "additionalProperties": false
}
datasheetvend_extract_altium_bundle annotations
{
  "title": "Parse an Altium Designer ASCII footprint export",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_list_hardware_modules — List the hardware intelligence modules
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all available hardware extraction modules supported by DatasheetVend (KiCad footprints/symbols, Universal Pinout, Thermal Limits, Absolute Maximum Ratings, Timing Characteristics, Logic Levels, Register Maps, Decoupling Passive BOM, Part Number Decoders, etc.).

datasheetvend_list_hardware_modules input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
datasheetvend_list_hardware_modules output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "total_modules",
    "modules"
  ],
  "properties": {
    "modules": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "module_id",
          "schema_version",
          "status",
          "description",
          "notes"
        ],
        "properties": {
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Engineering specifications"
          },
          "status": {
            "type": "string",
            "description": "Deployment status"
          },
          "module_id": {
            "type": "string",
            "description": "Unique module identifier"
          },
          "description": {
            "type": "string",
            "description": "Module description and engineering outputs"
          },
          "schema_version": {
            "type": "string",
            "description": "Schema contract version"
          }
        },
        "additionalProperties": false
      }
    },
    "total_modules": {
      "type": "number",
      "description": "Total number of available hardware extraction modules"
    }
  },
  "additionalProperties": false
}
datasheetvend_list_hardware_modules annotations
{
  "title": "List the hardware intelligence modules",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_list_component_twins — List your datasheets that have a component twin
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the datasheets in your DatasheetVend account that have a Unified Component Model (UCM) digital twin: the facts DatasheetVend already extracted from each datasheet — pins, supply rails, interfaces, registers and whole-part limits — combined across the extraction runs stored for it. Returns each datasheet's exact name, the modules its twin draws on, how many runs it has and when it was last run. Reads stored results only: never extracts, never bills. Needs a DatasheetVend API key. Pass a returned name to datasheetvend_get_component_twin. To twin a datasheet the account has not extracted, use datasheetvend_build_component_twin.

datasheetvend_list_component_twins input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "How many datasheets to return, newest run first. Default 20."
    },
    "search": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Part of the datasheet's file name to filter by, case-insensitive (for example 'ATmega328P')."
    }
  }
}
datasheetvend_list_component_twins output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "total",
    "datasheets",
    "next_step"
  ],
  "properties": {
    "total": {
      "type": "number",
      "description": "Datasheets with a twin that match, before the limit"
    },
    "contract": {
      "type": "string",
      "description": "Contract id: ucm_twin_list_v1"
    },
    "next_step": {
      "type": "string"
    },
    "datasheets": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "datasheet",
          "modules",
          "module_count",
          "runs",
          "last_run_at",
          "never_extracted"
        ],
        "properties": {
          "runs": {
            "type": "number",
            "description": "Extraction runs stored for this datasheet"
          },
          "modules": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Module ids with stored output for this datasheet"
          },
          "datasheet": {
            "type": "string",
            "description": "Exact datasheet name — pass it to the get tool"
          },
          "last_run_at": {
            "type": "string",
            "description": "ISO time of the newest run"
          },
          "module_count": {
            "type": "number"
          },
          "never_extracted": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Twin-ready modules never extracted for this datasheet"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
datasheetvend_list_component_twins annotations
{
  "title": "List your datasheets that have a component twin",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_get_component_twin — Read a datasheet's component twin
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read the Unified Component Model (UCM) digital twin of one datasheet already extracted with DatasheetVend. Every fact comes with a check ('passed', 'needs_review', 'disagrees', 'failed_sanity_check') and, where the extraction recorded one, its datasheet page, filed where it belongs: pins, whole_part (temperatures, absolute limits, package, ordering code), interfaces_rails (I2C/SPI/clock/ADC requirements and supply-rail values), registers (the register map) and checks. Call it first with no options for the summary, then ask for `sections`, one `pin` (by number, name or alternate function) or a `search` term so the answer stays small. Treat facts that did not pass as unverified and cite their page. Reads stored results only: never extracts, never bills. Needs a DatasheetVend API key; find datasheet names with datasheetvend_list_component_twins. To twin a datasheet the account has not extracted, use datasheetvend_build_component_twin.

datasheetvend_get_component_twin input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "datasheet"
  ],
  "properties": {
    "pin": {
      "type": "string",
      "maxLength": 40,
      "minLength": 1,
      "description": "One pin by number, name or alternate function (for example '27', 'PC4' or 'SDA'): every fact that reaches it — its own and those of its rails and interfaces."
    },
    "search": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1,
      "description": "Only facts whose parameter, symbol, statement or node contains this text, case-insensitive (for example 'storage temperature' or 'TWCR'). With no sections given, searches pins, whole_part, interfaces_rails and registers."
    },
    "sections": {
      "type": "array",
      "items": {
        "enum": [
          "pins",
          "whole_part",
          "interfaces_rails",
          "registers",
          "checks"
        ],
        "type": "string"
      },
      "maxItems": 5,
      "description": "Parts of the twin to include besides the summary: pins (each pin's own facts), whole_part, interfaces_rails, registers, checks (disagreements, failed sanity checks, facts to review, facts that name no pin). Omit for the summary only."
    },
    "datasheet": {
      "type": "string",
      "maxLength": 260,
      "minLength": 1,
      "description": "The datasheet name exactly as datasheetvend_list_component_twins returns it. A unique part of the name also works."
    },
    "max_facts": {
      "type": "integer",
      "maximum": 1000,
      "minimum": 1,
      "description": "Cap on facts returned across the pin and sections (default 200). `truncated` says when it was reached."
    },
    "only_passed": {
      "type": "boolean",
      "description": "Only facts that passed every check. Default false: every fact comes with its check."
    }
  }
}
datasheetvend_get_component_twin output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "datasheet",
    "part",
    "built_from",
    "counts",
    "checks",
    "places",
    "how_to_read",
    "sections",
    "pin",
    "truncated",
    "warnings"
  ],
  "properties": {
    "pin": {
      "description": "The requested pin with the facts that reach it, or null when no pin was asked for."
    },
    "part": {
      "type": "object",
      "required": [
        "part_number",
        "vendor",
        "family",
        "package",
        "package_pin_count"
      ],
      "properties": {
        "family": {
          "type": [
            "string",
            "null"
          ]
        },
        "vendor": {
          "type": [
            "string",
            "null"
          ]
        },
        "package": {
          "type": [
            "string",
            "null"
          ]
        },
        "part_number": {
          "type": [
            "string",
            "null"
          ]
        },
        "package_pin_count": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "checks": {
      "type": "object",
      "required": [
        "passed",
        "needs_review",
        "disagrees",
        "failed_sanity_check",
        "disagreements"
      ],
      "properties": {
        "passed": {
          "type": "number"
        },
        "disagrees": {
          "type": "number"
        },
        "needs_review": {
          "type": "number"
        },
        "disagreements": {
          "type": "number",
          "description": "Parameters holding more than one value"
        },
        "failed_sanity_check": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "counts": {
      "type": "object",
      "required": [
        "facts",
        "pins",
        "rails",
        "interfaces",
        "registers"
      ],
      "properties": {
        "pins": {
          "type": "number"
        },
        "facts": {
          "type": "number"
        },
        "rails": {
          "type": "number"
        },
        "registers": {
          "type": "number"
        },
        "interfaces": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "places": {
      "type": "object",
      "required": [
        "on_pins",
        "whole_part",
        "interfaces",
        "rails",
        "registers",
        "not_placed"
      ],
      "properties": {
        "rails": {
          "type": "number"
        },
        "on_pins": {
          "type": "number"
        },
        "registers": {
          "type": "number"
        },
        "interfaces": {
          "type": "number"
        },
        "not_placed": {
          "type": "number"
        },
        "whole_part": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "contract": {
      "type": "string",
      "description": "Contract id: ucm_twin_v1"
    },
    "sections": {
      "type": "object",
      "description": "The requested sections: pins, whole_part, interfaces_rails, registers, checks — facts with their check and, where recorded, their page.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "datasheet": {
      "type": "string"
    },
    "truncated": {
      "type": "boolean"
    },
    "built_from": {
      "type": "object",
      "required": [
        "modules",
        "runs"
      ],
      "properties": {
        "runs": {
          "type": "number",
          "description": "Extraction runs the twin draws on"
        },
        "modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Module ids combined into this twin"
        }
      },
      "additionalProperties": false
    },
    "how_to_read": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
datasheetvend_get_component_twin annotations
{
  "title": "Read a datasheet's component twin",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
datasheetvend_build_component_twin — Extract a datasheet into a component twin
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Extract a datasheet with DatasheetVend Fast Extraction and return its Unified Component Model (UCM) digital twin in one call. Fast Extraction runs once for every requested module, and the modules' facts combine into one twin, filed where they belong: pins, whole_part (temperatures, absolute limits, package, ordering code), interfaces_rails, registers and checks — every fact with a check ('passed', 'needs_review', 'disagrees', 'failed_sanity_check') and, where recorded, its datasheet page. Returns the same ucm_twin_v1 view as datasheetvend_get_component_twin, with every section unless you ask for sections, one pin or a search, plus an `extraction` block: the engine, `rescued_features` (modules Fast Extraction could not complete at turbo speed that the standard deep engine extracted instead, slower for just those modules -- still billed and still in the twin), the modules NEITHER engine could extract (no credits charged for those), the credits charged and stored=false. Treat facts that did not pass as unverified and cite their page. The twin is NOT saved to your account: datasheetvend_get_component_twin and the dashboard will not find it, and calling again extracts and bills again. Needs a DatasheetVend API key. Costs the requested modules' credits: pinout (1 credit), absolute_max (2 credits), pin_cautions (2 credits), logic_levels (2 credits), thermal (2 credits), timing (2 credits), register_map (3 credits), peripheral_matrix (2 credits), power_battery (1 credit), part_decoder (2 credits), cad_normalized (1 credit, extracted as footprint); all of them 20 credits.

datasheetvend_build_component_twin input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "documentPath"
  ],
  "properties": {
    "pin": {
      "type": "string",
      "maxLength": 40,
      "minLength": 1,
      "description": "One pin by number, name or alternate function (for example '27', 'PC4' or 'SDA'): every fact that reaches it — its own and those of its rails and interfaces."
    },
    "search": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1,
      "description": "Only facts whose parameter, symbol, statement or node contains this text, case-insensitive (for example 'storage temperature' or 'TWCR'). With no sections given, searches pins, whole_part, interfaces_rails and registers."
    },
    "modules": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40,
        "minLength": 1
      },
      "maxItems": 20,
      "minItems": 1,
      "description": "Twin modules to extract and combine: pinout, absolute_max, pin_cautions, logic_levels, thermal, timing, register_map, peripheral_matrix, power_battery, part_decoder, cad_normalized. Omit for all of them. Each costs its module credits."
    },
    "partName": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional part number / MPN to target in a datasheet that covers several parts."
    },
    "sections": {
      "type": "array",
      "items": {
        "enum": [
          "pins",
          "whole_part",
          "interfaces_rails",
          "registers",
          "checks"
        ],
        "type": "string"
      },
      "maxItems": 5,
      "description": "Parts of the twin to include besides the summary: pins, whole_part, interfaces_rails, registers, checks. Omit, with no pin or search, for every section — this twin is not stored, so there is no second read."
    },
    "max_facts": {
      "type": "integer",
      "maximum": 1000,
      "minimum": 1,
      "description": "Cap on facts returned across the pin and sections (default 200). `truncated` says when it was reached."
    },
    "only_passed": {
      "type": "boolean",
      "description": "Only facts that passed every check. Default false: every fact comes with its check."
    },
    "documentPath": {
      "type": "string",
      "minLength": 1,
      "description": "https:// URL to the datasheet PDF. The remote /api/mcp endpoint accepts ONLY https:// URLs (it downloads them)."
    }
  }
}
datasheetvend_build_component_twin output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "contract",
    "datasheet",
    "part",
    "built_from",
    "counts",
    "checks",
    "places",
    "how_to_read",
    "sections",
    "pin",
    "truncated",
    "warnings",
    "extraction"
  ],
  "properties": {
    "pin": {
      "description": "The requested pin with the facts that reach it, or null when no pin was asked for."
    },
    "part": {
      "type": "object",
      "required": [
        "part_number",
        "vendor",
        "family",
        "package",
        "package_pin_count"
      ],
      "properties": {
        "family": {
          "type": [
            "string",
            "null"
          ]
        },
        "vendor": {
          "type": [
            "string",
            "null"
          ]
        },
        "package": {
          "type": [
            "string",
            "null"
          ]
        },
        "part_number": {
          "type": [
            "string",
            "null"
          ]
        },
        "package_pin_count": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "checks": {
      "type": "object",
      "required": [
        "passed",
        "needs_review",
        "disagrees",
        "failed_sanity_check",
        "disagreements"
      ],
      "properties": {
        "passed": {
          "type": "number"
        },
        "disagrees": {
          "type": "number"
        },
        "needs_review": {
          "type": "number"
        },
        "disagreements": {
          "type": "number",
          "description": "Parameters holding more than one value"
        },
        "failed_sanity_check": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "counts": {
      "type": "object",
      "required": [
        "facts",
        "pins",
        "rails",
        "interfaces",
        "registers"
      ],
      "properties": {
        "pins": {
          "type": "number"
        },
        "facts": {
          "type": "number"
        },
        "rails": {
          "type": "number"
        },
        "registers": {
          "type": "number"
        },
        "interfaces": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "places": {
      "type": "object",
      "required": [
        "on_pins",
        "whole_part",
        "interfaces",
        "rails",
        "registers",
        "not_placed"
      ],
      "properties": {
        "rails": {
          "type": "number"
        },
        "on_pins": {
          "type": "number"
        },
        "registers": {
          "type": "number"
        },
        "interfaces": {
          "type": "number"
        },
        "not_placed": {
          "type": "number"
        },
        "whole_part": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "contract": {
      "type": "string",
      "description": "Contract id: ucm_twin_v1"
    },
    "sections": {
      "type": "object",
      "description": "The requested sections: pins, whole_part, interfaces_rails, registers, checks — facts with their check and, where recorded, their page.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "datasheet": {
      "type": "string"
    },
    "truncated": {
      "type": "boolean"
    },
    "built_from": {
      "type": "object",
      "required": [
        "modules",
        "runs"
      ],
      "properties": {
        "runs": {
          "type": "number",
          "description": "Extraction runs the twin draws on"
        },
        "modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Module ids combined into this twin"
        }
      },
      "additionalProperties": false
    },
    "extraction": {
      "type": "object",
      "required": [
        "engine",
        "requested_modules",
        "extracted_features",
        "credits",
        "stored",
        "rescued_features"
      ],
      "properties": {
        "engine": {
          "type": "object",
          "required": [
            "name",
            "runtime",
            "duration_ms",
            "lanes",
            "failed_modules"
          ],
          "properties": {
            "name": {
              "type": "string",
              "description": "The engine the extraction started on: always \"fast_extraction\" (runtime says what answered)"
            },
            "lanes": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "module",
                  "lane",
                  "reason"
                ],
                "properties": {
                  "lane": {
                    "type": "string",
                    "description": "deterministic_primary, worker_with_deterministic_brain, deterministic_recovery, worker_only, or monolith_rescue"
                  },
                  "module": {
                    "type": "string"
                  },
                  "reason": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "description": "How each module was answered, where the engine recorded it"
            },
            "runtime": {
              "type": [
                "string",
                "null"
              ],
              "description": "The runtime that answered: the Fast Extraction runtime, or \"monolith_rescue\" when the deep engine re-ran this module; null when no engine could run"
            },
            "duration_ms": {
              "type": "number",
              "description": "Wall time of the extraction in milliseconds"
            },
            "failed_modules": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Modules that came back without a result: Fast Extraction could not extract them, and neither could the per-module deep-engine rescue where one was attempted"
            }
          },
          "description": "Which engine produced this result",
          "additionalProperties": false
        },
        "stored": {
          "type": "boolean",
          "description": "Always false: the twin is not saved to the account"
        },
        "credits": {
          "type": "number",
          "description": "Module credits this call costs an API-key caller"
        },
        "rescued_features": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Features Fast Extraction could not complete at turbo speed but the standard deep engine rescued; empty when every feature came from the fast lane"
        },
        "requested_modules": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Twin modules this call asked Fast Extraction for"
        },
        "extracted_features": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The extraction features those modules needed"
        }
      },
      "description": "The Fast Extraction run behind this twin",
      "additionalProperties": false
    },
    "how_to_read": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
datasheetvend_build_component_twin annotations
{
  "title": "Extract a datasheet into a component twin",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
2337 ms
95th percentile latency
2337 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 2337 ms · metadata changed · 24 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http datasheetvend-mcp https://datasheetvend.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add datasheetvend-mcp --url https://datasheetvend.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable datasheetvend-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "datasheetvend-mcp": {
      "url": "https://datasheetvend.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "datasheetvend-mcp": {
      "type": "streamableHttp",
      "url": "https://datasheetvend.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start datasheetvend-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "datasheetvend-mcp": {
      "type": "http",
      "url": "https://datasheetvend.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http datasheetvend-mcp https://datasheetvend.com/api/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "datasheetvend-mcp": {
      "url": "https://datasheetvend.com/api/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "datasheetvend-mcp": {
      "serverUrl": "https://datasheetvend.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like DatasheetVend MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run DatasheetVend MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing