Skip to main content
Glama
lonewolfmasanaga

zameen-mcp

MCP server for researching property listings on Zameen.com

License: MIT CI Python MCP

Verified / Titanium-agent filtering · local watchlists · listing details · agent-message drafting — through 9 structured tools in any MCP client.

Tool reference · Deployment guide · Contributing · Changelog


An MCP (Model Context Protocol) server for researching property listings on Zameen.com — Pakistan's largest real estate portal — through structured tools instead of fragile screen scraping.

Trademark notice: "Zameen" and the Zameen.com logo are trademarks of Zameen.com (EMPG). They are used here solely to identify the service this tool interfaces with. This project is unaffiliated with, and not endorsed by, Zameen.com.

Works with any MCP client: Claude Desktop, Hermes Agent, Cursor, and others.

Install

# run directly with no permanent install (recommended)
uvx zameen-mcp

# or install as an isolated CLI tool
pipx install zameen-mcp

Register in your MCP client

{
  "mcpServers": {
    "zameen": {
      "command": "uvx",
      "args": ["zameen-mcp"]
    }
  }
}

That's it — 9 tools appear in your AI client.

Related MCP server: Zillow MCP Server

Tools

Tool

What it does

search_properties

Structured search: city, purpose, type, beds, price, area, keywords, sort

get_listing_details

Full detail page for one listing (URL or numeric id)

list_supported_cities

Verified city slugs + property types

add_watch / check_watch

Save search criteria locally; later re-checks report only NEW listings

list_watches / remove_watch

Manage saved watches

draft_agent_message

Compose a polite inquiry for a listing — draft only, never sends

account_status

Whether an authenticated session is loaded

Badge-level filtering Zameen's own UI can't do: verified_only, agent_tier (e.g. "titanium"), exclude_promoted.

Full parameter reference + natural-language cheat sheet: docs/TOOLS.md

Optional: log in to your Zameen account

Anonymous searching works out of the box. To also ride your logged-in session (saved searches, personalized pages):

pipx inject zameen-mcp playwright && .venv/bin/playwright install chromium   # pipx
uv tool install zameen-mcp --with playwright && playwright install chromium  # uv

zameen-mcp-login   # opens a Chromium window; YOU log in; cookies stay local

Your password is never seen or stored by this software — only the resulting session cookies, kept in ~/.zameen-mcp/ on your machine. Wipe anytime: zameen-mcp-login --logout.

Data location

All state lives in ~/.zameen-mcp/ (watches.json, session_state.json, chrome-profile/). Override with the ZAMEEN_MCP_HOME environment variable. Treat session_state.json like a password: it grants access to your account while valid.

Development

git clone <repo-url> && cd zameen.com
uv venv .venv && uv pip install -p .venv/Scripts/python.exe -e ".[dev]"
.venv/Scripts/python.exe -m pytest -q          # offline suite against real captured pages
.venv/Scripts/python.exe smoke_test.py         # live end-to-end check

Compliance & fair use

  • Zameen.com's robots.txt disallows crawling its major-city listing pages. This server is built for interactive, human-paced research — a person asking their assistant questions — not bulk harvesting or redistribution.

  • Requests go out one at a time with browser-like headers. Don't remove the pacing or loop searches unattended.

  • Listing data belongs to Zameen.com and its advertisers; "Zameen" is a trademark of Zameen.com. This project is unaffiliated and not endorsed.

  • Prices are agent-entered, as-listed — not verified market valuations.

Limitations

  • Read-only by design: no posting, messaging, or account changes — contacting agents is deliberately a human action (draft_agent_message only drafts).

  • Badge filters operate on fetched result pages (up to 3 per call).

  • Parsing targets Zameen's current HTML; site redesigns may require parser updates (fixtures make regressions easy to catch).

MIT licensed — see LICENSE.

Available Tools

9 tools
account_statusA

Report whether an authenticated Zameen session is loaded.

Auth is optional: searches work anonymously; a session (created via 'python -m zameen_mcp.login') rides your cookies for personalized pages. No password is ever stored by this server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full burden, and it delivers: it discloses read-only semantics, that auth is optional, how sessions are established, and the security-relevant fact that no password is stored. With zero parameters and an output schema present, this is strong behavioral disclosure for a status tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: the purpose statement is front-loaded, the second gives auth context, the third adds a security guarantee. Zero filler or redundancy; tightly packed and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter status check with an output schema and no annotations, the description is complete: it covers what the tool verifies, the anonymous-vs-authenticated distinction, session creation path, and privacy behavior. Nothing an agent needs to call and interpret it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies — there is nothing the description needs to disambiguate. It correctly spends no space on parameters, and the 100% schema coverage (empty schema) leaves nothing undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb-resource statement ('Report whether an authenticated Zameen session is loaded') that unambiguously identifies the tool. It is clearly distinguishable from all siblings, none of which deal with session or auth state, so no confusion is possible.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when/when-not guidance against a specific sibling, but that is unnecessary since no sibling overlaps. It supplies useful context on when sessions matter (personalized pages) and how one is created, giving the agent a coherent usage frame. Lacks an explicit exclusion statement but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_watchA

