{"version":"v2","serving_version":"p5s12-2026.07","model_version":"p5v5-2026.07","underwrite_version":"p5v5-2026.07","tools":[{"name":"search_deals","description":"[DEPRECATED — use search_investment_inventory] Search point-supported live listings and top-scoring census tracts by strategy ('flip'|'brrrr'|'hold'|'house_hack'). Range-only, area-context, stale, and suppressed listings are excluded from property rankings. Remaining listings are ranked by that strategy's inventory-percentile score (0-100) after hard economic gates. Tract opportunity is location context only, never the property score. Omit min_score to use the live top-quartile cutoff; pass a number to override.","inputSchema":{"type":"object","properties":{"metro":{"type":"string","default":"chicago"},"strategy":{"type":"string","enum":["flip","brrrr","hold","house_hack"],"default":"brrrr"},"min_score":{"type":"number","description":"min per-strategy percentile score; omit for the live top-quartile cutoff"},"max_price":{"type":"number"},"limit":{"type":"number","default":10},"since_hours":{"type":"number","description":"only listings first seen in the last N hours"}}},"deprecated":true,"replacement":"search_investment_inventory"},{"name":"get_tract_report","description":"Full signal report for one census tract (11-digit GEOID): scores, all factor percentiles, tax/reassessment, S8 arbitrage, commute, risks.","inputSchema":{"type":"object","properties":{"geoid":{"type":"string"}},"required":["geoid"]}},{"name":"underwrite","description":"[DEPRECATED — use deep_underwrite_asset] Underwrite an address or lat/lon using an explicit positive price and whole-number unit count (1-4), unless a matching listing supplies them. The valuation artifact always returns its evidence, range, method, and provenance. Exact suggested offer, profit, NOI, DSCR, cash-on-cash, loan limit, and four strategy scores return only when calibrated evidence supports a point. When valuation is range-only, area context, stale, or suppressed, all point economics and strategy_scores are null with unscored_reason. Income is a cross-check only and never sets value. All accepted pro-forma parameters are echoed.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"address":{"type":"string","minLength":1},"zoning":{"type":"string","minLength":1},"lot_sqft":{"type":"number","minimum":1},"description":{"type":"string"},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"price":{"type":"number","exclusiveMinimum":0},"rehab":{"type":"number","minimum":0},"rent":{"type":"number","minimum":0},"units":{"type":"integer","minimum":1,"maximum":4,"description":"REQUIRED unless a matching listing supplies it; whole number 1-4; unknown -> units_required"},"prop_type":{"type":"string","enum":["sfh","mf2_4","condo"],"description":"Optional explicit residential property type; condo is accepted but valuation-suppressed until calibrated."},"beds":{"type":"integer","minimum":0},"sqft":{"type":"integer","minimum":1},"year_built":{"type":"integer","minimum":1800,"maximum":1971},"rate":{"type":"number","exclusiveMinimum":0,"maximum":100,"description":"override the conventional rate (%)"},"down_pct":{"type":"number","minimum":0,"maximum":1,"description":"down-payment fraction (e.g. 0.05)"},"hold_months":{"type":"integer","minimum":0},"rent_override":{"type":"number","minimum":0},"financing_type":{"type":"string","enum":["conventional_investor","dscr_loan","hard_money","fha_oo","conventional_oo"]},"mgmt_self":{"type":"boolean"},"hoa":{"type":"number","minimum":0},"owner_occupied":{"type":"boolean"},"scope":{"type":"string","enum":["cosmetic","moderate","gut","structural"]},"strategy":{"type":"string","enum":["flip","brrrr","hold","house_hack"],"default":"brrrr"},"metro":{"type":"string","enum":["chicago"]},"weights":{"type":"object","additionalProperties":false,"properties":{"flip":{"type":"object","additionalProperties":false,"properties":{"margin":{"type":"number","minimum":0,"maximum":1},"velocity":{"type":"number","minimum":0,"maximum":1},"trend":{"type":"number","minimum":0,"maximum":1}}},"brrrr":{"type":"object","additionalProperties":false,"properties":{"ratio":{"type":"number","minimum":0,"maximum":1},"dscr":{"type":"number","minimum":0,"maximum":1}}},"hold":{"type":"object","additionalProperties":false,"properties":{"coc":{"type":"number","minimum":0,"maximum":1},"risk":{"type":"number","minimum":0,"maximum":1}}}}}}},"deprecated":true,"replacement":"deep_underwrite_asset"},{"name":"market_pulse","description":"County-wide pulse: top tracts per strategy (tract opportunity scores, rank-transformed to county percentiles), best Section 8 (SAFMR) arbitrage ZIPs, reassessment-shock leaders, data vintages. Tract opportunity is a location screen — property-level economics are applied per-listing in search_deals, not here.","inputSchema":{"type":"object","properties":{"metro":{"type":"string","default":"chicago"}}}},{"name":"comps","description":"[DEPRECATED — use get_comps] Automated comp evidence for an address or lat/lon. Returns the calibrated interval, method, confidence, accepted comps, and rejected comps with reasons. Range-only output is not an appraisal or an actionable point estimate. prop_type: 'mf2_4' (2-4 flat) | 'sfh'.","inputSchema":{"type":"object","properties":{"address":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"prop_type":{"type":"string","enum":["mf2_4","sfh"],"default":"mf2_4"}}},"deprecated":true,"replacement":"get_comps"},{"name":"risk_report","description":"Separate Risk Score (0-100) for an address or lat/lon, with each risk flag's stated reason. Covers tax shock after purchase, tax trap, basement/FEMA flood evidence, distress proximity, closing friction, legal-unit mismatch, appraisal ceiling, vintage stock, and rent-model uncertainty. Crime and protected/proxy demographic fields are excluded from public property risk and recommendation outputs. Risk is shown separately from opportunity — high-opportunity/high-risk is a valid state.","inputSchema":{"type":"object","properties":{"address":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"listing_units":{"type":"number"},"year_built":{"type":"number"}}}},{"name":"search_investment_inventory","description":"v2 inventory search (replaces search_deals): point-supported, current-model listings by per-strategy inventory percentile. Range-only, area-context, stale, and suppressed rows are excluded. Supports bbox/geography filters, cursor pagination, and a fields selector.","inputSchema":{"type":"object","properties":{"metro":{"type":"string","default":"chicago"},"strategy":{"type":"string","enum":["flip","brrrr","hold","house_hack"],"default":"brrrr"},"bbox":{"type":"string","description":"west,south,east,north"},"geography":{"type":"string","description":"zip code or neighborhood name"},"min_percentile":{"type":"number","minimum":0,"maximum":100},"max_price":{"type":"number","minimum":0},"min_confidence":{"type":"number","minimum":0,"maximum":100},"fields":{"type":"string","description":"comma-separated field allowlist"},"cursor":{"type":"string"},"limit":{"type":"number","default":25,"maximum":100}}}},{"name":"deep_underwrite_asset","description":"v2 underwrite (replaces underwrite): returns the valuation evidence plus a pro-forma only when calibrated evidence supports a point. For range-only, area-context, stale, or suppressed valuations, cashflow_projection, DSCR, offers, returns, and strategy_scores are null. Accepted custom assumptions are echoed.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"property_id":{"type":"string","minLength":1},"address":{"type":"string","minLength":1},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"units":{"type":"integer","minimum":1,"maximum":4},"strategy":{"type":"string","enum":["flip","brrrr","hold","house_hack"],"default":"brrrr"},"metro":{"type":"string","enum":["chicago"]},"horizon_years":{"type":"integer","default":5,"minimum":1,"maximum":30},"custom_assumptions":{"type":"object","additionalProperties":false,"properties":{"purchase_price":{"type":"number","exclusiveMinimum":0},"rehab_budget":{"type":"number","minimum":0},"rate":{"type":"number","exclusiveMinimum":0,"maximum":100},"down_pct":{"type":"number","minimum":0,"maximum":1},"rent_override":{"type":"number","minimum":0},"financing_type":{"type":"string","enum":["conventional_investor","dscr_loan","hard_money","fha_oo","conventional_oo"]},"hold_months":{"type":"integer","minimum":0}}}}}},{"name":"get_comps","description":"v2 comps (replaces comps): automated valuation evidence with accepted/rejected comps, adjustments, interval, method, and confidence. It is not an appraisal; range-only evidence cannot drive point economics.","inputSchema":{"type":"object","properties":{"address":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"prop_type":{"type":"string","enum":["mf2_4","sfh"],"default":"mf2_4"}}}},{"name":"save_favorite_property","description":"WRITE (scope: write-state). Save a property to the caller's favorites; syncs to the open web map via the /api/events stream.","inputSchema":{"type":"object","properties":{"property_id":{"type":"string"},"address":{"type":"string"},"payload":{"type":"object"}}}},{"name":"update_underwriting_preset","description":"WRITE (scope: write-state). Create or update a named underwriting-assumptions preset.","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"assumptions":{"type":"object"}}}},{"name":"create_strategy_profile","description":"WRITE (scope: write-state). Create an alert subscription: criteria (strategy, min_percentile, max_price, bbox, min_confidence) + channels (telegram|webhook{url,secret}). The daily matcher pushes deduped, signed alerts with score + model-version provenance.","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"strategy":{"type":"string","enum":["flip","brrrr","hold","house_hack"]},"min_percentile":{"type":"number"},"max_price":{"type":"number"},"bbox":{"type":"array"},"min_confidence":{"type":"number"},"criteria":{"type":"object"},"channels":{"type":"object"}}}},{"name":"add_note","description":"WRITE (scope: write-state). Attach a freeform note to a property.","inputSchema":{"type":"object","properties":{"property_id":{"type":"string"},"entity_id":{"type":"string"},"body":{"type":"string","maxLength":4000}},"required":["body"]}},{"name":"update_map_filters","description":"UI-CONTROLLER. Push a filter update to the caller's open map (appended to the /api/events sync stream; the app applies it).","inputSchema":{"type":"object","properties":{"strategy":{"type":"string"},"min_percentile":{"type":"number"},"max_price":{"type":"number"},"min_confidence":{"type":"number"},"statuses":{"type":"array"}}}},{"name":"fly_to_location","description":"UI-CONTROLLER. Fly the caller's open map to a location.","inputSchema":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"zoom":{"type":"number"},"address":{"type":"string"}}}},{"name":"highlight_properties","description":"UI-CONTROLLER. Highlight a set of property ids on the caller's open map.","inputSchema":{"type":"object","properties":{"ids":{"type":"array"}}}}],"deprecations":{"search_deals":"search_investment_inventory","underwrite":"deep_underwrite_asset","comps":"get_comps"},"write_tools":["save_favorite_property","update_underwriting_preset","create_strategy_profile","add_note"],"ui_tools":["update_map_filters","fly_to_location","highlight_properties"],"scopes":["read","underwrite","write-state","webhooks"],"error_taxonomy":["units_required","price_required","outside_mapped_tracts","tract_not_ingested","insufficient_renovated_comps","dispersion_exceeds_threshold","luxury_thin_comps","rate_limited","invalid_params","not_found","unauthorized","forbidden_scope","payload_too_large","upstream_unavailable"],"changelog":"https://docs.plantedmoney.ai/developers/changelog","deprecation_policy":"Deprecated tool names keep working and are aliased to their replacement; they will be removed no sooner than 90 days after the changelog entry announcing removal.","as_of":"2026-09-07T12:29:00.000Z","model_versions":{"model":"p5v5-2026.07","underwrite":"p5v5-2026.07","serving":"p5s12-2026.07"},"warnings":[]}