MCP server for URDB — 76 electronics, hardware and firmware calculators (resistor codes, 555 timers, PCB trace width, CRC, UART baud rates, CAN bit timing, LoRa airtime) plus the product integrity database tracking downgrades, shrinkflation and enshittification.
The server defines 5 tools across two categories: 4 product-integrity tools (hardcoded in PRODUCT_TOOLS array) and 1 calculator tool (calc_uart_baud_rate, loaded dynamically). Product tools have clear, descriptive names following verb_noun convention and detailed descriptions (150 - 250 chars). All parameters are typed with descriptions. However, the calculator tool is referenced only in a smoke test file (scripts/smoke.mjs) and is not explicitly visible in the main source registration, it's inferred to exist through dynamic loading from /api/v1/tools. This creates ambiguity about its schema visibility at evaluation time. Output schemas are not documented in tool definitions, callers must infer response structure from descriptions alone. Error handling is basic (generic HTTP error messages). No tool annotations (readOnlyHint, destructiveHint) present. No pagination guidance in list/search tools despite potential for large result sets.
Register value and percentage error for any MCU clock and baud rate. Formula: UBRR = f/(16·baud) − 1.
Get documented enshittification events for a product — firmware regressions, warranty cuts, added subscriptions, material downgrades. All sourced and evidence-backed.
Get full integrity breakdown for a specific product — scores across 7 dimensions (durability, repairability, material quality, version stability, anti-shrinkflation, firmware lock-in, ownership integrity), plus change event and recall counts.
List products filtered by category, brand, or score range. Use for recommendations like 'best integrity laptops' or 'washing machines above 70'.
Search URDB for consumer products by name or keyword. Returns products with integrity scores (0-100). Use this first when the user asks about a product or wants product recommendations.
calc_uart_baud_rate tool definition not directly visible in source code, exists only as dynamic load from /api/v1/tools endpoint. Schema and full description cannot be verified from static analysis.
No output/response schemas documented for any tool. LLMs must infer response structure from description text alone, which is error-prone and prevents downstream tool chaining validation.
urdb_search and urdb_list_products have no pagination parameters (limit, offset, page_size, cursor). Description mentions 'Returns products' but places no bound on result count. Large searches could exhaust context windows.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. All tools are read-only but this is not explicitly declared in schema.
Error responses lack recovery guidance. HTTP errors are wrapped minimally (only message text extracted). No categorization of errors as retryable vs user-fixable vs fatal.