Fless Apartment Hunt
by fless.io · remote · no sign-in to list tools · v1.5.1 · published by io.fless
Apartment hunting in Florida, Georgia, Maryland, Virginia: rents, briefs, hunt links.
19 tools: 1 do something that can't be undone, 8 change things and 10 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things8Claude Code: ask: see these tools
- Only reads10Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http fless https://mcp.fless.io/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnbuild_hunt_link
The server marks "build_hunt_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "build_hunt_link" says "link": a word for a change.
- Warncheck_hunt_link
The server marks "check_hunt_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "check_hunt_link" says "link": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
19 tools
Can't be undone 1Claude Code: ask
realtor_send_to_clientRealtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error.No findings
Why it is in this group
- The name "realtor_send_to_client" says "send": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Changes things 8Claude Code: ask
build_hunt_linkValidate a hunt brief and get a URL that pre-fills the full hunt form for the human.1 finding
Why it is in this group
- The name "build_hunt_link" says "link": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "build_hunt_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "build_hunt_link" says "link": a word for a change.
Description, as the server wrote 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
check_hunt_linkAggregate status of a hunt link (created/opened/started) — no personal data.1 finding
Why it is in this group
- The name "check_hunt_link" says "link": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "check_hunt_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "check_hunt_link" says "link": a word for a change.
Description, as the server wrote it Aggregate status of a hunt link (created/opened/started) — no personal data.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
realtor_add_building_to_huntRealtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error.No findings
Why it is in this group
- The name "realtor_add_building_to_hunt" says "add": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
realtor_create_clientRealtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error.No findings
Why it is in this group
- The name "realtor_create_client" says "create": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
realtor_create_huntRealtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error.No findings
Why it is in this group
- The name "realtor_create_hunt" says "create": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
realtor_curate_huntRealtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
request_cityRequest that Fless expand to a new city.No findings
Why it is in this group
- The name "request_city" says "request": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
submit_error_reportReport a problem with Fless tools or data so we can fix it.No findings
Why it is in this group
- The name "submit_error_report" says "submit": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 10Claude Code: allow
fetchFetch full content by id from search: markdown text + canonical url for citations.No findings
Why it is in this group
- The name "fetch" says "fetch": a word for reading.
Description, as the server wrote it Fetch full content by id from search: markdown text + canonical url for citations.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_city_overviewNeighborhood-level overview of a live city: median rents (1BR/2BR), walk/transit/bike scores per neighborhood.No findings
Why it is in this group
- The name "get_city_overview" says "get": a word for reading.
Description, as the server wrote it Neighborhood-level overview of a live city: median rents (1BR/2BR), walk/transit/bike scores per neighborhood.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_city_request_statsSee which cities have been requested most.No findings
Why it is in this group
- The name "get_city_request_stats" says "get": a word for reading.
Description, as the server wrote it See which cities have been requested most. Useful for telling users whether their city has demand.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_hunt_requirementsEvery hunt field, enum, and rule; canonical amenity keys; binary restrictions (55+, pets, smoking); transparent credit pricing.No findings
Why it is in this group
- The name "get_hunt_requirements" says "get": a word for reading.
Description, as the server wrote it Every hunt field, enum, and rule; canonical amenity keys; binary restrictions (55+, pets, smoking); transparent credit pricing. Read this before collecting a hunt brief.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_neighborhoodFull detail for one neighborhood: rents, scores, POI counts, descriptions, nearby neighborhoods.No findings
Why it is in this group
- The name "get_neighborhood" says "get": a word for reading.
Description, as the server wrote it Full detail for one neighborhood: rents, scores, POI counts, descriptions, nearby neighborhoods.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
realtor_get_hunt_statusRealtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error.No findings
Why it is in this group
- The name "realtor_get_hunt_status" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
realtor_list_candidate_buildingsRealtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error.No findings
Why it is in this group
- The name "realtor_list_candidate_buildings" says "list": a word for reading.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
realtor_list_clientsRealtor tool: requires Authorization: Bearer with an API key (create one at fless.io/realtor under API keys); anonymous calls return the structured UNAUTHORIZED error.No findings
Why it is in this group
- The name "realtor_list_clients" says "list": a word for reading.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
searchSearch Fless content (cities, neighborhoods, hunt guide).No findings
Why it is in this group
- The name "search" says "search": a word for reading.
Description, as the server wrote it Search Fless content (cities, neighborhoods, hunt guide). Returns citable ids for fetch.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_citiesList cities where Fless operates (live + coming soon).No findings
Why it is in this group
- The name "search_cities" says "search": a word for reading.
Description, as the server wrote it List cities where Fless operates (live + coming soon). Returns ids needed for hunts.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.5.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http fless https://mcp.fless.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__fless__search_cities",
"mcp__fless__get_city_overview",
"mcp__fless__get_neighborhood",
"mcp__fless__get_hunt_requirements",
"mcp__fless__get_city_request_stats",
"mcp__fless__search",
"mcp__fless__fetch",
"mcp__fless__realtor_list_clients",
"mcp__fless__realtor_list_candidate_buildings",
"mcp__fless__realtor_get_hunt_status"
],
"ask": [
"mcp__fless__build_hunt_link",
"mcp__fless__check_hunt_link",
"mcp__fless__request_city",
"mcp__fless__submit_error_report",
"mcp__fless__realtor_create_client",
"mcp__fless__realtor_create_hunt",
"mcp__fless__realtor_curate_hunt",
"mcp__fless__realtor_add_building_to_hunt",
"mcp__fless__realtor_send_to_client"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as fless. Review it before you use it.