Create a named local watchlist from search criteria (stored on disk).

Watches are re-checked later with check_watch; 'seed_with_current' runs the search once now so only NEW listings get reported in future checks. Nothing is saved to your Zameen account — this is a local file.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYes
nameYes
purposeNosale
keywordsNo
min_bedsNo
agent_tierNo
max_price_pkrNo
property_typeNohomes
verified_onlyNo
min_area_marlaNo
exclude_promotedNo
seed_with_currentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are present, the description carries the full behavioral burden. It discloses that the watchlist is stored on disk and is local, explicitly stating 'Nothing is saved to your Zameen account.' It also explains the seed_with_current parameter behavior. However, it does not mention potential side effects like name conflicts or file overwriting, a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact—three sentences—and the core action is front-loaded in the first sentence. Each subsequent sentence adds relevant context (relationship to check_watch, seed behavior, local nature) without redundancy. It is appropriately terse, though it could be structured more to highlight parameter usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 12 parameters, 0% schema coverage, and no annotations, the description is not complete enough. It explains the general concept and one parameter, but omits definitions for the remaining parameters and how the search criteria are composed. While an output schema is present, the tool's input semantics are underexplained, forcing an agent to guess during invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate but fails to. It only briefly explains 'seed_with_current' and does not define any of the other 11 parameters (purpose, agent_tier, min_area_marla, etc.). Agents are left to guess meanings of parameters like 'purpose' and 'exclude_promoted', making the description inadequate for a 12-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear action: 'Create a named local watchlist from search criteria (stored on disk).' It specifies the resource (watchlist), the basis (search criteria), and immediately contrasts with account-level operations by noting 'Nothing is saved to your Zameen account — this is a local file.' This effectively distinguishes the tool from siblings like search_properties and account_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the companion tool check_watch ('Watches are re-checked later with check_watch') which implies a monitoring workflow, but it does not explicitly state when to use add_watch instead of search_properties or when to avoid it. There is no explicit 'use this when' or 'use search_properties for one-time searches' guidance, leaving some decision-making to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_watchA

Re-run a saved watch's search and report NEW listings since last check.

Read-only against Zameen; the only state kept is the local id list.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and it delivers: 'Read-only against Zameen' explicitly disclaims mutation, and 'the only state kept is the local id list' preempts the natural worry about persistent side effects from re-running a watch. This is exactly the transparency an agent needs when annotations are absent. Minor gap: no disclosure of error behavior for a nonexistent watch name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The core action and differentiator are front-loaded in sentence one, and sentence two adds the single most valuable behavioral fact (read-only). Every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with an output schema covering return values, the description is largely adequate: purpose, read-only nature, and state semantics are all stated. The gap is that both parameters — especially the required 'name' — remain semantically unexplained, and error conditions for an unknown watch are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description bears full responsibility for explaining parameters, yet it explains neither. 'name' (required) is only inferable as the watch identifier from the phrase 'saved watch', and 'limit' is never described as capping the number of reported NEW listings. The output schema covers return shape but not how these inputs steer it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb-resource pairing: re-run a saved watch's search. The 'report NEW listings since last check' clause is the decisive differentiator, cleanly separating it from search_properties (ad-hoc search), add_watch/remove_watch/list_watches (watch lifecycle), and get_listing_details (per-listing detail).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'NEW listings since last check' phrasing clearly implies the incremental-monitoring use case, and 'Re-run a saved watch's search' situates it against a previously created watch. However, no sibling is named and there are no explicit exclusions (e.g., 'for a fresh ad-hoc search use search_properties') — usage is conveyed by implication, not instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

draft_agent_messageA

Draft (NOT send) a polite inquiry message to a listing's agent.

