plat-costmodel
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| estimateA | Estimate per-unit renovation cost with line-item breakdown. Args: unit_sqft: Unit square footage (drives size category: <700 small, 700-950 medium, 950+ large) bedrooms: Number of bedrooms bathrooms: Number of bathrooms (bathroom costs multiply by this) scope_level: "light" ($3K-$5K) or "standard_value_add" ($12K-$18K) finish_tier: "basic" or "upgraded" (granite, backsplash, stainless) year_built: Property year built (triggers risk flags) property_class: "B" or "C" market: "dallas" or "birmingham" unit_id: Optional unit identifier |
| estimate_full_propertyB | Property-level estimate rolling up unit costs + exterior CapEx. Args: property_id: Property identifier total_units: Total units at the property units: List of unit dicts with keys: unit_id, sqft, bedrooms, bathrooms, scope_level, finish_tier year_built: Property year built property_class: "B" or "C" market: "dallas" or "birmingham" exterior_items: Exterior CapEx categories to include (default: all). Options: roof, parking, hvac, siding_paint, fencing_gates, landscaping, signage_lighting |
| estimate_property_from_modelA | Property-level estimate using the Property entity model. Accepts a single property dict containing all property context and unit mix. This is the preferred API for Plat — replaces loose kwargs. Args: property_data: Dict with keys: - property_id (str, required) - total_units (int, required) - unit_mix (list of dicts with: sqft, bedrooms, bathrooms, scope_level, finish_tier, count) - year_built (int, optional) - property_class ("B" or "C", optional) - market (str, optional) - building_type (str, optional) - exterior_items (list of str, optional) |
| check_renovation_roiA | Check whether a renovation plan clears the minimum ROI threshold. Uses the HIGH cost estimate (conservative). Formula: (annual_rent_lift / total_cost_high) * 100. Default threshold is 15%. Args: total_cost_high: High-end total renovation cost estimate current_monthly_rent: Current monthly rent target_monthly_rent: Expected post-renovation monthly rent threshold_pct: Minimum ROI percentage (default 15%) |
| generate_scope_of_workB | Generate a detailed scope of work (SOW) for contractor bidding. Produces a contractor-ready document with material specs, quantities, and quality standards. Args: unit_sqft: Unit square footage bedrooms: Number of bedrooms bathrooms: Number of bathrooms scope_level: "light" or "standard_value_add" finish_tier: "basic" or "upgraded" property_address: Property street address unit_id: Unit number/identifier |
| evaluate_contractor_bidB | Evaluate a contractor bid against the internal cost estimate. Flags: inflated line items (30%+ above benchmark), vague lump sums, unrealistic timelines. Args: contractor_name: Name of the contractor bid_line_items: List of dicts with "description" and "amount" keys bid_total: Total bid amount timeline_days: Proposed timeline in days (None if not specified) unit_sqft: Unit square footage for generating comparison estimate bedrooms: Number of bedrooms bathrooms: Number of bathrooms scope_level: "light" or "standard_value_add" finish_tier: "basic" or "upgraded" year_built: Property year built |
| prepare_renovation_program_toolA | Estimate unit cost, validate ROI, and produce underwriting-ready renovation program input. Runs the full pipeline: estimate → ROI gate → bridge dict matching the multifamily-underwriting deal schema's renovation_program shape. Returns a dict with:
If the ROI gate fails, returns the result with ready_to_underwrite=False and the roi_result containing path_to_pass guidance. Args: unit_sqft: Unit square footage (drives size category) bedrooms: Number of bedrooms bathrooms: Number of bathrooms current_monthly_rent: Current monthly rent target_monthly_rent: Expected post-renovation monthly rent start_month: Renovation start month ("YYYY-MM") monthly_pace: Units renovated per month scope_level: "light" or "standard_value_add" finish_tier: "basic" or "upgraded" year_built: Property year built (triggers risk flags) property_class: "B" or "C" market: "dallas" or "birmingham" unit_id: Optional unit identifier downtime_days: Vacancy days per unit during renovation (default 21) threshold_pct: Minimum ROI percentage (default 15%) |
| register_propertyB | Idempotent property registration. Accepts a Property-shaped dict (and optional inline Inline |
| estimate_scopeC | Canonical entry point: estimate a ScopeRequest, persist (request, estimate). Returns the ScopeEstimate as a dict, or a ValidationProblem dict on error. |
| estimate_from_dealC | Project deal + scenarios → per-scenario ScopeRequest(s), estimate each, project back to renovation_program dicts. Returns |
| get_property_historyB | Return all (scope_request, scope_estimate, actual_outcome) triples for a property as a list of dicts. Empty list if property has no history. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Six tools revolve around estimation (estimate, estimate_scope, estimate_full_property, estimate_property_from_model, estimate_from_deal, prepare_renovation_program_tool), and the property-level pair (estimate_full_property vs estimate_property_from_model) is especially easy to confuse since one is merely the 'preferred' wrapper of the other. Descriptions do clarify levels (per-unit vs property vs deal vs pipeline), so an agent can usually recover, but boundaries are fuzzy.
Nearly all tools follow a clean verb_noun snake_case pattern (check_renovation_roi, estimate_full_property, generate_scope_of_work, evaluate_contractor_bid, register_property, get_property_history). Minor deviations are the bare 'estimate' and the odd '_tool' suffix in prepare_renovation_program_tool, but these are isolated.
11 tools is well within a healthy range for a cost-modeling server covering estimation, ROI, SOW, bid review, registration, and history. The only concern is slight redundancy in the estimation cluster, which nudges it below a perfect score.
The surface covers the core lifecycle: property registration, per-unit and property-level estimation, ROI gating, scope-of-work generation, contractor bid evaluation, deal-scenario projection, and history retrieval. Gaps are minor—no update/delete or list/get property operations, and no standalone exterior-only estimate—but agents can work around these.