Apartment hunting in Florida, Georgia, Maryland, Virginia: rents, briefs, hunt links.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Validate a hunt brief and get a URL that pre-fills the full hunt form for the human. Works with partial briefs (missing_fields lists what to collect).
Hunt brief per get_hunt_requirements (city_id, min_price, max_price, bedrooms, move_in_date, proximity_criteria[], amenities{}, additional_questions[])
Your product name, e.g. 'claude', 'openclaw'
Validate a hunt brief and get a URL that pre-fills the full hunt form for the human. Works with partial briefs (missing_fields lists what to collect).
| Argument | Type | Description |
|---|---|---|
| channel | string | Your product name, e.g. 'claude', 'openclaw' |
| hunt_params* | object | Hunt brief per get_hunt_requirements (city_id, min_price, max_price, bedrooms, move_in_date, proximity_criteria[], amenities{}, additional_questions[]) |
{
"type": "object",
"required": [
"hunt_params"
],
"properties": {
"channel": {
"type": "string",
"description": "Your product name, e.g. 'claude', 'openclaw'"
},
"hunt_params": {
"type": "object",
"description": "Hunt brief per get_hunt_requirements (city_id, min_price, max_price, bedrooms, move_in_date, proximity_criteria[], amenities{}, additional_questions[])"
}
}
}Aggregate status of a hunt link (created/opened/started) — no personal data.
| Argument | Type | Description |
|---|---|---|
| token* | string |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string"
}
}
}Fetch full content by id from search: markdown text + canonical url for citations.
| Argument | Type | Description |
|---|---|---|
| id* | string | city:<slug> | neighborhood:<city>:<nb> | doc:hunt-how-to |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "city:<slug> | neighborhood:<city>:<nb> | doc:hunt-how-to"
}
}
}Neighborhood-level overview of a live city: median rents (1BR/2BR), walk/transit/bike scores per neighborhood.
| Argument | Type | Description |
|---|---|---|
| city* | string | City slug or name, e.g. 'alexandria' |
{
"type": "object",
"required": [
"city"
],
"properties": {
"city": {
"type": "string",
"description": "City slug or name, e.g. 'alexandria'"
}
}
}See which cities have been requested most. Useful for telling users whether their city has demand.
No arguments.
{
"type": "object",
"properties": {}
}Every hunt field, enum, and rule; canonical amenity keys; binary restrictions (55+, pets, smoking); transparent credit pricing. Read this before collecting a hunt brief.
| Argument | Type | Description |
|---|---|---|
| city | string | Optional city to pin the brief to |
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Optional city to pin the brief to"
}
}
}Full detail for one neighborhood: rents, scores, POI counts, descriptions, nearby neighborhoods.
| Argument | Type | Description |
|---|---|---|
| city* | string | |
| neighborhood* | string | slug or name |
{
"type": "object",
"required": [
"city",
"neighborhood"
],
"properties": {
"city": {
"type": "string"
},
"neighborhood": {
"type": "string",
"description": "slug or name"
}
}
}Realtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error. Search your hunt's building inventory by name and manually add the one unambiguous match into the hunt (several matches: top 3 are named and nothing is added).
| Argument | Type | Description |
|---|---|---|
| query* | string | Building name fragment (min 2 chars) |
| hunt_id* | integer |
{
"type": "object",
"required": [
"hunt_id",
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Building name fragment (min 2 chars)"
},
"hunt_id": {
"type": "integer"
}
}
}Realtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error. Invite a client by email; the invitation email carries a 7-day accept link. Gated on an active subscription/trial.
| Argument | Type | Description |
|---|---|---|
| email* | string | |
| last_name* | string | |
| first_name* | string |
{
"type": "object",
"required": [
"email",
"first_name",
"last_name"
],
"properties": {
"email": {
"type": "string"
},
"last_name": {
"type": "string"
},
"first_name": {
"type": "string"
}
}
}Realtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error. Create a hunt FOR one of your clients (fields mirror get_hunt_requirements). Returns hunt_id + matched_count; the hunt parks at awaiting_realtor_curation. Gated on an active subscription/trial.
| Argument | Type | Description |
|---|---|---|
| name* | string | Hunt name, e.g. 'Priya - Capitol Hill 2BR' |
| city_id* | integer | Live city id (search_cities returns ids) |
| bedrooms | string | |
| max_price | number | Monthly USD, > min_price |
| min_price | number | Monthly USD |
| client_email | string | Alternative to client_user_id: the client's linked email |
| move_in_date | string | Must be a future date |
| client_user_id | integer | Your client's user id (realtor_list_clients). Provide client_user_id OR client_email. |
| proximity_criteria |
Realtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error. Curate the candidate list WITHOUT sending: removals [{id, reason?}] and notes [{id, internal_notes?, client_notes?}] (hunt_building ids from realtor_list_candidate_buildings). Not gated.
| Argument | Type | Description |
|---|---|---|
| notes | array | |
| hunt_id* | integer | |
| removals | array |
{
"type": "object",
"required": [
"hunt_id"
],
"properties": {
"notes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"client_notes": {
"type": "string",
"description": "Shown to the client in review"
},
"internal_notes": {
"type": "string",
"description": "Private to you (never shown to the client)"
}
}
}
},
"hunt_id": {
"type": "integer"
},
"removals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"reason": {
"type": "string"
}
}
}
}
}
}Realtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error. Status of one of your hunts: review_state, counts, and the client's name.
| Argument | Type | Description |
|---|---|---|
| hunt_id* | integer |
{
"type": "object",
"required": [
"hunt_id"
],
"properties": {
"hunt_id": {
"type": "integer"
}
}
}Realtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error. The matched candidate list for one of your hunts (counts + buildings with eligibility, distance, and your curation status).
| Argument | Type | Description |
|---|---|---|
| hunt_id* | integer |
{
"type": "object",
"required": [
"hunt_id"
],
"properties": {
"hunt_id": {
"type": "integer"
}
}
}Realtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error. Accepted clients (id, name, email) + pending invitations (email, expires).
No arguments.
{
"type": "object",
"properties": {}
}Realtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error. Send the curated list to the client: every non-removed building becomes included and the hunt moves to awaiting_client_approval (the CLIENT releases outreach). Gated on an active subscription/trial.
| Argument | Type | Description |
|---|---|---|
| hunt_id* | integer |
{
"type": "object",
"required": [
"hunt_id"
],
"properties": {
"hunt_id": {
"type": "integer"
}
}
}Request that Fless expand to a new city. Use when the user's target city is not currently served (check live coverage first with search_cities). Returns the total request count for that city. No account or email needed.
| Argument | Type | Description |
|---|---|---|
| city* | string | City name, e.g. 'Houston' |
| state* | string | 2-letter US state code, e.g. 'TX' |
{
"type": "object",
"required": [
"city",
"state"
],
"properties": {
"city": {
"type": "string",
"maxLength": 100,
"description": "City name, e.g. 'Houston'"
},
"state": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"description": "2-letter US state code, e.g. 'TX'"
}
}
}Search Fless content (cities, neighborhoods, hunt guide). Returns citable ids for fetch.
| Argument | Type | Description |
|---|---|---|
| query* | string |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string"
}
}
}List cities where Fless operates (live + coming soon). Returns ids needed for hunts.
| Argument | Type | Description |
|---|---|---|
| query | string | Optional name/state filter |
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Optional name/state filter"
}
}
}Report a problem with Fless tools or data so we can fix it. Include: the tool you called, the error code from the error contract if present, what happened vs what you expected. Do NOT include personal data.
| Argument | Type | Description |
|---|---|---|
| tool_name* | string | The tool (or surface) the problem occurred on. |
| error_code | string | Error code from the error contract, if present (e.g. CITY_NOT_FOUND). Omit when absent. |
| error_type* | string | What kind of problem this is. |
| what_expected | string | What you expected to happen instead (optional). |
| what_happened* | string | Factual description of what happened (plain text, no personal data, 10-1000 chars). |
{
"type": "object",
"required": [
"error_type",
"tool_name",
"what_happened"
],
"properties": {
"tool_name": {
"enum": [
"search_cities",
"get_city_overview",
"get_neighborhood",
"get_hunt_requirements",
"build_hunt_link",
"check_hunt_link",
"request_city",
"get_city_request_stats",
"search",
"fetch",
"submit_error_report",
"website",
"docs",
"other"
],
"type": "string",
"description": "The tool (or surface) the problem occurred on."
},
"error_code": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]{0,63}$",
"description": "Error code from the error contract, if present (e.g. CITY_NOT_FOUND). Omit when absent."
},
"error_type": {
"enum": [
"tool_error",
"bad_data",
"missing_city",
"documentation",
"auth",
"rate_limit",
"other"
],
"type": "string",
"description": "What kind of problem this is."
},
"what_expected": {
"type": "string",
"maxLength": 500,
"description": "What you expected to happen instead (optional)."
},
"what_happened": {
"type": "string",
"maxLength": 1000,
"minLength": 10,
"description": "Factual description of what happened (plain text, no personal data, 10-1000 chars)."
}
}
}| array |
| POIs the hunt centers on (name, latitude, longitude, category?, max_distance miles 0.1-10) |
{
"type": "object",
"required": [
"name",
"city_id"
],
"properties": {
"name": {
"type": "string",
"description": "Hunt name, e.g. 'Priya - Capitol Hill 2BR'"
},
"city_id": {
"type": "integer",
"description": "Live city id (search_cities returns ids)"
},
"bedrooms": {
"enum": [
"0",
"1",
"2",
"3",
"4",
"4+",
"studio"
],
"type": "string"
},
"max_price": {
"type": "number",
"description": "Monthly USD, > min_price"
},
"min_price": {
"type": "number",
"description": "Monthly USD"
},
"client_email": {
"type": "string",
"description": "Alternative to client_user_id: the client's linked email"
},
"move_in_date": {
"type": "string",
"format": "YYYY-MM-DD",
"description": "Must be a future date"
},
"client_user_id": {
"type": "integer",
"description": "Your client's user id (realtor_list_clients). Provide client_user_id OR client_email."
},
"proximity_criteria": {
"type": "array",
"items": {
"type": "object"
},
"description": "POIs the hunt centers on (name, latitude, longitude, category?, max_distance miles 0.1-10)"
}
}
}