Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,541Letters: 14Defects: 1,323counted 1 min ago
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:48b5afa0c6d2f2d0b769889eb7ed973fa25361e1623d084e2febdc9960d1973d | sha256sum