compatsy home espresso
Server Details
What fits, with live prices: specs, fit verdicts with rule ids and stock for home espresso.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- elliot-rosen/compatsy-mcp
- GitHub Stars
- 0
- Server Listing
- compatsy-mcp
TDQS
Scored across 6 tools
Each tool has a distinct core purpose: search, detail, multi-product comparison, fit verdict, stock check, and issue reporting. The only soft overlap is between check_stock and get_product, since get_product also surfaces every offer with verified timestamps and a price range, so an agent might pick either for pricing questions. Descriptions largely resolve this by framing check_stock as per-merchant live availability.
Five of six tools follow a clean verb_noun pattern (check_fit, check_stock, get_product, report_issue, search_products). The lone exception is 'compare', a bare verb with no object, which is a minor but noticeable deviation.
Six tools is well-scoped for a product-compatibility and pricing service. Each tool maps to a genuinely separate user need (discover, inspect, compare, verify fit, verify stock, report errors), with no filler tools.
The surface covers the main lifecycle: discovery via search_products, inspection via get_product, comparison via compare, two verification paths (check_fit, check_stock), and a feedback loop (report_issue). Minor gaps exist — check_fit returns a rule id but there is no tool to fetch rule details, and there is no way to list categories, merchants, or brands explicitly.
Available Tools
6 toolscheck_fitCheck fitARead-onlyIdempotentInspect
Does this part fit that machine? Returns a verdict with the rule id and version that decided it, or the missing fields. Example: {"subject_id":"e3d-v6-brass-0-4","target_id":"prusa-mk4s"}
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | Printer or hotend id or slug | |
| subject_id | Yes | Part id or slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context by explaining the return: a verdict with the rule id and version that decided it, or the missing fields. This goes beyond the annotations and gives the agent useful output semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core question, then immediately states the return format and gives a compact example. Every sentence earns its place with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, read-only compatibility check with no output schema, the description is complete enough: it states the purpose, the return value (verdict, rule id/version, or missing fields), and provides an example call. Annotations handle safety, and the schema handles parameter typing, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters as part id/slug and printer/hotend id/slug. The description's example showing concrete IDs adds a small amount of format guidance, but it does not provide deeper semantics beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb+resource: checking whether a part fits a machine. It is distinct from siblings like check_stock or get_product, but it does not explicitly name an alternative such as compare, leaving some ambiguity about when to choose this over a general comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the question format and the example, but there is no explicit guidance on when to use this tool versus alternatives like compare or check_stock. The example helps illustrate a typical call but does not state exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_stockCheck stock and priceBRead-onlyIdempotentInspect
Availability and price per merchant, re-verified live when the data is over an hour old. Example: {"product_id":"prusa-mk4s","merchant_id":"prusa3d"}
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | ||
| merchant_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, closed-world semantics, so the bar is lower. The description adds a genuinely non-obvious trait beyond them: results are re-verified live when cached data is over an hour old, which tells the agent to expect a slower call and trustworthy freshness. It stops short of covering error/not-found behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the freshness rule front-loaded and an inline example that earns its place given the undocumented schema. Only the sentence-fragment style slightly weakens readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter lookup with no output schema, the description should state the return shape and the behavior when merchant_id is omitted. It conveys the concepts of availability and price but not their structure or the single-merchant vs multi-merchant branching.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does partially via a concrete example showing slug-style IDs ('prusa-mk4s', 'prusa3d'). It never explains that merchant_id is optional or what omitting it returns, so the required/optional asymmetry is left implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the two returned values (availability and price) and the per-merchant scope, which is specific enough to distinguish it from get_product and compare. It does lean on the title for the verb ('check'), but the resource and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus siblings like compare or get_product, nor any prerequisite or exclusion. Usage is only inferable from the name and the phrase 'per merchant'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compareCompare productsARead-onlyIdempotentInspect
Side-by-side spec table with offers and the fields that differ. Pass 2-10 product_ids, or a category with filters. Example: {"product_ids":["e3d-v6-brass-0-4","bondtech-cht-0-4"]}
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filters | No | Needs category. Spec field -> exact value, e.g. {"material":"brass"}; an unknown field or value is an error listing the valid ones | |
| category | No | ||
| product_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered. The description adds useful behavior — the response is a spec comparison table including offers and only the fields that differ — but says nothing about cost, size limits on the returned table, or error handling beyond what the schema notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool returns, followed by the two input modes and a compact example. No filler, and the example earns its place by disambiguating the array form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully characterizes the return value as a spec table with offers and differing fields. The remaining gap is the limit parameter and what happens when fewer than two valid products match; otherwise an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must carry weight: it does explain the product_ids (2-10) path, the category+filters path, and provides a sample payload, and the filters error behavior is documented in the schema. The limit parameter (1-10) is never mentioned in either place, leaving one of four parameters semantically thin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete operation and result: a side-by-side spec table with offers and differing fields, taking either product_ids or a category plus filters. That distinguishes it from get_product (single item) and search_products (discovery), though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the two invocation modes ('Pass 2-10 product_ids, or a category with filters') and gives a concrete example payload, which is enough for an agent to pick the right form. It stops short of saying when to prefer this over search_products or get_product, so no exclusions or alternatives are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productGet product detailsARead-onlyIdempotentInspect
Full specs with per-field confidence and source, every offer with verified time, 30/90-day price range. Example: {"product_id":"prusa-mk4s"}
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product id or slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Because annotations already cover the safe, idempotent, read-only character of this tool, the description adds meaningful context by disclosing the shape of the results: confidence and source for each spec field, verified offer timestamps, and multi-window price ranges. It does not cover not-found or error behavior, but for a read tool this disclosure is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single dense sentence followed by a compact invocation example; it is front-loaded with the return payload and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description properly carries the burden of describing return values by summarizing the specs, offers, and price ranges. It falls just short on not-found or error behavior and on the tool's relationship to the search-to-detail workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents product_id as 'Product id or slug', so the baseline is 3. The example value 'prusa-mk4s' reinforces the slug format in practice, but no further meaning is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific content returned by the tool: full specs with per-field confidence and source, every offer with a verified timestamp, and a 30/90-day price range. It makes clear that this is a single-product detail lookup, but it never explicitly distinguishes the tool from siblings search_products or compare.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the example id 'prusa-mk4s' shows that a single product record is fetched by id or slug, which implies this tool follows a search. There is no explicit statement of when to use this tool instead of search_products, check_stock, check_fit, or compare, and no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_issueReport a data issueAInspect
Flag a wrong spec, price or fit verdict. Reports never edit facts; two independent reports mark a fact disputed. Example: {"entity_type":"product","entity_id":"prusa-mk4s","field":"nozzle_thread","claim":"MK4S uses the Nextruder thread"}
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | ||
| field | No | ||
| entity_id | Yes | ||
| entity_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is non-read-only, non-destructive and non-idempotent. The description adds real value beyond them: reports do not edit facts, and two independent reports are what mark a fact disputed — behavior an agent cannot infer from structured fields. It leaves unclear what a single report does on its own (stored? queued? acknowledged?).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences and an example, with the core action front-loaded and the dispute-threshold rule second. Every clause adds information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description never says what calling it returns or what happens to a single report before a second one arrives. Combined with 0% schema coverage on four parameters, meaningful gaps remain for an agent deciding whether the call succeeded and how to phrase 'field'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and the embedded JSON example at least maps values for entity_type, entity_id, field and claim. But it never explains what 'field' means (which field names are valid, why it is optional), nor the allowed entity_type values or the 500-character claim limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Flag a wrong spec, price or fit verdict', which immediately sets it apart from the read-only siblings (check_fit, check_stock, get_product, search_products, compare). The 'Reports never edit facts' clause further pins down that it files a report rather than mutating data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear when to call it (you found a wrong spec, price or fit verdict) and supplies a worked example, which is strong selection guidance. It stops short of naming an alternative path or stating any exclusion (e.g., when to use compare or check_fit instead of reporting).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsSearch productsBRead-onlyIdempotentInspect
Find products by name or by category and spec filters; returns key specs and the best in-stock offer. Example: {"query":"0.4 hardened nozzle","category":"nozzle","limit":5}
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| filters | No | Needs category. Spec field -> exact value, e.g. {"material":"brass"}; an unknown field or value is an error listing the valid ones | |
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's main added value is the return shape — key specs plus a best in-stock offer — which matters because there is no output schema. However, 'best' is undefined (price? availability?) and there is no note on ranking, defaults, or truncation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short segments, with the capability statement front-loaded before the example. The example earns its place by demonstrating how query/category/limit combine, though it is somewhat longer than needed for a four-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Reasonable for a search tool with no output schema: the return contents are summarised and filter error behavior lives in the schema. Still missing what an agent needs for edge cases — empty-parameter behavior, default result count, and how query interacts with filters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% — query, category, and limit are undocumented in the schema — and the description only partially compensates by mapping query to name search and category/filters to facet matching. The worked example shows the three parameters combined, but there is no guidance on precedence between query and filters, default limit, or when category is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Find products') and states both retrieval modes (by name, or by category/spec filters), plus what comes back ('key specs and the best in-stock offer'). This implicitly separates it from get_product (single item) and check_stock, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by name or by category and spec filters' implies when to reach for this tool, but there is no explicit when-to-use / when-not-to-use guidance and no mention of alternatives such as get_product for a known item or compare for side-by-side evaluation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- First observed
check_fit - First observed
check_stock - First observed
compare - First observed
get_product - First observed
report_issue - First observed
search_products
Related MCP Connectors
What fits, with live prices: specs, fit verdicts with rule ids and stock for 3D printing.
61Espresso gear price history: live Amazon prices, 2+ years of daily data, BUY calls at verified lows.
Specialty coffee roaster prices, stock, price/100g, change events and store profiles (30 roasters).
Find offers that fit what you want, ranked by fit only, with links to buy.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables users to compare and get recommendations across multiple supermarket products, combining curated specifications with realtime price and review lookups.-
- AlicenseNot gradedqualityDmaintenanceDeterministic industrial parts replacement engine with official catalogs and expert accuracy checksMIT
- AlicenseAqualityBmaintenanceSearches UK electronics products across multiple retailers, compares prices, and provides purchase links.268 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables real-time multi-merchant price comparison, coupon stacking, delivery-speed trade-offs, stock volatility tracking, and optimal purchase routing for cross-platform commerce inventory arbitrage.7MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.