Skip to main content
Glama

Get listing search links

get_listing_search_links
Read-onlyIdempotent

Pre-filtered searches on Rightmove, Zoopla, OnTheMarket (and OpenRent for rentals) for the postcode districts of shortlisted areas, filtered by bedrooms, price and property_type (house, flat, bungalow). Links only: open them on the user's behalf to read listings; Close Knit itself never fetches or stores listings.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "area_ids": "<area_ids>",
      "max_price": "<max_price>"
    },
    "name": "get_listing_search_links"
  }
}

Input Schema

NameRequiredDescriptionDefault
marketNo[option] Buying or renting.buy
area_idsYes[id] LSOA ids from find_areas.
max_priceYes[input value] £ (buy) or £ per month (rent).
min_bedroomsNo[input value] Minimum bedrooms.
property_typeNo[option] Home type for the portal filters (house, flat, bungalow or any).any
outcodes_per_areaNo[paging] Postcode districts per area (busiest first).

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • removedInput schema / $defs
      Removed value: -{
      -  "RatePrevious": {
      -    "properties": {
      -      "bad": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "[input value] What was wrong, missing or confusing.",
      -        "title": "Bad"
      -      },
      -      "call_id": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "[id] The callId of the answer you are rating; leave it out when answers carry none.",
      -        "title": "Call Id"
      -      },
      -      "fix": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "[input value] The change to the tool or its answer you would want.",
      -        "title": "Fix"
      -      },
      -      "good": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "[input value] What was useful in the answer.",
      -        "title": "Good"
      -      },
      -      "rating": {
      -        "description": "[input value] 1 = useless or wrong, 3 = usable with gaps, 5 = exactly what was needed.",
      -        "title": "Rating",
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "rating"
      -    ],
      -    "title": "RatePrevious",
      -    "type": "object"
      -  }
      -}
    • removedInput schema / properties / intent
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "[input value] Optional, one to three sentences you write: what the user is looking for with this call and the criteria that matter, e.g. '2-bed rental near King's Cross, up to £2,500 a month, quiet, good primary schools'. Close Knit reads these to improve its answers. Your own summary, not the user's words or the chat; never names, contact details, exact addresses or family circumstances.",
      -  "title": "Intent"
      -}
    • removedInput schema / properties / rate_previous
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "$ref": "#/$defs/RatePrevious"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "[input value] Optional: your rating of an earlier Close Knit answer, by the callId it carried (none: the last answer). Send it with your next Close Knit call every time you have used an answer: rating 1-5 for how well it served the user's request, what was good, what was bad or missing, and the fix you would want."
      -}
  2. Changed13 schema fields changed
    • changedInput schema / $defs / RatePrevious / properties / bad / description
      Previous value: -"What was wrong, missing or confusing."New value: +"[input value] What was wrong, missing or confusing."
    • changedInput schema / $defs / RatePrevious / properties / call_id / description
      Previous value: -"The callId of the answer you are rating; leave it out when answers carry none."New value: +"[id] The callId of the answer you are rating; leave it out when answers carry none."
    • changedInput schema / $defs / RatePrevious / properties / fix / description
      Previous value: -"The change to the tool or its answer you would want."New value: +"[input value] The change to the tool or its answer you would want."
    • changedInput schema / $defs / RatePrevious / properties / good / description
      Previous value: -"What was useful in the answer."New value: +"[input value] What was useful in the answer."
    • changedInput schema / $defs / RatePrevious / properties / rating / description
      Previous value: -"1 = useless or wrong, 3 = usable with gaps, 5 = exactly what was needed."New value: +"[input value] 1 = useless or wrong, 3 = usable with gaps, 5 = exactly what was needed."
    • changedInput schema / properties / area_ids / description
      Previous value: -"LSOA ids from find_areas."New value: +"[id] LSOA ids from find_areas."
    • changedInput schema / properties / intent / description
      Previous value: -"Optional, one to three sentences you write: what the user is looking for with this call and the criteria that matter, e.g. '2-bed rental near King's Cross, up to £2,500 a month, quiet, good primary schools'. Close Knit reads these to improve its answers. Your own summary, not the user's words or the chat; never names, contact details, exact addresses or family circumstances."New value: +"[input value] Optional, one to three sentences you write: what the user is looking for with this call and the criteria that matter, e.g. '2-bed rental near King's Cross, up to £2,500 a month, quiet, good primary schools'. Close Knit reads these to improve its answers. Your own summary, not the user's words or the chat; never names, contact details, exact addresses or family circumstances."
    • changedInput schema / properties / market / description
      Previous value: -"Buying or renting."New value: +"[option] Buying or renting."
    • changedInput schema / properties / max_price / description
      Previous value: -"£ (buy) or £ per month (rent)."New value: +"[input value] £ (buy) or £ per month (rent)."
    • changedInput schema / properties / min_bedrooms / description
      Previous value: -"Minimum bedrooms."New value: +"[input value] Minimum bedrooms."
    • changedInput schema / properties / outcodes_per_area / description
      Previous value: -"Postcode districts per area (busiest first)."New value: +"[paging] Postcode districts per area (busiest first)."
    • changedInput schema / properties / property_type / description
      Previous value: -"Home type for the portal filters (house, flat, bungalow or any)."New value: +"[option] Home type for the portal filters (house, flat, bungalow or any)."
    • changedInput schema / properties / rate_previous / description
      Previous value: -"Optional: your rating of an earlier Close Knit answer, by the callId it carried (none: the last answer). Send it with your next Close Knit call every time you have used an answer: rating 1-5 for how well it served the user's request, what was good, what was bad or missing, and the fix you would want."New value: +"[input value] Optional: your rating of an earlier Close Knit answer, by the callId it carried (none: the last answer). Send it with your next Close Knit call every time you have used an answer: rating 1-5 for how well it served the user's request, what was good, what was bad or missing, and the fix you would want."
  3. Changed6 schema fields changed
    • addedInput schema / $defs / RatePrevious / properties / call_id / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / $defs / RatePrevious / properties / call_id / default
      Added value: +null
    • changedInput schema / $defs / RatePrevious / properties / call_id / description
      Previous value: -"The callId of the answer you are rating."New value: +"The callId of the answer you are rating; leave it out when answers carry none."
    • removedInput schema / $defs / RatePrevious / properties / call_id / type
      Removed value: -"string"
    • changedInput schema / $defs / RatePrevious / required
      Previous value: -[
      -  "call_id",
      -  "rating"
      -]New value: +[
      +  "rating"
      +]
    • changedInput schema / properties / rate_previous / description
      Previous value: -"Optional: your rating of an earlier Close Knit answer, by the callId it carried. Send it with your next Close Knit call every time you have used an answer: rating 1-5 for how well it served the user's request, what was good, what was bad or missing, and the fix you would want."New value: +"Optional: your rating of an earlier Close Knit answer, by the callId it carried (none: the last answer). Send it with your next Close Knit call every time you have used an answer: rating 1-5 for how well it served the user's request, what was good, what was bad or missing, and the fix you would want."
  4. Changed1 schema field changed
    • addedInput schema / properties / property_type
      Added value: +{
      +  "default": "any",
      +  "description": "Home type for the portal filters (house, flat, bungalow or any).",
      +  "enum": [
      +    "house",
      +    "flat",
      +    "bungalow",
      +    "any"
      +  ],
      +  "title": "Property Type",
      +  "type": "string"
      +}
  5. Changed3 schema fields changed
    • addedInput schema / $defs
      Added value: +{
      +  "RatePrevious": {
      +    "properties": {
      +      "bad": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "What was wrong, missing or confusing.",
      +        "title": "Bad"
      +      },
      +      "call_id": {
      +        "description": "The callId of the answer you are rating.",
      +        "title": "Call Id",
      +        "type": "string"
      +      },
      +      "fix": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "The change to the tool or its answer you would want.",
      +        "title": "Fix"
      +      },
      +      "good": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "What was useful in the answer.",
      +        "title": "Good"
      +      },
      +      "rating": {
      +        "description": "1 = useless or wrong, 3 = usable with gaps, 5 = exactly what was needed.",
      +        "title": "Rating",
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "call_id",
      +      "rating"
      +    ],
      +    "title": "RatePrevious",
      +    "type": "object"
      +  }
      +}
    • addedInput schema / properties / intent
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional, one to three sentences you write: what the user is looking for with this call and the criteria that matter, e.g. '2-bed rental near King's Cross, up to £2,500 a month, quiet, good primary schools'. Close Knit reads these to improve its answers. Your own summary, not the user's words or the chat; never names, contact details, exact addresses or family circumstances.",
      +  "title": "Intent"
      +}
    • addedInput schema / properties / rate_previous
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/RatePrevious"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional: your rating of an earlier Close Knit answer, by the callId it carried. Send it with your next Close Knit call every time you have used an answer: rating 1-5 for how well it served the user's request, what was good, what was bad or missing, and the fix you would want."
      +}
  6. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, non-destructive and closed-world, so the bar is low, yet the description adds genuine non-redundant behavior: the tool returns links only, the agent must open them to read listings, and Close Knit never fetches or stores listing content. That 'links only' contract is exactly the misconception an agent could otherwise form.

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, front-loaded with what is produced and for which scope, followed by the links-only caveat. The parenthetical portal list and rentals note each carry information; nothing is redundant with the title or annotations.

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?

With an output schema present, return structure needs no explanation, and the description covers scope, filters, portal coverage and the no-fetch guarantee. It stops short of explaining portal coverage differences or link granularity per outcode, which is a minor gap rather than a blocker.

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 100%, so area_ids, max_price, market, property_type and outcodes_per_area are already fully documented, including the £ vs £/month distinction. The description only restates the bedroom/price/property_type filters and maps them loosely to area districts, adding no syntax or semantics beyond the schema.

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 concrete output (pre-filtered search links) against named resources (Rightmove, Zoopla, OnTheMarket, OpenRent) scoped to postcode districts of shortlisted areas, with the filter dimensions spelled out. The 'Links only' clause separates it from any listing-fetching or assessment sibling without needing to name one.

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?

'For the postcode districts of shortlisted areas' implies a prerequisite workflow (areas must be shortlisted first) and 'open them on the user's behalf' implies the follow-up action. However, it never states when not to use this versus search, search_areas, or assess_listing, and gives no explicit exclusions, so usage is only implied.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.