MCP tools reference
Mashvisor MCP tools
14 tools for Mashvisor on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your own Mashvisor investor account
- Integration page
- Mashvisor
| Endpoint | Access | Description |
|---|---|---|
| mashvisor_find_properties | read | Property Finder: for-sale properties ranked by cash on cash return for your budget. |
| mashvisor_list_filter_presets | read | Your saved Map Property Finder filter presets, with name and filters. |
| mashvisor_run_filter_preset | read | Apply a saved preset to a city or neighborhood and return the matching listings with their metrics. |
| mashvisor_get_property_analysis | read | Property Analytics page: price, rental income, cash flow, cap rate and cash on cash return per strategy, Mashmeter and expenses. |
| mashvisor_get_property_comps | read | Comparable listings near a property, with occupancy, nightly rate, rent or sale price. |
| mashvisor_search_markets | read | Market Finder: neighborhoods and cities ranked by rental performance, with your filters. |
| mashvisor_list_saved_homes | read | Properties in your Saved Homes, with type, sale price and your rating. |
| mashvisor_list_property_alerts | read | Your Property Alerts with location, filters and email frequency. |
| mashvisor_export_neighborhood_data | read | Excel export of a neighborhood from Map Property Finder. Uses one of your plan's monthly exports. |
| mashvisor_download_property_report | read | PDF analytics report of a property, optionally with your company name and logo. Uses one download. |
| mashvisor_analyze_unlisted_property | write | Look up an off-market address, add it to Saved Homes and return its rental analysis. |
| mashvisor_save_home | write | Add a property to your Saved Homes. |
| mashvisor_remove_saved_home | write | Remove a property from your Saved Homes. |
| mashvisor_create_property_alert | write | New Property Alert: Mashvisor emails you new listings that match, only when there are any. |
Find properties
readMCP tool mashvisor_find_properties
Searches for-sale properties in one or more cities, as in Property Finder, ranked by cash on cash return for the rental strategy you pick. Radius works only with one city. Each item has the property_id that the analysis, comps and Saved Homes tools take.
Parameters
| Name | Type | Description |
|---|---|---|
| cities required | string[] | One or more cities, e.g. "Tampa, FL". |
| miles | integer | Radius around the city. Only with one city. |
| budget_min | integer | Minimum listing price in USD. |
| budget_max | integer | Maximum listing price in USD. |
| rental_strategy | enum | airbnb or traditional. |
| bedrooms | integer | Minimum bedrooms, 1 to 5. |
| bathrooms | integer | Minimum bathrooms, 1 to 5. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_find_properties",
"arguments": {
"cities": [
"Tampa, FL"
]
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"properties": [
{
"property_id": "p_88120",
"address": "1823 Schyler Ln, Tampa, FL",
"price": 365000,
"bedrooms": 3,
"bathrooms": 2,
"cash_on_cash": 13.1,
"cap_rate": 9.4
},
{
"property_id": "p_88144",
"address": "57 Palm Ct, Tampa, FL",
"price": 342000,
"bedrooms": 3,
"bathrooms": 2,
"cash_on_cash": 11.7,
"cap_rate": 8.5
}
]
},
"isError": false
} List filter presets
readMCP tool mashvisor_list_filter_presets
Returns the filter presets you saved with Save Filters in Map Property Finder, each with its name and filters. Pass preset_id to run_filter_preset or export_neighborhood_data. Presets are created, renamed and deleted in Mashvisor, not through Cotlet.
Parameters
No parameters.
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_list_filter_presets",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presets": [
{
"preset_id": "fp_2041",
"name": "Tampa STR under 400k",
"filters": {
"price_max": 400000,
"bedrooms_min": 3,
"property_type": "single_family"
}
},
{
"preset_id": "fp_2057",
"name": "Cleveland cash flow",
"filters": {
"price_max": 200000,
"bedrooms_min": 2
}
}
]
},
"isError": false
} Run filter preset
readMCP tool mashvisor_run_filter_preset
Applies one saved preset to a city or neighborhood and returns the matching listings with their metrics, like selecting the preset in Map Property Finder. The tab picks the same three views as the app: investment, airbnb_comps or rental_comps. Results come back in the order the app shows them.
Parameters
| Name | Type | Description |
|---|---|---|
| preset_id required | string | Preset ID from list_filter_presets. |
| location required | string | City or neighborhood, e.g. "Ybor City, Tampa, FL". |
| tab | enum | investment, airbnb_comps or rental_comps. Default: investment. |
| limit | integer | 1 to 100. Default: 25. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_run_filter_preset",
"arguments": {
"preset_id": "fp_2041",
"location": "Ybor City, Tampa, FL",
"tab": "investment",
"limit": 25
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"preset": "Tampa STR under 400k",
"location": "Ybor City, Tampa, FL",
"tab": "investment",
"listings": [
{
"property_id": "p_88120",
"address": "1823 Schyler Ln, Tampa, FL",
"price": 365000,
"cash_on_cash": 13.1,
"cap_rate": 9.4
},
{
"property_id": "p_88151",
"address": "910 E 8th Ave, Tampa, FL",
"price": 389000,
"cash_on_cash": 10.8,
"cap_rate": 8.1
},
{
"property_id": "p_88163",
"address": "2204 N 15th St, Tampa, FL",
"price": 329000,
"cash_on_cash": 10.2,
"cap_rate": 7.9
}
]
},
"isError": false
} MCP tool mashvisor_get_property_analysis
Returns the numbers of the Property Analytics page for one property: price, rental income, expenses, cash flow, cap rate and cash on cash return, for the Airbnb and the traditional rental strategy. Set strategy to get one of them. Figures are estimates from Mashvisor, as in the app.
Parameters
| Name | Type | Description |
|---|---|---|
| property_id required | string | Property ID from find_properties, run_filter_preset or list_saved_homes. |
| strategy | enum | airbnb, traditional or both. Default: both. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_get_property_analysis",
"arguments": {
"property_id": "p_88120",
"strategy": "both"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"property_id": "p_88120",
"address": "1823 Schyler Ln, Tampa, FL",
"price": 365000,
"cash_invested": 91250,
"airbnb": {
"monthly_revenue": 4000,
"monthly_operating_expenses": 1150,
"monthly_mortgage": 1850,
"monthly_cash_flow": 1000,
"cap_rate": 9.4,
"cash_on_cash": 13.1
},
"traditional": {
"monthly_revenue": 2600,
"monthly_operating_expenses": 650,
"monthly_mortgage": 1850,
"monthly_cash_flow": 100,
"cap_rate": 6.4,
"cash_on_cash": 1.3
}
},
"isError": false
} Get property comps
readMCP tool mashvisor_get_property_comps
Returns comparable listings near one property. short_term gives Airbnb comps with occupancy and nightly rate, long_term gives rentals with monthly rent, and sales gives sold or listed prices. Nearest comps come first.
Parameters
| Name | Type | Description |
|---|---|---|
| property_id required | string | Property ID from find_properties, run_filter_preset or list_saved_homes. |
| type required | enum | short_term, long_term or sales. |
| limit | integer | 1 to 50. Default: 20. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_get_property_comps",
"arguments": {
"property_id": "property_8c41d2",
"type": "short_term"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"property_id": "p_90417",
"type": "short_term",
"comps": [
{
"address": "420 Oak Street, Austin, TX",
"bedrooms": 3,
"nightly_rate": 245,
"occupancy": 68,
"distance_miles": 0.2
},
{
"address": "17 Elm Ave, Austin, TX",
"bedrooms": 3,
"nightly_rate": 229,
"occupancy": 63,
"distance_miles": 0.4
}
]
},
"isError": false
} Search markets
readMCP tool mashvisor_search_markets
Returns neighborhoods and cities from Market Finder, ranked by rental performance, with your filters applied. Filter by state, Mashmeter grade, minimum monthly revenue, minimum occupancy and property types. Without a state it searches nationwide.
Parameters
| Name | Type | Description |
|---|---|---|
| state | string | Two-letter state code. Default: nationwide. |
| mashmeter | string[] | Grades to include: A, B, C, D. |
| min_monthly_revenue | integer | Minimum monthly rental revenue in USD. |
| min_occupancy | integer | Minimum occupancy rate in percent. |
| property_types | string[] | Property types to include. |
| limit | integer | 1 to 50. Default: 20. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_search_markets",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"markets": [
{
"market": "Gatlinburg, TN",
"mashmeter": "A",
"occupancy": 72,
"monthly_revenue": 5400
},
{
"market": "Destin, FL",
"mashmeter": "A",
"occupancy": 69,
"monthly_revenue": 5100
},
{
"market": "Pigeon Forge, TN",
"mashmeter": "A",
"occupancy": 67,
"monthly_revenue": 4700
}
]
},
"isError": false
} List Saved Homes
readMCP tool mashvisor_list_saved_homes
Returns the properties in your Saved Homes with type, sale price and your rating. Properties added by analyze_unlisted_property or save_home are included. Use property_id with get_property_analysis, get_property_comps or remove_saved_home.
Parameters
| Name | Type | Description |
|---|---|---|
| limit | integer | 1 to 100. Default: 50. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_list_saved_homes",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"homes": [
{
"property_id": "p_88120",
"address": "1823 Schyler Ln, Tampa, FL",
"type": "single_family",
"sale_price": 365000,
"rating": 4
},
{
"property_id": "p_90417",
"address": "412 Oak Street, Austin, TX",
"type": "single_family",
"sale_price": 385000,
"rating": null
}
]
},
"isError": false
} List Property Alerts
readMCP tool mashvisor_list_property_alerts
Returns your Property Alerts with their location, filters and email frequency. Use it before create_property_alert so your agent does not add a duplicate.
Parameters
No parameters.
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_list_property_alerts",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"alerts": [
{
"alert_id": "pa_58102",
"name": "Tampa condos",
"location": "Tampa, FL",
"property_type": "condo",
"price_max": 300000,
"frequency": "weekly"
}
]
},
"isError": false
} MCP tool mashvisor_export_neighborhood_data
Creates the Excel export that the Export button gives in Map Property Finder, for one neighborhood and one tab. Without preset_id it exports all data; with a preset it exports only the matching listings. City-level export is not supported. Each call uses one of your plan's monthly exports, so it reads from Mashvisor but is not free of limits.
Parameters
| Name | Type | Description |
|---|---|---|
| neighborhood required | string | Neighborhood name with city. City-level export is not supported. |
| tab required | enum | investment, airbnb_comps or rental_comps. |
| preset_id | string | Export only listings matching this preset. Default: all data. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_export_neighborhood_data",
"arguments": {
"neighborhood": "neighborhood",
"tab": "investment"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"neighborhood": "Ybor City, Tampa, FL",
"tab": "airbnb_comps",
"scope": "filtered",
"file_name": "ybor-city-airbnb-comps.xlsx",
"download_url": "https://files.cotlet.example/exports/ybor-city-airbnb-comps.xlsx",
"rows": 38
},
"isError": false
} MCP tool mashvisor_download_property_report
Creates the PDF analytics report from the download icon on a property page. With branded set to true it adds the company name and logo saved in your account. Mashvisor limits downloads by plan, and each call uses one.
Parameters
| Name | Type | Description |
|---|---|---|
| property_id required | string | Property ID from find_properties, run_filter_preset or list_saved_homes. |
| branded | boolean | Add the company branding saved in your account. Default: false. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_download_property_report",
"arguments": {
"property_id": "property_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"property_id": "p_88120",
"branded": false,
"file_name": "schyler-ln-tampa-report.pdf",
"download_url": "https://files.cotlet.example/reports/schyler-ln-tampa-report.pdf"
},
"isError": false
} MCP tool mashvisor_analyze_unlisted_property
Runs the "look up not listed property" flow for an address and returns the rental analysis. It adds the property to your Saved Homes. This reaches no one and is undone with remove_saved_home, so it runs without asking first.
Parameters
| Name | Type | Description |
|---|---|---|
| address required | string | Full US street address. |
| price required | integer | Price in USD. |
| property_type required | enum | single_family, condo, townhouse, apartment or multi_family. |
| bedrooms required | integer | Number of bedrooms. |
| bathrooms required | integer | Number of bathrooms. |
| sqft required | integer | Square footage. |
| unit | string | Unit number for apartments, condos and townhomes. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_analyze_unlisted_property",
"arguments": {
"address": "412 Oak Street, Austin, TX",
"price": 385000,
"property_type": "single_family",
"bedrooms": 3,
"bathrooms": 2,
"sqft": 1650
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"property_id": "p_90417",
"address": "412 Oak Street, Austin, TX",
"saved_to_saved_homes": true,
"price": 385000,
"cash_invested": 96250,
"airbnb": {
"monthly_revenue": 4200,
"monthly_operating_expenses": 1200,
"monthly_mortgage": 1950,
"monthly_cash_flow": 1050,
"cap_rate": 9.4,
"cash_on_cash": 13.1
},
"traditional": {
"monthly_revenue": 2700,
"monthly_operating_expenses": 650,
"monthly_mortgage": 1950,
"monthly_cash_flow": 100,
"cap_rate": 6.4,
"cash_on_cash": 1.2
}
},
"isError": false
} Save home
writeMCP tool mashvisor_save_home
Adds one property to your Saved Homes. This reaches no one and is undone with remove_saved_home, so it runs without asking first.
Parameters
| Name | Type | Description |
|---|---|---|
| property_id required | string | Property ID from find_properties, run_filter_preset or list_saved_homes. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_save_home",
"arguments": {
"property_id": "property_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"property_id": "p_88144",
"saved": true
},
"isError": false
} Remove saved home
writeMCP tool mashvisor_remove_saved_home
Removes one property from your Saved Homes. This reaches no one and the property can be added again with save_home, so it runs without asking first.
Parameters
| Name | Type | Description |
|---|---|---|
| property_id required | string | Property ID from find_properties, run_filter_preset or list_saved_homes. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_remove_saved_home",
"arguments": {
"property_id": "property_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"property_id": "p_88144",
"saved": false
},
"isError": false
} MCP tool mashvisor_create_property_alert
Creates a Property Alert in your account. Mashvisor then emails you new matching listings at the frequency you set, and only when there are any. Price runs from 5,000 to 5,000,000 USD. There is no tool to delete an alert, so you remove one in Mashvisor. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| name required | string | Alert name. |
| location required | string | Address, neighborhood, city or zip code. |
| property_type | enum | all, single_family, condo, townhouse or multi_family. Default: all. |
| price_min | integer | Minimum price in USD, from 5,000. |
| price_max | integer | Maximum price in USD, up to 5,000,000. |
| bedrooms | integer | Minimum bedrooms, 1 to 5. |
| financing | enum | cash or mortgage. Default: cash. |
| min_cap_rate | integer | Minimum cap rate in percent. |
| min_cash_on_cash | integer | Minimum cash on cash return in percent. |
| frequency | enum | daily, weekly or monthly. Default: weekly. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mashvisor_create_property_alert",
"arguments": {
"name": "Cleveland SFH under 200k",
"location": "Cleveland, OH",
"property_type": "single_family",
"price_max": 200000,
"financing": "cash",
"min_cap_rate": 8,
"frequency": "weekly"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"alert_id": "pa_58213",
"name": "Cleveland SFH under 200k",
"location": "Cleveland, OH",
"frequency": "weekly",
"email_to": "yourname@example.com",
"status": "active"
},
"isError": false
}