Jagir
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Jagirfind the cheapest villas in Ramsar for 4 guests, Oct 15–17"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Jagir (جاگیر, "place-finder") is a Model Context Protocol server that lets Claude and other AI assistants search Jabama, Jajiga and Otaghak, Iran's largest vacation-rental platforms, at the same time.
Ask in plain Persian or English. Jagir fans out to all three platforms, normalizes the results (Toman, Gregorian or Jalali dates, one schema), and gives your assistant everything it needs to compare: prices, availability, amenities, cleanliness scores and full guest reviews.
«یه ویلا با ویو جنگل نزدیک رشت برای ۵ نفر، ۱۵ تا ۱۸ مهر، امتیاز بالای ۴.۵ و خیلی تمیز پیدا کن.»
Claude searches all three sites, filters by cleanliness sub-rating, reads the reviews for complaints, quotes the exact total for 5 guests, and hands you a comparison table with booking links.
Why Jagir
One search, three platforms. Results are merged and sorted together (by price, rating or relevance). If one platform is down, the others still answer.
Built for Iran. Prices in Toman (Jabama's Rial is converted), dates in Jalali (
1405-07-15) or Gregorian (2026-10-07), Persian labels kept as-is.Everything a listing has. Amenities and what's missing, house rules, bed layout, area, privacy, view and setting, distance to the sea or city center, check-in times, cancellation policy, discounts and every photo.
Cleanliness and sub-ratings. Each platform's rating breakdown (cleanliness, accuracy, host, location, value…) plus the star distribution.
Full guest reviews. Complete review text, dates, host replies and, on Otaghak, the positives and negatives each guest listed.
Real prices. Per-night calendars and quotes for your exact dates and number of guests, including extra-guest charges and service fees.
Read-only and private. No login, no booking, no tracking. It never returns host phone numbers or names, and reviewer names are dropped.
Related MCP server: Airbnb MCP Server
Quick start
Claude Desktop: one-click extension (recommended)
Download
jagir.mcpbfrom the latest release.Double-click it. Claude Desktop opens an install dialog; click Install.
No Node.js needed: Claude Desktop runs the extension with its built-in runtime.
Claude Code
claude mcp add jagir -- npx -y jagir-mcpOther MCP clients (manual config)
Requires Node.js 20+.
{
"mcpServers": {
"jagir": { "command": "npx", "args": ["-y", "jagir-mcp"] }
}
}Claude Desktop's config file lives at ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows). Restart the app after editing it.
Tools
Tool | What it does |
| Search a city or region on all three platforms at once. Filters: dates, guests, price range, sort, platforms. Returns merged, normalized results. |
| Everything about one listing: amenities and missing amenities, rules, rating breakdown (incl. cleanliness), beds, area, privacy, view and setting, distances, discounts, all photos. |
| Guest reviews with full text, rating, date, host reply and (Otaghak) positive and negative points. Up to 200 per call. |
| Per-night availability and price for up to 120 days. |
| Exact total for given dates and guests: nightly breakdown, extra-guest cost and fees. |
| How a place name is known on each platform (useful for villages and regions). |
Stay ids look like jabama:800749, jajiga:3237270 or otaghak:2397109, and every result includes a direct link to the listing.
Example prompts
«ارزونترین ویلاهای رامسر برای ۴ نفر از ۲۳ تا ۲۵ مهر رو از هر سه سایت مقایسه کن»
«برای این اقامتگاه همه نظرات رو بخون و بگو کسی از تمیزی یا سروصدا شکایت کرده یا نه»
«تقویم این ویلا رو برای آبان نشون بده؛ کدوم آخر هفتهها خالیه و چنده؟»
"Find a beachfront stay in Kish for 2 guests next weekend under 3 million Toman a night, sorted by rating."
"Compare the top 3 cabins near Masuleh by cleanliness score and total price for 3 nights."
How it works
┌──────────── search_stays ────────────┐
Claude ──► │ Jagir (stdio, runs on your machine) │
└───────┬───────────┬───────────┬──────┘
▼ ▼ ▼
Jabama Jajiga Otaghak
(public web APIs the sites themselves use)Each platform has an adapter that calls the same public JSON endpoints its website uses and maps the response to one shared schema. Requests run in parallel. Failures are isolated per platform and reported in an errors field instead of failing the whole search.
Notes on prices:
With dates,
price.totalis the stay total for the requested guests, as each platform's search reports it.get_quoteadds service fees where a platform charges them (Jajiga).Otaghak quotes are computed from its calendar and extra-guest price and are marked
estimated: true.
These endpoints are undocumented and can change without notice. If something breaks, please open an issue.
Privacy and scope
Read-only: Jagir never logs in, books, messages hosts or calls any write endpoint.
No host phone numbers, host names or host ids are ever returned. Reviewer names are dropped.
Runs locally over stdio. Nothing is sent anywhere except the three platforms' public APIs.
Development
git clone https://github.com/thejimbow/jagir-mcp.git
cd jagir-mcp
npm install
npm test # unit tests against recorded fixtures
npm run test:live # smoke test against the real platforms
npm run build # compile to dist/
npm run pack:mcpb # build the Claude Desktop extension (jagir.mcpb)Project layout: src/platforms/ holds one adapter per platform, src/core/ holds dates, HTTP and the aggregator, and src/server.ts defines the MCP tools.
Contributions are welcome, especially adapters for more platforms (Shab, Homsa…) and fixes when a platform changes its API.
فارسی
جاگیر یه سرور MCP هست که به Claude و بقیهی دستیارهای هوش مصنوعی اجازه میده همزمان توی جاباما، جاجیگا و اتاقک دنبال اقامتگاه بگردن.
به فارسی بپرس. جاگیر هر سه سایت رو با هم میگرده، قیمتها رو به تومان یکدست میکنه، تاریخ شمسی و میلادی رو میفهمه و همهی اطلاعات لازم برای مقایسه رو به دستیار میده: قیمت دقیق، تقویم خالی بودن، امکانات، امتیاز تمیزی و نظرات کامل مهمونها.
چه کارهایی میکنه
یه جستجو، سه سایت: نتایج با هم ادغام و مرتب میشن. اگه یکی از سایتها از دسترس خارج باشه، بقیه جواب میدن.
همهی اطلاعات آگهی: امکانات (و امکاناتی که نداره)، قوانین، چیدمان تختها، متراژ، دربست یا اشتراکی، ویو و بافت، فاصله تا دریا و مرکز شهر، تخفیفها و همهی عکسها.
ریزامتیازها: امتیاز تمیزی، صحت مطالب، برخورد میزبان، موقعیت و ارزش به قیمت، بهعلاوهی توزیع ستارهها.
نظرات کامل: متن کامل، تاریخ، پاسخ میزبان و نکات مثبت و منفی (اتاقک).
قیمت واقعی: تقویم شبانه و قیمت نهایی برای تاریخ و تعداد نفرات شما، با هزینهی نفر اضافه و کارمزد.
فقط خواندنی: نه لاگین میکنه، نه رزرو. شماره و اسم میزبان و اسم نظردهندهها هیچوقت برگردونده نمیشه.
نصب
Claude Desktop: فایل jagir.mcpb رو دانلود کن و روش دابلکلیک کن. نیازی به نصب Node نیست.
Claude Code:
claude mcp add jagir -- npx -y jagir-mcpیه نمونه پرامپت
با جاگیر یه اقامتگاه در رشت یا اطراف نزدیکش پیدا کن.
ورود ۱۴۰۵/۰۷/۱۵، خروج ۱۴۰۵/۰۷/۱۸، ۵ نفر.
امتیاز ۴.۵ به بالا با حداقل ۱۰ نظر، امتیاز تمیزی ۴.۷ به بالا، ویو جنگل یا کوه.
نظرات ۵ گزینهی برتر رو بخون و هر شکایتی از تمیزی یا سروصدا رو گزارش کن.
برای ۳ گزینهی نهایی قیمت دقیق ۵ نفر رو بگیر و یه جدول مقایسه با لینک بده.Disclaimer
Jagir is an independent open-source project and is not affiliated with, endorsed by or sponsored by Jabama, Jajiga or Otaghak. All trademarks belong to their owners. Prices and availability come directly from the platforms and can change at any time; always confirm on the platform before booking.
License
Available Tools
6 toolsget_quoteGet price quoteARead-only
Exact price (Toman) for one stay, dates and guest count, including extra-guest charges and fees where the platform reports them. Read-only: nothing is booked. Otaghak quotes are estimated from its calendar (estimated: true).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Stay id from search results, "<platform>:<id>", e.g. "jajiga:3237270" or "jabama:800749". | |
| guests | Yes | Number of guests. | |
| checkIn | Yes | Check-in date as YYYY-MM-DD. Gregorian (2026-10-15) or Jalali/Shamsi (1405-07-23) both work. | |
| checkOut | Yes | Check-out date as YYYY-MM-DD. Gregorian (2026-10-15) or Jalali/Shamsi (1405-07-23) both work. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, and the description reinforces it with 'Read-only: nothing is booked'. It then adds context the annotations cannot: that fees/extra-guest charges appear only 'where the platform reports them' and that Otaghak quotes are calendar-derived estimates (estimated: true). That provenance caveat is genuinely useful behavioral disclosure.
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 tight sentences, front-loaded with the purpose and price semantics, followed by the read-only guarantee and the estimate caveat. No filler; every clause carries 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?
With no output schema, the description does the work of describing the return qualitatively — exact price in Toman, inclusion of extra-guest charges and fees, and an estimated flag — which is close to complete for a read-only quote tool. It could go further on how unpriced or unavailable platforms are surfaced, but the core is covered.
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%, so id, guests, checkIn and checkOut (including the Jalali/Gregorian date flexibility) are fully documented in the schema. The description adds no syntax or constraint detail beyond that, so the baseline of 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?
States a specific verb+resource: exact price (in Toman) for one stay, scoped to dates and guest count. The currency, the inclusion of extra-guest charges and fees, and the 'one stay' scope make it distinguishable from get_stay and search_stays without opening schemas.
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 implied — compute a price for a given stay and date range — and the 'nothing is booked' note clarifies it isn't a booking step. However, no sibling is named and no when-not condition is given, so an agent must infer the boundary versus get_stay itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reviewsGet guest reviewsARead-only
Guest reviews of one stay, newest first: full text, star rating, date or stay info, host reply, and (Otaghak) the positive/negative points and whether the guest recommends it. Also returns the rating breakdown (cleanliness, accuracy, location, value…) and star distribution. Use it to judge cleanliness, noise, view or host behaviour from real guests.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Stay id from search results, "<platform>:<id>", e.g. "jajiga:3237270" or "jabama:800749". | |
| limit | No | Max reviews to return. Default 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavioral context: ordering, inclusion of host replies, per-platform positive/negative points, recommendation flag, and the aggregate rating breakdown and star distribution. It does not mention pagination or handling of stays with no reviews, so it is not fully complete.
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?
Front-loads the core purpose and ordering before enumerating returned fields. The long field list and the stray '(Otaghak)' parenthetical add minor noise, but every clause is informative and nothing is padded.
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 no output schema, the description carries the full burden of describing return values, and it does so thoroughly (full text, rating, host reply, breakdown, star distribution). For a simple two-param read tool this is close to complete, though pagination and empty-result behavior remain unspecified.
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%, documenting both 'id' (format and example values) and 'limit' (range and default 50). The description adds nothing about parameter syntax or behavior, so the baseline 3 applies since the schema already carries this burden.
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 specific verb and resource ('Guest reviews of one stay') and immediately distinguishes itself from the sibling tools, which all deal with stays, locations or quotes rather than review content. Ordering ('newest first') and the fields returned are named, so an agent can tell exactly what it will get.
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?
Gives a concrete motivating use case ('Use it to judge cleanliness, noise, view or host behaviour from real guests'), which tells the agent when this tool is valuable. It stops short of naming exclusions or alternatives (e.g. that get_stay does not return reviews), so it is clear context but not 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.
get_stayGet stay detailsARead-only
Full details of one stay: description, amenities (and missing ones), house rules, check-in/out times, cancellation policy, base prices (Toman), rating breakdown incl. cleanliness, star distribution, area, beds, privacy (entire/shared), successful bookings, discounts, all photos, and extra facts such as view/setting, distances to sea or city centre, child pricing and host response time.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Stay id from search results, "<platform>:<id>", e.g. "jajiga:3237270" or "jabama:800749". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description goes further by disclosing the breadth of the response payload, including surprising items like missing amenities and host response time, which helps an agent gauge cost and result size. It does not mention auth or rate limits, but for a read tool this is a strong addition.
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 that immediately states the core purpose before the enumeration. The long field list is dense but defensible because no output schema exists to carry that 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?
With no output schema, the description must describe what comes back, and it does so thoroughly across description, amenities, rules, pricing, ratings, photos and extras. Output-schema absence makes this the right place for that detail, though it never states the return format (object vs. text) or error behavior for an invalid id.
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 there is a single parameter whose format ('<platform>:<id>') is fully documented in the schema. The description adds nothing about the id, so the baseline of 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?
States a specific verb and resource ('Full details of one stay') and enumerates the exact content returned, so an agent knows it is the single-record detail fetch. It does not name a sibling to contrast with (e.g. search_stays, get_quote), so differentiation is inferred rather than explicit.
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 implicit usage is clear — fetch details for a known stay id — but no when-to-use or when-not-to-use guidance is given, and the closer alternatives (search_stays for listings, get_quote for pricing) are not mentioned. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stay_calendarGet stay calendarARead-only
Per-night availability and price (Toman) for one stay. Default window: today + 30 days; max 120 days.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Stay id from search results, "<platform>:<id>", e.g. "jajiga:3237270" or "jabama:800749". | |
| to | No | Last day (inclusive) as YYYY-MM-DD. Gregorian (2026-10-15) or Jalali/Shamsi (1405-07-23) both work. | |
| from | No | First day as YYYY-MM-DD. Gregorian (2026-10-15) or Jalali/Shamsi (1405-07-23) both work. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint and openWorldHint, so the safety profile is covered. The description adds the default and maximum date ranges, which is useful behavioral context not in the annotations, but says nothing about pagination, truncation at the 120-day limit, or missing-price 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?
Two short sentences, front-loaded with what the tool returns and followed by the operative date-range bounds. No filler whatsoever.
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 read-only tool with a fully described three-parameter schema and no output schema, the definition is nearly sufficient: an agent knows the resource, the unit, the currency, and the date-range limits. It is only slightly thin on the relationship to get_stay, which matters for sibling routing.
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%, so the baseline would be 3, but the description adds the default window (today + 30 days) and the 120-day cap that the schema does not express. Those are genuine constraints on from/to that help the agent construct valid calls.
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?
The description names the specific resource (per-night availability and price for one stay) and even specifies the currency (Toman), which is meaningful detail. It does not, however, differentiate itself from the sibling get_stay, leaving the agent to infer the distinction between a stay summary and its calendar.
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?
It supplies a default window (today + 30 days) and a maximum span (120 days), which implicitly tells the agent the expected usage scope. It never states when to prefer this over get_stay or get_quote, so routing among siblings remains inference-based rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_locationResolve locationARead-only
Look up how a city/region name (Persian or English, e.g. "رامسر" or "ramsar") is known on Jabama, Jajiga and Otaghak. Useful to check a destination exists before searching. search_stays resolves locations itself.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | City or region name, Persian or English. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine context that this resolves against three named external platforms, but says nothing about the returned shape, unresolved-name behavior, or normalization rules, so it remains thin beyond structured fields.
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?
Three short sentences, front-loaded with the core action, then the purpose, then the routing note. Every sentence earns its place with no hedging or repetition.
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 single-param, no-output-schema lookup tool, the description covers what it does, why to use it, and the sibling overlap. Only the return semantics ('how a name is known' on three platforms) are left implicit, which a naming lookup call can reasonably tolerate.
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?
One parameter with 100% schema description coverage, so the baseline is 3. The description's Persian/English examples mirror what the schema already states ('City or region name, Persian or English'), adding no syntax or validation detail beyond it.
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?
Specific verb (look up / resolve) plus a precise resource (a city/region name's canonical mapping) and explicit scope (Jabama, Jajiga, Otaghak). The parenthetical examples with Persian and English forms make the resource unambiguous, and the sibling set (search_stays, get_stay, etc.) is clearly distinguished.
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?
States the use case ('check a destination exists before searching') and explicitly names the alternative path ('search_stays resolves locations itself'), telling the agent when NOT to bother calling this. This is exactly the when/when-not/alternative structure the dimension rewards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_staysSearch staysARead-only
Search short-term rentals (villa, suite, apartment, cottage…) in an Iranian city across Jabama, Jajiga and Otaghak at once. All prices are Toman (IRT). With dates, price.total is the full stay price for the guest count; without dates only price.perNight is set. Results from a platform that failed are listed in "errors"; the others are still returned.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Default "relevance". | |
| limit | No | Max results overall. Default 30. | |
| guests | No | Number of guests. | |
| checkIn | No | Check-in date as YYYY-MM-DD. Gregorian (2026-10-15) or Jalali/Shamsi (1405-07-23) both work. | |
| checkOut | No | Check-out date as YYYY-MM-DD. Gregorian (2026-10-15) or Jalali/Shamsi (1405-07-23) both work. | |
| location | Yes | City or region, Persian or English, e.g. "رامسر", "کیش", "ramsar". | |
| maxPrice | No | Maximum price per night, Toman. | |
| minPrice | No | Minimum price per night, Toman. | |
| platforms | No | Restrict to some platforms. Default: all three. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description goes beyond that, disclosing the multi-platform fan-out, the Toman (IRT) currency, that price.total is populated only when dates are supplied, and that per-platform failures surface in an 'errors' field while other results still return. That partial-failure behavior is genuinely non-obvious and valuable.
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?
Three sentences, all front-loaded and information-dense: scope, currency, pricing semantics, error handling. Nothing is repeated from the schema and no sentence is filler.
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 no output schema, the description must carry return-value context, and it does disclose the price.total/perNight duality and the 'errors' array for failed platforms. It stops short of describing result item shape or ordering/pagination, but covers the quirks an agent most needs.
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%, so the baseline is 3. The description only lightly reinforces parameter meaning, clarifying that min/max price are per-night and that dates switch pricing from perNight to total, but adds no syntax beyond the schema's own date-format and enum documentation.
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 specific verb and resource (search short-term rentals) plus the aggregation scope across Jabama, Jajiga and Otaghak in Iranian cities. The 'at once' framing and the property-type examples make it unmistakable versus siblings like get_stay, which fetch a single listing.
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 implied clearly (discovery/search across platforms before drilling into a specific stay), but no alternative is named and no when-not condition is given. There is no pointer to get_stay or get_quote for single-listing or pricing follow-ups.
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.
6 tool updates
v0.1.0- First observed
get_quote - First observed
get_reviews - First observed
get_stay - First observed
get_stay_calendar - First observed
resolve_location - First observed
search_stays
TDQS
Scored across 6 tools
Each tool has a clear primary purpose: location lookup, stay details, search, reviews, calendar, and quote. Minor overlap exists because get_stay and get_reviews both return rating breakdowns, but descriptions clearly distinguish their focus.
All tool names use snake_case with a consistent verb_noun pattern (resolve_location, get_stay, search_stays, get_reviews, get_stay_calendar, get_quote). The naming is predictable and readable.
Six tools are well-scoped for a read-only rental research server. Each tool earns its place without being redundant or excessive.
The surface covers the full research lifecycle: resolve location, search stays, get details, read reviews, check calendar availability, and get an exact quote. No obvious gaps for the stated purpose.
Maintenance
Related MCP Connectors
Search hotels & rentals: live prices & reviews across Booking.com, Airbnb, Vrbo & Google Hotels.
Airbnb stays by location and dates, and full listing details, as structured JSON.
Natural-language search of 70,000+ vacation rentals, with the host's direct booking link.
Vacation rental discovery, direct booking, and property protection for AI agents.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables searching Airbnb listings with advanced filtering (location, dates, guests, price) and retrieval of detailed property information including amenities, policies, and booking links.42,239 npm2MIT
- AlicenseBqualityDmaintenanceEnables searching for Airbnb listings and retrieving detailed property information including pricing, amenities, and host details without requiring an API key.22,239 npm3MIT
- FlicenseNot gradedqualityNot gradedmaintenanceEnables searching and retrieving VRBO vacation rental listings using browser automation. Supports filtering by location, dates, guests, price range, and property features to find and compare vacation rentals.-
- AlicenseNot gradedqualityBmaintenanceEnables users to search Airbnb listings using natural language, including flexible dates, guest counts, price range, property type, and amenities. It provides listing summaries and details but does not handle bookings.GPL 3.0