remodeleriq
Server Details
Check if a contractor's remodeling bid is fair: analyze a quote, get cost + labor estimates.
- Status
- Healthy
- Uptime
- 97.9% over 40 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- gustavoatar/remodeleriq-mcp
- GitHub Stars
- 0
- Server Listing
- RemodelerIQ
TDQS
Scored across 10 tools
Five active tools are clearly separated by resource/action, but each has a deprecated unprefixed duplicate with the same purpose. The deprecation notices prevent complete confusion, yet the duplicate pairs add avoidable ambiguity.
All tools use snake_case verb_noun action names like analyze_bid and get_cost_estimate, which is consistent. The active tools add the remodeleriq_ prefix while deprecated ones do not, creating a minor but systematic inconsistency tied to versioning.
Ten tools is not excessive by number, but half are deprecated aliases for the other half, leaving only five effective functions. This makes the set feel padded and means deprecated tools occupy slots a well-scoped server would not expose.
The active surface covers the core bid-analysis workflow: single-bid risk analysis, multi-bid comparison, market cost estimates, labor rates, and aggregate risk statistics. Minor gaps exist such as contractor verification or ROI-specific tools, but they are not obvious dead ends for the stated domain.
Available Tools
10 toolsanalyze_bidARead-onlyIdempotentInspect
Deprecated: prefer remodeleriq_analyze_bid. Analyze a home-remodeling contractor's bid/estimate for fairness and risk. Returns a 0-100 confidence score, red flags, a plain-English summary, and negotiation talk tracks. Note: analyses may contribute de-identified data to aggregate remodeling-risk research.
| Name | Required | Description | Default |
|---|---|---|---|
| bid_text | Yes | The full text of the contractor's bid/estimate (line items, terms, scope). | |
| bid_total | No | The total dollar amount of the bid, if known. | |
| state_code | No | Two-letter US state code (e.g. 'TX', 'GA') for localized labor/legal context. Defaults to GA. | |
| finish_tier | No | Quality tier of finishes specified in the bid. | |
| scope_depth | No | Depth of work: cosmetic (paint/fixtures only), pull_and_replace (replace but not reconfigure), full_gut (down to studs), addition (new square footage). | |
| square_footage | No | Project area in square feet, if known (e.g. 200 for a bathroom, 400 for a kitchen). |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| summary | Yes | |
| verdict | Yes | |
| red_flags | Yes | |
| missing_items | Yes | |
| score_breakdown | No | |
| confidence_score | Yes | 0–100 bid confidence score |
| negotiation_talk_track | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the read-only/idempotent annotations by noting that analyses 'may contribute de-identified data to aggregate remodeling-risk research,' disclosing a data-collection side effect not covered by annotations. It also specifies the return payload (confidence score, red flags, summary, talk tracks), adding behavioral context. No contradiction with annotations.
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 concise, front-loaded with the deprecation warning, and every sentence contributes important information: deprecation, purpose, outputs, and data usage. It is appropriately sized for the tool's complexity.
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?
Given the presence of a full output schema and detailed annotations, the description covers all needed context: what the tool does, what it returns, its deprecation status, and a data-privacy note. No critical gaps remain for an agent to select and invoke the tool 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?
The input schema already provides 100% coverage of all 6 parameters, so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema already documents, so it neither improves nor degrades the parameter understanding.
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 the tool's function with a specific verb and resource: 'Analyze a home-remodeling contractor's bid/estimate for fairness and risk.' It also differentiates from siblings by declaring itself deprecated and pointing to remodeleriq_analyze_bid, making the tool's role 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?
The description explicitly advises against using this tool by saying 'Deprecated: prefer remodeleriq_analyze_bid.' This provides a clear when-not and names the preferred alternative, fully satisfying the usage guideline criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_bidsARead-onlyIdempotentInspect
Deprecated: prefer remodeleriq_compare_bids. Compare 2–5 contractor bids side-by-side with per-trade cost comparison, scope-gap matrix, and winner recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| bids | Yes | 2–5 contractor bids to compare side-by-side. |
Output Schema
| Name | Required | Description |
|---|---|---|
| bids | Yes | |
| _meta | No | |
| winner | No | |
| all_flags | No | All critical and high-severity flags across every bid. |
| bid_count | Yes | |
| scope_gaps | Yes | Trades present in some bids but absent from others, with estimated gap value. |
| outlier_flags | No | Trades where one bid is ≥2× or ≤0.5× the median. |
| cost_comparison | Yes | Per-trade cost table sorted by price variance (largest gap first). |
| apples_to_apples | Yes | Stated total + scope adjustment = adjusted comparable total per bid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description does not need to restate safety. It adds transparency by describing the analytical outputs (per-trade comparison, scope-gap matrix, winner recommendation), giving a clear picture of what the tool returns. No contradictions with annotations.
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 a single sentence that efficiently front-loads the deprecation warning and then describes the tool's core functionality. It contains no filler or redundant information, and every phrase adds value.
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?
The tool is well-covered by annotations, a detailed schema, and an output schema. The description adds essential context about deprecation and the comparison features. While it doesn't describe error handling or the exact format of the 'winner recommendation,' these are inferable from the output schema and the tool's purpose, so the description is adequately complete for a deprecated tool.
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%, with the schema providing rich descriptions for the 'bids' array and its item properties (label, bid_text, bid_total, etc.). The description adds no parameter-specific detail beyond reiterating the 2–5 range already present in the schema, so it neither enhances nor detracts from the schema's sufficiency.
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 explicitly states the tool compares 2–5 contractor bids side-by-side with specific outputs (per-trade cost comparison, scope-gap matrix, winner recommendation). It also identifies the deprecated status and names the preferred sibling, making its purpose and differentiation clear.
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 opens with 'Deprecated: prefer remodeleriq_compare_bids,' giving an explicit alternative and clearly indicating when not to use this tool. It also notes the bound of 2–5 bids, which guides appropriate input size.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cost_estimateARead-onlyIdempotentInspect
Deprecated: prefer remodeleriq_get_cost_estimate. Get a 2026 market cost range for a home-remodeling project in a US state/city, backed by Zonda Cost vs. Value benchmarks with regional adjustment.
| Name | Required | Description | Default |
|---|---|---|---|
| city_key | No | Optional city slug (e.g. 'atlanta-ga') for city-level precision. | |
| state_code | Yes | Two-letter US state code (e.g. 'CA', 'TX'). | |
| project_type | Yes | Project type, e.g. 'kitchen-remodel', 'bathroom-remodel', 'roofing', 'siding', 'deck', 'addition', 'basement'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| _meta | No | |
| project | Yes | |
| location | Yes | |
| range_low | Yes | |
| range_high | Yes | |
| data_source | No | |
| typical_cost | Yes | |
| regional_multiplier | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the deprecation status and the data-source/regional-adjustment context, which goes beyond the annotations. No contradictions exist.
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 a single, focused sentence that immediately delivers the deprecation warning and core functionality. Every phrase earns its place, with no unnecessary 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?
Given the presence of an output schema, the description need not detail return values. It covers the tool's purpose, the deprecation status, and the replacement alternative, which is sufficient for a deprecated tool. Minor detail about regional adjustment is included but not exhaustive; still, overall completeness is high.
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 all three parameters (city_key, state_code, project_type) are individually described. The tool description only lightly references 'state/city' and 'project type' without adding deeper semantics beyond what the schema already provides. Therefore, a neutral score of 3 is appropriate.
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 the tool 'Get a 2026 market cost range for a home-remodeling project in a US state/city' and specifies the data source ('Zonda Cost vs. Value benchmarks with regional adjustment'). It also explicitly names the preferred sibling tool, distinguishing it from alternatives.
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 opens with 'Deprecated: prefer remodeleriq_get_cost_estimate', which explicitly instructs the agent to use an alternative. This serves as both a when-not-to-use directive and a clear alternative recommendation, making the usage guidance highly explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_labor_ratesARead-onlyIdempotentInspect
Deprecated: prefer remodeleriq_get_labor_rates. Get 2026 burdened construction trade labor rates ($/hour) for a US state, derived from BLS wage data.
| Name | Required | Description | Default |
|---|---|---|---|
| trade | No | Optional specific trade to filter to (e.g. 'plumber', 'electrician', 'carpenter'). | |
| state_code | Yes | Two-letter US state code (e.g. 'TX', 'NY'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| _meta | No | |
| rates | Yes | |
| state | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds the deprecation status, the 2026 year, 'burdened' nature of rates, and BLS derivation, which are useful behavioral context not present in annotations.
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 one concise sentence that front-loads the critical deprecation notice and then packs the core function with specific details. Every clause earns its place with no redundancy.
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 read-only lookup with an output schema and annotations, the description covers the purpose, deprecation, data source, and units. It doesn't explain 'burdened' in depth, but overall it is sufficiently complete for invoking the tool.
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%, fully documenting both state_code and trade. The description adds that rates are per hour and for construction trades, but does not provide additional syntax details beyond the schema.
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 the tool retrieves 2026 burdened construction trade labor rates in dollars per hour for a US state, sourced from BLS. It also explicitly names the replacement tool, distinguishing it from siblings.
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 opens with 'Deprecated: prefer remodeleriq_get_labor_rates,' which explicitly tells the agent to prefer an alternative. It also sets context for scope (US state, construction trade labor rates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_risk_statsARead-onlyIdempotentInspect
Deprecated: prefer remodeleriq_get_risk_stats. Get aggregate red-flag statistics from the RemodelerIQ bid corpus.
| Name | Required | Description | Default |
|---|---|---|---|
| state_code | No | Two-letter US state code to filter stats (e.g. 'GA', 'TX'). Omit for national data. | |
| project_type | No | Project type to filter (e.g. 'kitchen-remodel', 'bathroom-remodel', 'roofing'). Omit for all project types. | |
| bid_size_bucket | No | Bid total range to filter. Omit for all sizes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| cell_n | No | Bids matching your filters. |
| filter | No | |
| status | Yes | |
| corpus_n | Yes | Total bids in the RemodelerIQ corpus. |
| top_flags | No | |
| suppressed | No | True when cell_n < 30 — data withheld to protect granularity. |
| avg_bid_total | No | Average bid total for bids where a total was provided. |
| confidence_score | No |
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 the safety profile is well covered. The description adds minimal extra behavioral context—it identifies the data source ('RemodelerIQ bid corpus') and the nature of the output ('aggregate red-flag statistics'), but these largely restate the title. No description-annotation contradiction exists, and the description does not add significant behavioral details beyond what annotations and schema already provide.
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 extremely concise: two sentences, front-loaded with the deprecation warning, and every word earns its place. No fluff or repetition. This is exemplary for a deprecated tool where brevity aids quick decision-making.
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?
Given that the tool is deprecated, the description successfully directs agents away from using it. It provides purpose and a clear alternative. The presence of a full output schema and complete parameter documentation means the description doesn't need to explain return values or filters. While it lacks details about what 'red-flag statistics' precisely include, this is adequately handled by the output schema and the preferred sibling tool.
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?
The input schema covers all three parameters with clear descriptions (state_code, project_type, bid_size_bucket), and schema coverage is 100%. The description itself does not add parameter-specific information, but the schema handles the heavy lifting. Baseline of 3 is appropriate because the description offers no extra semantic value beyond the schema.
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 the tool's function: 'Get aggregate red-flag statistics from the RemodelerIQ bid corpus.' The verb 'Get' specifies the action, and the resource ('aggregate red-flag statistics') is specific. It distinguishes from siblings by explicitly marking this as deprecated and pointing to remodeleriq_get_risk_stats as the preferred alternative.
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 explicitly says 'Deprecated: prefer remodeleriq_get_risk_stats', which is a clear directive on when not to use this tool and which alternative to use instead. This is a strong when-to-use vs. when-not-to-use guideline, fully satisfying the dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remodeleriq_analyze_bidARead-onlyIdempotentInspect
Analyze a home-remodeling contractor's bid/estimate for fairness and risk. Returns a 0-100 confidence score, score_breakdown by dimension, red flags with stable flag IDs (deposit traps, vague scope, missing items, payment terms), a plain-English summary, and negotiation talk tracks. Score rubric: contract clarity 40%, scope completeness 30%, price realism 30%. Use when a homeowner asks 'is this contractor quote fair?' or shares a remodeling estimate. Note: analyses may contribute de-identified data to aggregate remodeling-risk research.
| Name | Required | Description | Default |
|---|---|---|---|
| bid_text | Yes | The full text of the contractor's bid/estimate (line items, terms, scope). | |
| bid_total | No | The total dollar amount of the bid, if known. | |
| state_code | No | Two-letter US state code (e.g. 'TX', 'GA') for localized labor/legal context. Defaults to GA. | |
| finish_tier | No | Quality tier of finishes specified in the bid. | |
| scope_depth | No | Depth of work: cosmetic (paint/fixtures only), pull_and_replace (replace but not reconfigure), full_gut (down to studs), addition (new square footage). | |
| square_footage | No | Project area in square feet, if known (e.g. 200 for a bathroom, 400 for a kitchen). |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| summary | Yes | |
| verdict | Yes | |
| red_flags | Yes | |
| missing_items | Yes | |
| score_breakdown | No | |
| confidence_score | Yes | 0–100 bid confidence score |
| negotiation_talk_track | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by detailing the output structure (confidence score, breakdown, red flags with stable IDs), the scoring rubric (40/30/30 weights), and the data usage note about contributing de-identified data to research. This adds meaningful behavioral context that annotations do not cover.
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 dense yet compact, with each sentence serving a purpose: purpose, output details, scoring rubric, usage trigger, and a privacy note. It is well-structured and front-loaded, avoiding unnecessary verbosity.
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?
Given the tool's complexity, the description addresses all key aspects: what it does, what it returns, how the score is calculated, when to use it, and a data usage caveat. The presence of an output schema and full parameter documentation reduces the burden, and the description covers the rest.
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?
The input schema covers 100% of the parameters with descriptions, so the baseline is 3. The description does not add extra parameter-level detail beyond what the schema provides, but it also does not need to, as the schema is sufficient.
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 the tool's purpose with a specific verb ('Analyze') and resource ('bid/estimate'), and defines the scope ('fairness and risk'). It does not explicitly differentiate from the sibling tool 'analyze_bid', which may cause ambiguity, but the name and description still make the function clear.
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 provides explicit usage context: 'Use when a homeowner asks...' or shares an estimate. It does not mention when not to use it or name alternative tools, but the guidance is clear enough for typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remodeleriq_compare_bidsARead-onlyIdempotentInspect
Compare 2–5 contractor bids for the same project side-by-side. Returns: per-bid confidence scores; a per-trade cost comparison table sorted by price variance; a scope-gap matrix (what Bid A includes that Bid B omits); apples-to-apples adjusted totals (normalizing for scope gaps); outlier detection (trades priced ≥2× or ≤0.5× the median); consolidated red flags across all bids; and a winner recommendation. Use when a homeowner has multiple quotes and wants to know which is best and why.
| Name | Required | Description | Default |
|---|---|---|---|
| bids | Yes | 2–5 contractor bids to compare side-by-side. |
Output Schema
| Name | Required | Description |
|---|---|---|
| bids | Yes | |
| _meta | No | |
| winner | No | |
| all_flags | No | All critical and high-severity flags across every bid. |
| bid_count | Yes | |
| scope_gaps | Yes | Trades present in some bids but absent from others, with estimated gap value. |
| outlier_flags | No | Trades where one bid is ≥2× or ≤0.5× the median. |
| cost_comparison | Yes | Per-trade cost table sorted by price variance (largest gap first). |
| apples_to_apples | Yes | Stated total + scope adjustment = adjusted comparable total per bid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral specifics: outlier detection thresholds (≥2× or ≤0.5× median), scope-gap normalization, and consolidated red flags, giving an agent a concrete picture of the analysis performed without contradicting annotations.
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 a single dense sentence with semicolon-separated outputs followed by a one-sentence usage guide. Every clause adds information about what the tool returns or when to use it, with no filler or repetition.
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 one-parameter tool with an output schema, the description covers the action, input constraints, detailed outputs, and the intended use case. It leaves little ambiguity about when to invoke it or what will happen, making it contextually complete.
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?
The schema already covers the bids parameter with 100% coverage, including minItems/maxItems and property descriptions. The description adds the key constraint that bids must be for the same project—not present in the schema description—and references scope-depth normalization, enriching the meaning of the scope_depth field.
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 opens with 'Compare 2–5 contractor bids for the same project side-by-side', providing a specific verb and resource. It then enumerates analytical outputs (confidence scores, scope-gap matrix, outlier detection, winner recommendation) that clearly distinguish it from simpler sibling tools like compare_bids.
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 explicitly states 'Use when a homeowner has multiple quotes and wants to know which is best and why', giving clear when-to-use context. However, it does not mention alternative tools or when not to use, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remodeleriq_get_cost_estimateARead-onlyIdempotentInspect
Get a 2026 market cost range for a home-remodeling project in a US state/city, backed by Zonda Cost vs. Value benchmarks with regional adjustment. Use when a homeowner asks 'how much does a [kitchen/bathroom/roof/etc.] remodel cost in [place]?'
| Name | Required | Description | Default |
|---|---|---|---|
| city_key | No | Optional city slug (e.g. 'atlanta-ga') for city-level precision. | |
| state_code | Yes | Two-letter US state code (e.g. 'CA', 'TX'). | |
| project_type | Yes | Project type, e.g. 'kitchen-remodel', 'bathroom-remodel', 'roofing', 'siding', 'deck', 'addition', 'basement'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| _meta | No | |
| project | Yes | |
| location | Yes | |
| range_low | Yes | |
| range_high | Yes | |
| data_source | No | |
| typical_cost | Yes | |
| regional_multiplier | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds beyond annotations by specifying the 2026 data year and the Zonda benchmark source with regional adjustment, which are useful behavioral context. It doesn't contradict annotations.
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 two sentences, front-loaded with the core purpose, and includes the usage trigger. Every sentence adds value with no fluff.
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 output schema present and annotations strong, the description is sufficient for an agent to understand what the tool does and when to use it. It doesn't need to explain return format due to output schema.
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 baseline is 3. The description's example of 'kitchen/bathroom/roof/etc.' and 'place' loosely maps to project_type and state/city, but it doesn't add meaningful detail beyond what the schema already provides.
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 uses a specific verb 'Get' and identifies the resource as 'a 2026 market cost range for a home-remodeling project in a US state/city'. It distinguishes from siblings by mentioning Zonda Cost vs. Value benchmarks and regional adjustment, making the tool's purpose clear.
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 provides an explicit 'Use when' trigger: 'when a homeowner asks how much does a remodel cost in place.' It gives clear context but does not mention exclusions or alternative tools, so it doesn't reach the 5 threshold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remodeleriq_get_labor_ratesARead-onlyIdempotentInspect
Get 2026 burdened construction trade labor rates ($/hour) for a US state, derived from BLS wage data. Returns rates by trade (carpenter, plumber, electrician, painter, etc.). Use when a homeowner asks what trade labor should cost or whether a bid's labor line is fair.
| Name | Required | Description | Default |
|---|---|---|---|
| trade | No | Optional specific trade to filter to (e.g. 'plumber', 'electrician', 'carpenter'). | |
| state_code | Yes | Two-letter US state code (e.g. 'TX', 'NY'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| _meta | No | |
| rates | Yes | |
| state | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds useful context by specifying that rates are 'burdened', 'derived from BLS wage data', and are for 2026, which communicates data vintage and basis beyond the annotations.
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 sentences provide all necessary information: the first states the action, scope, source, and units; the second gives a real-world trigger. There is no filler or redundancy.
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 lookup with one required parameter and an output schema, the description covers what, source, output granularity, units, and intended usage. The presence of an output schema means detailed return formatting is unnecessary.
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?
The schema already documents state_code and trade with 100% description coverage. The description reinforces these with 'for a US state' and trade examples, but does not add syntax, constraints, or default-behavior details beyond the schema.
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 opens with a specific action and resource: 'Get 2026 burdened construction trade labor rates ($/hour) for a US state, derived from BLS wage data.' It also lists example trades and a use case, which distinguishes it from cost-estimate and bid-analysis sibling tools.
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 explicitly states when to use the tool: 'Use when a homeowner asks what trade labor should cost or whether a bid's labor line is fair.' However, it does not name sibling tools or exclusion criteria, so it stops short of a full when/when-not comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remodeleriq_get_risk_statsARead-onlyIdempotentInspect
Get aggregate red-flag statistics from the RemodelerIQ bid corpus — real anonymized data from bids analyzed by the platform. Returns the most common risk flags and their fire rates, average confidence scores, and bid-total distributions, filtered optionally by US state, project type, or bid size. Requires corpus ≥ 500 submissions; cells below 30 submissions are suppressed. Use when a homeowner asks 'how common is a 40% deposit demand?' or 'what do most kitchen-remodel bids get flagged for?'. This is proprietary empirical data available nowhere else.
| Name | Required | Description | Default |
|---|---|---|---|
| state_code | No | Two-letter US state code to filter stats (e.g. 'GA', 'TX'). Omit for national data. | |
| project_type | No | Project type to filter (e.g. 'kitchen-remodel', 'bathroom-remodel', 'roofing'). Omit for all project types. | |
| bid_size_bucket | No | Bid total range to filter. Omit for all sizes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| cell_n | No | Bids matching your filters. |
| filter | No | |
| status | Yes | |
| corpus_n | Yes | Total bids in the RemodelerIQ corpus. |
| top_flags | No | |
| suppressed | No | True when cell_n < 30 — data withheld to protect granularity. |
| avg_bid_total | No | Average bid total for bids where a total was provided. |
| confidence_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, but the description adds valuable behavioral context: data is 'real anonymized data', requires corpus ≥ 500 submissions, and suppresses cells below 30 submissions. It also notes the data is proprietary, which helps the agent understand availability and reliability. No contradiction with annotations.
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 well-structured with four sentences, front-loaded with purpose, then outputs, then constraints, then usage examples. The final sentence ('This is proprietary empirical data available nowhere else.') adds motivational context but is slightly tangential to tool invocation, making the description a bit less concise than ideal.
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?
The description covers the tool's purpose, outputs, filtering options, constraints, and usage scenarios. Given the presence of an output schema and strong annotations, it provides a complete picture for an agent to decide when to use the tool and what to expect. No missing critical context.
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?
The input schema already describes all three optional parameters (state_code, project_type, bid_size_bucket) with 100% coverage. The description mentions these filters but does not add syntax or format details beyond the schema. Since schema coverage is complete, a baseline of 3 is appropriate; the description adds only minimal extra meaning.
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 the tool's function: 'Get aggregate red-flag statistics from the RemodelerIQ bid corpus' and specifies the outputs (common risk flags, fire rates, confidence scores, bid-total distributions). It distinguishes from sibling tools like analyze_bid or compare_bids by focusing on aggregate statistics across the corpus, not individual bids.
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?
Explicit usage context is provided: 'Use when a homeowner asks "how common is a 40% deposit demand?" or "what do most kitchen-remodel bids get flagged for?"' This clearly tells the agent when to invoke this tool over alternatives. It also explains constraints like the 500-submission corpus requirement and cell suppression below 30 submissions, aiding in appropriate use.
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.
2 tool updates
- Added
get_risk_stats - Added
remodeleriq_get_risk_stats
2 tool updates
- Added
compare_bids - Added
remodeleriq_compare_bids
6 tool updates
- Changed
analyze_bid1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "_meta": { + "type": "object" + }, + "confidence_score": { + "description": "0–100 bid confidence score", + "type": "number" + }, + "missing_items": { + "items": { + "type": "string" + }, + "type": "array" + }, + "negotiation_talk_track": { + "items": { + "type": "string" + }, + "type": "array" + }, + "red_flags": { + "items": { + "properties": { + "detail": { + "type": "string" + }, + "fix": { + "type": "string" + }, + "flag_id": { + "description": "Stable taxonomy ID (e.g. PAY_DEPOSIT_EXCESSIVE)", + "type": "string" + }, + "issue": { + "type": "string" + }, + "level": { + "enum": [ + "critical", + "high" + ], + "type": "string" + } + }, + "required": [ + "level", + "issue", + "detail", + "fix", + "flag_id" + ], + "type": "object" + }, + "type": "array" + }, + "score_breakdown": { + "properties": { + "contract_clarity": { + "type": "number" + }, + "contract_weight": { + "type": "number" + }, + "final": { + "type": "number" + }, + "price_realism": { + "type": "number" + }, + "price_weight": { + "type": "number" + }, + "scope_completeness": { + "type": "number" + }, + "scope_weight": { + "type": "number" + } + }, + "type": "object" + }, + "summary": { + "type": "string" + }, + "verdict": { + "type": "string" + } + }, + "required": [ + "confidence_score", + "verdict", + "summary", + "red_flags", + "missing_items", + "negotiation_talk_track" + ], + "type": "object" +}
- Changed
get_cost_estimate1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "_meta": { + "type": "object" + }, + "data_source": { + "type": "string" + }, + "location": { + "type": "string" + }, + "note": { + "type": "string" + }, + "project": { + "type": "string" + }, + "range_high": { + "type": "number" + }, + "range_low": { + "type": "number" + }, + "regional_multiplier": { + "type": "number" + }, + "typical_cost": { + "type": "number" + } + }, + "required": [ + "project", + "location", + "typical_cost", + "range_low", + "range_high" + ], + "type": "object" +}
- Changed
get_labor_rates1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "_meta": { + "type": "object" + }, + "note": { + "type": "string" + }, + "rates": { + "items": { + "properties": { + "bls_mean_wage_per_hour": { + "type": "number" + }, + "fair_billed_rate_per_hour": { + "type": "number" + }, + "trade": { + "type": "string" + }, + "trade_key": { + "type": "string" + } + }, + "required": [ + "trade", + "trade_key", + "bls_mean_wage_per_hour", + "fair_billed_rate_per_hour" + ], + "type": "object" + }, + "type": "array" + }, + "state": { + "type": "string" + } + }, + "required": [ + "state", + "rates" + ], + "type": "object" +}
- Added
remodeleriq_analyze_bid - Added
remodeleriq_get_cost_estimate - Added
remodeleriq_get_labor_rates
1 tool update
- Changed
analyze_bid3 fields changed- added
Input schema / properties / finish_tierAdded value: +{ + "description": "Quality tier of finishes specified in the bid.", + "enum": [ + "builder_grade", + "mid", + "semi_custom", + "custom", + "luxury" + ], + "type": "string" +} - added
Input schema / properties / scope_depthAdded value: +{ + "description": "Depth of work: cosmetic (paint/fixtures only), pull_and_replace (replace but not reconfigure), full_gut (down to studs), addition (new square footage).", + "enum": [ + "cosmetic", + "pull_and_replace", + "full_gut", + "addition" + ], + "type": "string" +} - added
Input schema / properties / square_footageAdded value: +{ + "description": "Project area in square feet, if known (e.g. 200 for a bathroom, 400 for a kitchen).", + "type": "number" +}
3 tool updates
- First observed
analyze_bid - First observed
get_cost_estimate - First observed
get_labor_rates
Related MCP Connectors
Check contractor quotes for red flags and pricing risks. Free scan, paid reports, RFP tools.
Fair-price checks for Japanese renovation quotes, plus Japan and US construction cost data.
Buyer-side fair-price checks for Japanese renovation, plus JCCDB and USCCDB construction cost data.
AI-powered job cost estimator for skilled trades with material and labor breakdowns
Related MCP Servers
- AlicenseAqualityAmaintenanceAudits Japanese construction and renovation estimates for overcharge. Fair price ranges by work type, red flag checks for sales tactics, and signed recomputable verdicts. Backed by the open JCCDB dataset (65,729 items, CC BY 4.0).141MIT
- FlicenseNot gradedqualityDmaintenanceProvides construction cost estimation tools using data from a public Google Sheet for items like concrete, framing, and electrical. It allows users to search items, filter by category, and calculate total project costs including labor and material expenses.-
- AlicenseNot gradedqualityBmaintenanceEnables agents to turn customer conversations into provably correct remodeling quotes by extracting catalog-bounded line items with evidence and calculating prices deterministically.MIT
- AlicenseNot gradedqualityBmaintenanceEnables multifamily renovation cost estimation, scope of work generation, contractor bid evaluation, ROI gating, and risk flagging for real estate intelligence agents.Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.