Fetches the listing's details and composes a ready-to-send text for you to paste into WhatsApp/email or read out on a call. This tool NEVER sends anything to anyone — contacting the agent is deliberately a human action.

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNobrief
listingYes
questionsNo
sender_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states it NEVER sends anything, fetches listing details, and produces text for manual use. This covers the most critical behavior (non-sending) and gives context about the fetch operation. It does not mention potential failure modes or permissions, but for a draft tool this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste. The main purpose is front-loaded, followed by a concise explanation and a crucial non-sending clarification. Every sentence adds value and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains what the tool does and its non-sending nature, which is sufficient for understanding the high-level action. However, it gives no guidance on parameter usage (which is partially addressed in the parameter_semantics score) and does not mention any prerequisites (e.g., needing a valid listing ID). Given the tool has 4 parameters and an output schema, more details on how to structure the request would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it provides no explanation of any parameter (listing, tone, questions, sender_name). The tool name hints at some semantics, but without any detail an agent cannot know what values to supply, especially for 'tone' or 'questions'. This is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Draft'), a resource ('a polite inquiry message to a listing's agent'), and explicitly clarifies it does NOT send. This clearly distinguishes it from sibling tools like get_listing_details or account_status, so an agent can immediately understand its unique purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (when you need a drafted message, not a sent one) and the emphasis on 'human action' suggests this is for manual follow-up, but it does not explicitly name alternatives or state 'use X instead when you want to send'. There's no explicit when-not guidance, leaving some inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_listing_detailsA

Fetch full details for ONE Zameen.com property listing.

Accepts a full Property URL or a bare numeric listing id such as "54646556". Read-only; never contacts the agent or modifies anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
listingYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only; never contacts the agent or modifies anything,' which covers safety and side-effect concerns. It does not detail error handling, authentication requirements, or rate limits, but for a simple read operation, these are less critical. The disclosure of read-only behavior is a strong positive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary action. It wastes no words, delivering the key purpose and relevant constraints in a compact, scannable format. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter) and the presence of an output schema, the description is largely complete. It covers input formats and behavior. It could mention error cases (e.g., invalid ID) or prerequisites like authentication, but these are not essential for a basic read-only lookup. The presence of an output schema removes the need to explain return values, so the description suffices for successful invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only shows a 'listing' string with no description. The description adds crucial meaning by clarifying the accepted formats: 'a full Property URL or a bare numeric listing id such as "54646556".' This goes beyond the schema and provides concrete examples, making the parameter self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Fetch full details for ONE Zameen.com property listing.' It distinguishes itself from siblings by emphasizing 'ONE' (vs. search-based tools) and by noting it is read-only, separating it from messaging or mutation tools. This is a precise, unambiguous purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on what inputs are valid (full URL or numeric listing ID) and explicitly states it is read-only and never contacts the agent. However, it does not explicitly name alternatives or provide explicit when-not-to-use guidance (e.g., 'for multiple listings use search_properties'). The context implies these boundaries but does not spell them out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_supported_citiesA

List verified city slugs and property types usable by search_properties.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden. The 'verified' qualifier adds a curation trait, but the description doesn't disclose whether the list is exhaustive, ordered, or paginated, nor potential size. For a zero-parameter read-only listing tool this is a modest but acceptable contribution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with zero filler; the verb and resource are front-loaded and the search_properties linkage is a single efficient clause. Every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param tool with an output schema, the return format needn't be spelled out, and the description states what is returned (city slugs and property types) and how it relates to a sibling. The only minor gap is not explicitly naming that slugs feed search_properties' city parameter, though 'usable by' conveys it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters and trivially 100% coverage, so the baseline applies. There are no inputs for the description to explain, and none are missing; the description correctly focuses on what the tool returns rather than nonexistent parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') paired with a distinct resource ('verified city slugs and property types') and anchors it to a sibling tool ('usable by search_properties'). It's immediately distinguishable from get_listing_details, watch-management, and account_status tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'usable by search_properties' implies the agent should call this before search_properties to obtain valid filter values, which is a useful context clue. However, it never states an explicit when-to-use or when-not-to-use, nor does it reference alternatives, leaving invocation timing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_watchesA

List local watchlists with their criteria and last-check times.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It indicates the return payload (criteria and last-check times), but does not explicitly state that this is a read-only operation, whether it requires authentication, or any ordering/pagination behavior. The verb 'list' implies no side effects, but it is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence with no fluff. It is front-loaded with the action and resource, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there are no parameters and an output schema exists (which likely documents the return structure), the description is adequate for a simple listing operation. The only minor gap is the lack of explicit read-only or authentication notes, but for a simple list tool this is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description does not need to explain parameter meaning. The baseline for 0-parameter tools is 4, and there is nothing to compensate for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('list') and resource ('local watchlists'), and clarifies what is included ('criteria and last-check times'). This clearly distinguishes it from sibling tools like add_watch, check_watch, and remove_watch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or when another watch-related tool would be more appropriate. The user must infer usage from the name and siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_watchB

