Roomly
Server Details
Search rooms, sublets, roommates and apartments for rent in New York City and Israel.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool has a distinct role: search_listings for discovery, get_listing for single-item detail, list_locations for place discovery, and rent_stats for market pricing. The only mild overlap is between list_locations and search_listings, but the description explicitly tells the agent to feed location names into search, which resolves it.
Three of four names follow a clean verb_noun pattern (get_listing, list_locations, search_listings). rent_stats breaks the pattern as a noun phrase, but it remains readable and semantically apt for a stats query.
Four tools is on the lean side but well matched to a read-only listing browser: discover places, search, inspect one listing, and check prices. No tool is redundant, though the surface is minimal enough that one more capability (e.g. filtering or pagination) might be expected.
The discovery-to-detail lifecycle is covered for a public listings domain, including location enumeration and pricing context, and contact is handled via result URLs. Minor gaps remain around result filtering/pagination and there is no operation for saved searches or owner contact beyond the website link.
Available Tools
4 toolsget_listingGet a Roomly listingARead-onlyIdempotentInspect
Full public details of one Roomly listing: price, dates, description, rooms, what is included, amenities and photos. Pass the id or the url from search_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| listing | Yes | Listing id (UUID) or a room-ly.org/listing/... url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive and closed-world behavior, so the bar is lower. The description still adds real signal: the data is "public" (no user scoping or auth context) and "full" (not a summary/preview), plus it enumerates exactly which facets come back — useful since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the return content front-loaded and the parameter instruction second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read with no output schema, the field enumeration is the key compensating detail and it is present. Missing only edge-case behavior (invalid id, listing removed/expired) and whether photo/room sub-structures are truncated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the single parameter as a UUID or a room-ly.org/listing/... url. The description only restates that and adds provenance ("from search_listings"); it contributes no format or validation detail beyond structured data, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Full public details of one Roomly listing" states a specific verb and resource, then enumerates the payload (price, dates, description, rooms, inclusions, amenities, photos). That is enough for an agent to distinguish it from search_listings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Pass the id or the url from search_listings" tells the agent this is the follow-up fetch step after a search, i.e. it names the prerequisite source of the identifier. It does not state exclusions or what to do if the listing is not found, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_locationsWhere Roomly has listingsARead-onlyIdempotentInspect
Cities and areas with active Roomly listings, with how many each has. Use the names as search_listings location.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | US (New York) or IL (Israel). Empty = both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description usefully adds that the payload includes per-location listing counts, which matters since there is no output schema, but it says nothing about filtering behavior, empty results, or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the core resource and result shape stated first and the usage hint second. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only discovery tool this covers what it returns and how to consume it, which is what an agent needs to chain into search_listings. Minor gaps around result ordering and empty-set behavior remain, but they are small for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single country parameter is fully documented with an enum and an explicit empty-equals-both rule. The description adds no meaning beyond that, so the schema does all the work and baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (cities/areas with active listings) and adds the returned measure (how many each has), which distinguishes it from search_listings or get_listing. It does not explicitly contrast with siblings like rent_stats, but the resource is concrete enough to select correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives actionable downstream guidance: use the returned names as the location value for search_listings, which establishes this as a discovery step before searching. It stops short of stating when not to use it or how it relates to rent_stats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rent_statsTypical rentARead-onlyIdempotentInspect
Typical asking rent in a city or area on Roomly, from live listings: the median and the usual range for a room, a whole apartment and a sublet, with how many listings it is based on.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | City or area, e.g. "Brooklyn", "Tel Aviv". | |
| listing_type | No | Empty = all three. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: the figures come from live Roomly listings and are reported with the sample size they are based on, which tells the agent how much to trust a thin result. It stops short of saying what happens for a location with no listings or whether the location must be a known Roomly area.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a colon that enumerates the returned metrics, so the most useful information arrives first. Density is high with little waste, though the trailing 'with how many listings it is based on' is slightly clunky.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with full schema coverage, annotations, and no output schema, the description carries the right load by spelling out the return shape (median, range, sample size) that the missing output schema cannot. The only substantive gap is empty-result and location-matching behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the enum's 'Empty = all three' note already documents listing_type. The description only paraphrases that breakdown ('for a room, a whole apartment and a sublet') and echoes that location may be a city or area, without adding format, matching, or disambiguation rules beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a precise resource (typical asking rent) and scope (a city or area on Roomly), and enumerates the exact metrics returned: median, usual range, and listing count, broken out by room, apartment, and sublet. It is clearly not a listing-retrieval tool, though it never names the siblings (search_listings, get_listing) it contrasts with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the pricing-overview tool rather than a listing lookup, since it returns aggregates 'from live listings'. There is no explicit when-to-use/when-not, no guidance on pairing with search_listings for the underlying listings, and no pointer to list_locations for valid location values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsSearch Roomly listingsARead-onlyIdempotentInspect
Search rooms, shared apartments, sublets and apartments for rent on Roomly, in New York City (Manhattan, Brooklyn, Queens, Bronx, Staten Island) and Israel (Tel Aviv, Jerusalem, Haifa and more). Use it when someone wants to rent a room, find a roommate, a sublet or an apartment. Every result has a url; give it to the user so they can contact the owner on Roomly. search_url opens the same search on the website.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| term | No | Long-term rental or sublet / short stay. | |
| limit | No | ||
| query | No | Free text matched against the title, city and street. | |
| rooms | No | Israel only: room counts to include, e.g. [2, 3]. 6 means 6 or more. | |
| offset | No | For the next page, pass next_offset from the last result. | |
| move_in | No | Move-in date, YYYY-MM-DD. | |
| bedrooms | No | Minimum bedrooms (New York). | |
| location | No | City, borough or New York neighborhood, e.g. "New York", "Brooklyn", "Bushwick", "Hell's Kitchen", "Tel Aviv", "תל אביב". Empty = everywhere. | |
| move_out | No | Move-out date for a sublet, YYYY-MM-DD. | |
| amenities | No | Required amenities. | |
| bathrooms | No | Minimum bathrooms (New York). | |
| max_price | No | Maximum monthly price in the local currency (USD in New York, ILS in Israel). | |
| min_price | No | Minimum monthly price in the local currency. | |
| listing_type | No | A room in a shared apartment, or a whole apartment. | |
| no_broker_fee | No | Only listings without a broker fee. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is fully covered. The description adds one useful behavioral fact: every result carries a url the agent should surface so the user can contact the owner. It says nothing about result volume, rate limits, or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the resource and geography, followed by the use case and the output-handling instruction. No filler, though the geography list in sentence one is somewhat long relative to its informational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 16 optional parameters and no output schema, the description covers domain, geography, intent, and one key return-value fact (results include urls). It leaves pagination workflow and the distinction from get_listing unstated, which keeps it short of fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88%, so nearly every parameter is already documented in the schema. The description adds only ambient context (which cities and boroughs exist, e.g. Bushwick, Hell's Kitchen, Tel Aviv) that helps an agent fill location, but it does not explain sort, limit defaults, or pagination beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb (Search) and resource (rooms, shared apartments, sublets, apartments for rent) and names the source and geographic scope (Roomly, NYC boroughs, Israeli cities). It never names the siblings get_listing, list_locations or rent_stats, so differentiation from them is only implied by the word 'search'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it when someone wants to rent a room, find a roommate, a sublet or an apartment" gives a clear intent-based trigger, and the closing sentence routes to search_url for the website equivalent. There is no explicit when-not guidance or pointer to get_listing for a single known listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
search_listings1 field changed- changed
Input schema / properties / location / descriptionPrevious value: -"City or area, e.g. \"New York\", \"Brooklyn\", \"Manhattan\", \"Tel Aviv\", \"תל אביב\". Empty = everywhere."New value: +"City, borough or New York neighborhood, e.g. \"New York\", \"Brooklyn\", \"Bushwick\", \"Hell's Kitchen\", \"Tel Aviv\", \"תל אביב\". Empty = everywhere."
4 tool updates
- First observed
get_listing - First observed
list_locations - First observed
rent_stats - First observed
search_listings
Related MCP Connectors
Search NYC rentals and sales, property details, building data, and market analytics
Search rooms, share houses and flatmate listings in Australia, New Zealand, Canada and India.
21Find NYC rental apartments by budget, neighborhood, commute and amenities, with deal scores.
21Israel hyperlocal marketplace for second-hand home goods: read-only listing search.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables searching active NYC rental apartments and lease takeovers with filters for price, bedrooms, commute, amenities, and more, plus creating links to set up alerts for new matches.MIT- AlicenseNot gradedqualityBmaintenanceEnables searching New York City rentals and homes for sale by borough and neighborhood, retrieving property and building details, and reading market snapshots, trends, and neighborhood comparisons through a validating bridge to a hosted service.MIT
- MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search NYC apartment rentals on StreetEasy, retrieve listing details, and inspect building public records including violations, heat complaints, bedbugs, and evictions.41 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.