Server definition
- Hash
- sha256:48b5afa0c6d2f2d0b769889eb7ed973fa25361e1623d084e2febdc9960d1973d
- What it is
- What a remote MCP server returned when asked what it offers: 7 tools
The blob, as servednamed by its sha256
{
"instructions": "whatic answers hardware-engineering questions about integrated circuits from a curated datasheet corpus (MCU, analog, power and comms parts), a canonical parametric spec index built from those datasheets, and a distributor pricing snapshot.\n\nReach for these tools whenever a question turns on a real component: a spec value, a register or pin detail, a shortlist by parameter, or a relative cost and availability check. Answers come from indexed datasheet content with a citable source, so prefer them over recall for any number you are about to state.\n\nRouting:\n- Part known, need a spec or section: `lookup` — full content grouped per part in one call.\n- Part unknown, or triaging first: `search`, then `get_segments` on the `ref` tokens worth reading in full.\n- Numeric parameters: `get_specs` is the cheapest and most precise source where the index covers the part.\n- Selecting against requirements: `find_parts`, then `compare_parts` to break ties on cost and sourcing.\n- Figures and plots: `get_image` on a `ref`.\n\nGrounding: cite the part and page of the record a claim came from; its `ref` re-fetches the exact segment. `get_specs` values carry no source reference — when a number needs a citable source, confirm it with `lookup`. If a value is not in what you fetched, say so rather than inferring it. A part missing from `get_specs` means the index lacks coverage, not that the datasheet lacks the parameter — fall back to `lookup`.\n\n`compare_parts` returns relative tiers from a snapshot: never restate them as a live price, a currency amount, or a stock count.",
"tools": [
{
"description": "Relative price tier, stock posture, and library class for a set of IC part\nnumbers (a ranking from a distributor snapshot, not a live quote).",
"inputSchema": {
"properties": {
"parts": {
"description": "Two or more IC part numbers to rank relatively; needs >=2 priced parts for a verdict.",
"items": {
"type": "string"
},
"title": "Parts",
"type": "array"
}
},
"required": [
"parts"
],
"title": "compare_partsArguments",
"type": "object"
},
"name": "compare_parts",
"outputSchema": {
"additionalProperties": true,
"title": "compare_partsDictOutput",
"type": "object"
}
},
{
"description": "Shortlist IC part numbers by parametric spec constraints, ranked by how many constraints each part satisfies, then by headroom past those thresholds, and spread across device families. Each constraint is {canonical, op: gte|lte|eq|range, value, unit?}. Returns per-constraint pass/fail/unknown, plus `matched` (parts meeting EVERY constraint), `ranked` (all parts scored, partial matches included) and `returned` (parts in this response). `truncated` means some qualifying parts are not on this page. When `matched` is 0 every result is a partial match. `canonical` MUST be one of the exact (case-sensitive) names enumerated in this tool's inputSchema, also readable as the whatic://parametric/canonicals resource.",
"inputSchema": {
"$defs": {
"Constraint": {
"description": "One parametric spec constraint for find_parts.",
"properties": {
"canonical": {
"description": "Canonical parameter name, e.g. supply_voltage_range — must be one of the values enumerated for this field (also readable as the whatic://parametric/canonicals resource).",
"enum": [
"abs_max_current",
"abs_max_voltage",
"adc_resolution",
"block_erase_time",
"breakdown_voltage_ds",
"channel_count",
"clamping_voltage",
"clock_frequency",
"cmrr",
"cmti",
"coil_power",
"coil_resistance",
"coil_voltage",
"collector_emitter_voltage",
"contact_current",
"contact_resistance",
"core_size",
"cpu_speed",
"current_rating",
"dark_current",
"data_rate",
"data_retention",
"dc_resistance",
"drain_current",
"driver_count",
"dropout_voltage",
"dynamic_range",
"eeprom_size",
"emitter_base_voltage",
"fall_time",
"forward_current",
"forward_voltage",
"gain_bandwidth",
"gate_charge",
"impedance",
"input_bias_current",
"input_capacitance",
"input_offset_current",
"input_offset_current_drift",
"input_offset_voltage",
"input_offset_voltage_drift",
"input_voltage_noise_density",
"insertion_loss",
"io_count",
"isolation_voltage",
"junction_capacitance",
"load_capacitance",
"memory_size",
"operate_time",
"operating_frequency",
"operating_temperature",
"output_capacitance",
"output_count",
"output_current",
"output_noise_voltage",
"output_power",
"output_voltage",
"output_voltage_high",
"output_voltage_low",
"page_program_time",
"peak_pulse_current",
"power_dissipation",
"program_erase_cycles",
"program_memory_size",
"propagation_delay",
"psrr",
"quiescent_current",
"ram_size",
"rds_on",
"receiver_count",
"rectified_current",
"release_time",
"response_time",
"reverse_leakage_current",
"reverse_recovery_time",
"reverse_transfer_capacitance",
"reverse_voltage",
"rise_time",
"sample_rate",
"sector_erase_time",
"sensitivity",
"settling_time",
"slew_rate",
"standby_current",
"supply_voltage_range",
"switching_frequency",
"switching_voltage",
"vgs_threshold",
"zener_voltage"
],
"title": "Canonical",
"type": "string"
},
"op": {
"description": "Comparison: gte (>=), lte (<=), eq (==), or range (value within [low, high]).",
"enum": [
"gte",
"lte",
"eq",
"range"
],
"title": "Op",
"type": "string"
},
"unit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Informational unit only, e.g. 'V', 'A' — comparison uses the stored SI value.",
"title": "Unit"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"items": {
"type": "number"
},
"type": "array"
}
],
"description": "A single number for gte/lte/eq; a two-element [low, high] array for range.",
"title": "Value"
}
},
"required": [
"canonical",
"op",
"value"
],
"title": "Constraint",
"type": "object"
}
},
"properties": {
"constraints": {
"description": "Spec constraints; a part is ranked by how many it satisfies.",
"items": {
"$ref": "#/$defs/Constraint"
},
"title": "Constraints",
"type": "array"
},
"top_k": {
"default": 50,
"description": "Maximum number of parts to return, best first.",
"title": "Top K",
"type": "integer"
}
},
"required": [
"constraints"
],
"title": "find_partsArguments",
"type": "object"
},
"name": "find_parts",
"outputSchema": {
"additionalProperties": true,
"title": "find_partsDictOutput",
"type": "object"
}
},
{
"description": "Fetch datasheet figure images (PNG/JPEG) for opaque `ref` tokens obtained\nfrom search/lookup/get_segments. Returns each image plus its caption/description/page\nmetadata. Only `type='image'` segments have image data; a ref that is not one comes\nback as an error record whose `available_images` lists the document's figures nearest\nthat ref's page and section, closest first.",
"inputSchema": {
"properties": {
"refs": {
"description": "Opaque `ref` tokens (from search/lookup/get_segments) of image segments; non-image segments return an error record.",
"items": {
"type": "string"
},
"title": "Refs",
"type": "array"
}
},
"required": [
"refs"
],
"title": "get_imageArguments",
"type": "object"
},
"name": "get_image",
"outputSchema": null
},
{
"description": "Expand opaque `ref` tokens (from search/lookup) into full datasheet segment\ncontent.",
"inputSchema": {
"properties": {
"refs": {
"description": "Opaque `ref` tokens from search/lookup hit records, to expand into full segment content.",
"items": {
"type": "string"
},
"title": "Refs",
"type": "array"
}
},
"required": [
"refs"
],
"title": "get_segmentsArguments",
"type": "object"
},
"name": "get_segments",
"outputSchema": {
"additionalProperties": true,
"title": "get_segmentsDictOutput",
"type": "object"
}
},
{
"description": "Read canonical extracted specs (min/typ/max, unit, conditions) for known\nIC part numbers from a pre-extracted parametric index — not from datasheet text.\nThis is the cheapest and most precise source for numeric parameters where it has\ncoverage. Optionally restrict to specific canonical parameter names.\nA part absent from `results` (with a \"No specs found\" warning) means no index\ncoverage, not that the datasheet lacks the parameter — fall back to `lookup`\nfor that part.",
"inputSchema": {
"properties": {
"canonicals": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional: restrict to these canonical parameter names; omit to return all available specs.",
"title": "Canonicals"
},
"part_numbers": {
"description": "Exact IC part numbers / MPNs, e.g. ['NE5532', 'LM358']. Family fallback is applied (e.g. TL084CDT -> TL084C).",
"items": {
"type": "string"
},
"title": "Part Numbers",
"type": "array"
}
},
"required": [
"part_numbers"
],
"title": "get_specsArguments",
"type": "object"
},
"name": "get_specs",
"outputSchema": {
"additionalProperties": true,
"title": "get_specsDictOutput",
"type": "object"
}
},
{
"description": "One-shot spec/section retrieval: full content of the most relevant datasheet\nsegments for one or more parts (fuses search+get_segments). Already groups results per\npart (via `parts`), so prefer `lookup` over `search` when you know the part(s).",
"inputSchema": {
"properties": {
"parts": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Part numbers to scope and group the retrieval by; results are returned per part.",
"title": "Parts"
},
"query": {
"description": "What to retrieve, e.g. 'supply voltage' or 'absolute maximum ratings'.",
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "lookupArguments",
"type": "object"
},
"name": "lookup",
"outputSchema": {
"additionalProperties": true,
"title": "lookupDictOutput",
"type": "object"
}
},
{
"description": "Search the datasheet corpus; returns hit records (metadata + snippet, each\nwith an opaque `ref`). Pass a ref list to `get_segments` for full content.\nIf you already know the part number(s), prefer `lookup` — it fuses this search\nwith `get_segments` in one call and groups full content per part. Use `search`\nwhen the part is unknown, or to triage snippets before pulling full content.\nFor part-specific queries, pass scope='device:<MPN>' (e.g. scope='device:NE5532')\nto restrict hits to that part and avoid cross-part contamination.",
"inputSchema": {
"properties": {
"k": {
"default": 5,
"description": "Maximum number of hit records to return.",
"title": "K",
"type": "integer"
},
"q": {
"description": "Free-text query, e.g. 'input voltage noise density'.",
"title": "Q",
"type": "string"
},
"scope": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional filter, e.g. 'device:NE5532', to restrict hits to one part and avoid cross-part matches.",
"title": "Scope"
}
},
"required": [
"q"
],
"title": "searchArguments",
"type": "object"
},
"name": "search",
"outputSchema": {
"additionalProperties": true,
"title": "searchDictOutput",
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:48b5afa0c6d2f2d0b769889eb7ed973fa25361e1623d084e2febdc9960d1973d | sha256sum