Skip to main content
Glama
barvhaim

Israeli Land Authority MCP Server

by barvhaim

search_by_type

Find Israeli land tenders by property type or land use purpose, such as residential or commercial projects, to identify relevant development opportunities.

Instructions

Search tenders by type or land use purpose

Find tenders of specific types (residential, commercial, etc.) or purposes (low-rise construction, offices, etc.).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
argsYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The MCP tool handler function that implements the search_by_type tool logic. It processes TypeSearchArgs, calls the underlying api_client.search_by_type method, formats the results, and handles errors.
    @mcp.tool()
    def search_by_type(args: TypeSearchArgs) -> Dict[str, Any]:
        """
        Search tenders by type or land use purpose
    
        Find tenders of specific types (residential, commercial, etc.) or
        purposes (low-rise construction, offices, etc.).
        """
        try:
            results = api_client.search_by_type(
                tender_types=args.tender_types, purpose=args.purpose
            )
    
            if isinstance(results, list):
                tender_list = results
            else:
                tender_list = results.get("results", results)
    
            return {
                "success": True,
                "count": len(tender_list),
                "tenders": tender_list,
                "type_search": {
                    "tender_types": args.tender_types,
                    "purpose": args.purpose,
                },
            }
        except Exception as e:
            return {
                "success": False,
                "error": str(e),
                "type_search": {
                    "tender_types": args.tender_types,
                    "purpose": args.purpose,
                },
            }
  • Pydantic BaseModel defining the input schema (arguments) for the search_by_type MCP tool.
    class TypeSearchArgs(BaseModel):
        """Arguments for type-based search"""
    
        tender_types: Optional[List[int]] = Field(
            None, description="List of tender type IDs (1-9)"
        )
        purpose: Optional[str] = Field(None, description="Land use purpose")
        active_only: bool = Field(False, description="Only return active tenders")
  • Registration of all tools including search_by_type via register_tools(mcp, api_client) in the main MCP server setup.
    # Register tools and resources
    register_tools(mcp, api_client)
  • Intermediate registration function that calls register_tender_tools(mcp, api_client), which defines and registers the search_by_type tool using @mcp.tool() decorator.
    def register_tools(mcp, api_client):
        """Register all MCP tools"""
        register_tender_tools(mcp, api_client)
        register_settlement_tools(mcp, api_client)
  • Supporting method in the API client that implements the core search_by_type functionality by calling the general search_tenders with type/purpose filters. Called by the MCP tool handler.
    def search_by_type(
        self, tender_types: Optional[List[int]] = None, purpose: Optional[str] = None
    ) -> List[Dict[str, Any]]:
        """
        Search tenders by type or purpose
    
        Args:
            tender_types: List of tender type IDs
            purpose: Land use purpose
    
        Returns:
            List of type-specific tenders
        """
        return self.search_tenders(
            tender_types=tender_types, purpose=purpose, page_size=10000
        )
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a search operation but doesn't mention whether it's read-only, has rate limits, requires authentication, returns paginated results, or what happens with invalid inputs. For a search tool with zero annotation coverage, this leaves significant behavioral gaps.

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 efficiently structured in two sentences: first states the core purpose, second provides clarifying examples. Every sentence adds value with zero wasted words, making it appropriately front-loaded and concise.

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?

Given the tool has an output schema (which handles return values), no annotations, and moderate complexity with 3 parameters, the description provides basic purpose and examples but lacks behavioral context, complete parameter guidance, and sibling differentiation. It's minimally adequate but has clear gaps in completeness.

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 description coverage is 0%, so the description must compensate. It mentions 'type or land use purpose' which maps to two of the three parameters (tender_types, purpose) but doesn't mention 'active_only'. The description adds some semantic context but doesn't fully compensate for the schema coverage gap, especially for the boolean filter parameter.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Search tenders by type or land use purpose' with specific examples (residential, commercial, low-rise construction, offices). It distinguishes itself from generic search by focusing on type/purpose filtering, though it doesn't explicitly differentiate from sibling 'search_tenders'.

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 usage context ('Find tenders of specific types or purposes') but doesn't explicitly state when to use this tool versus alternatives like 'search_tenders' or 'get_active_tenders'. It provides general guidance but lacks explicit comparisons or exclusions.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/barvhaim/remy-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server