Delete a local watchlist by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only says 'Delete' without mentioning whether deletion is permanent, what happens if the name is not found, whether any confirmation or side effects occur, or the scope of 'local'. The term 'local' is ambiguous and not elaborated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, front-loaded with the action verb. It conveys the essential purpose without unnecessary words, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While an output schema exists, the description lacks any mention of error handling, behavior on nonexistent watchlists, or confirmation requirements. Given the simplicity of the operation and the presence of an output schema, it is partially complete but leaves important behavioral questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must clarify the parameter's purpose. It states 'by name', which identifies the parameter as the watchlist identifier. However, it does not add detail about format, length, or case sensitivity, though for a single simple string parameter this is likely sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states a specific verb 'Delete' and resource 'local watchlist by name', making it distinct from siblings like add_watch, check_watch, and list_watches. The description unambiguously identifies the action without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no guidance on when to use this tool versus alternatives, such as add_watch or check_watch. It implies deletion by name but does not specify any prerequisites, contexts, or exclusions. An agent must infer usage solely from the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_propertiesA

Search Zameen.com property listings and return normalized JSON cards.

Use city names like "islamabad", "lahore", "karachi". purpose: sale|rent. property_type: homes|houses|flats|plots|commercial|rooms. Badge filters (verified_only, agent_tier e.g. "titanium", exclude_promoted, max_price_pkr) apply AFTER parsing over up to 3 result pages - these can express things Zameen's own UI cannot (e.g. verified listings only). min_beds/min_area_marla/keywords/sort are native site filters. limit is clamped to 1..50 and echoed back in filters_applied. Example: search_properties(city="lahore", purpose="sale", property_type="houses", min_beds=4, verified_only=True, agent_tier="titanium", max_price_pkr=200000000).

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYes
sortNo
limitNo
purposeNosale
keywordsNo
min_bedsNo
agent_tierNo
max_price_pkrNo
property_typeNohomes
verified_onlyNo
min_area_marlaNo
exclude_promotedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the behavioral disclosure burden. It goes beyond the schema by revealing that badge filters apply after parsing over up to 3 result pages, that limit is clamped to 1..50 and echoed back in filters_applied, and that the output is normalized JSON cards. This is strong, non-obvious behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence adds value: purpose, accepted values, filter behavior, clamping behavior, and a complete example. It is front-loaded with the core purpose and avoids filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool with no schema-level descriptions and no annotations, the description provides enough guidance to call it correctly, including defaults, value examples, behavioral caveats, and a realistic invocation. The output schema exists, so return structure does not need to be spelled out in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does. It explains purpose and property_type values, differentiates post-parsing badge filters from native filters, clarifies limit clamping, and provides a full example covering the major parameters. Nearly every parameter receives meaningful semantic context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Search Zameen.com property listings and return normalized JSON cards.' It clearly distinguishes this from sibling tools like get_listing_details or watch management, and the parameter guidance makes the search scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete usage guidance: which city names to use, what purpose/property_type values are expected, and which filters are applied post-parsing versus native site filters. It does not explicitly name alternative tools for when not to use this one, but the context and purpose make the search use case clear.

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. 9 tool updatesv0.2.0
    • First observedaccount_status
    • First observedadd_watch
    • First observedcheck_watch
    • First observeddraft_agent_message
    • First observedget_listing_details
    • First observedlist_supported_cities
    • First observedlist_watches
    • First observedremove_watch
    • First observedsearch_properties

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search, detail retrieval, watchlist management, message drafting, and account status. There is no meaningful overlap between tools that would cause an agent to select the wrong one.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (list_watches, search_properties, add_watch, check_watch). account_status is a minor deviation since it is a noun phrase rather than get_account_status, but it is still clear and predictable.

Tool Count5/5

Nine tools is well within the ideal range for a real estate search and watchlist server. Each tool earns its place and the set is neither bloated nor too thin.

Completeness4/5

The tool surface covers search, listing details, watchlist CRUD (minus an update operation), contact drafting, and account status. Missing update_watch is workable since users can remove and re-add, and sending messages is intentionally left to humans.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides real-time access to Zillow real estate data, enabling property search, details, Zestimates, market trends, and mortgage calculations via natural language.
    5 npm
    48
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Integrates Zillow real estate data with AI assistants, enabling property search, neighborhood insights, and affordability calculations through natural language.
    5 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to search Dutch housing listings on Kamernet.nl, retrieve full listing details, and optionally reply to landlords; designed for personal use in finding rooms, studios, and apartments.
    3
    1
    MIT