Skip to main content
Glama

Assess listing

assess_listing
Read-onlyIdempotent

Check one listing the user found against local evidence: asking price vs the same home type's recorded £/m² (with floor area or a bedroom-based ballpark) or median price, the LSOA then its MSOA (all types only as indicative-only), typicalPrice, a flood line, turnover, growth, the local authority's official HPI, costs (stamp duty on the asking price, the council tax by band), crime with its offence mix, noise, schools (state and independent counts), planning rules (home: conservation, Article 4, listed buildings), listed buildings recorded at or near the postcode (listedNearby), the IMD decile, and the questions to ask the agent (lease, service charge, EWS1, listing). Not a valuation.

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": {
      "postcode": "<postcode>",
      "asking_price": "<asking_price>"
    },
    "name": "assess_listing"
  }
}

Input Schema

NameRequiredDescriptionDefault
marketNo[option] For sale or to rent.buy
tenureNo[input value] Tenure if the listing states it; lease questions are hedged ('If leasehold') when unknown and skipped for freehold.unknown
bedroomsNo[input value] Bedrooms in the listing.
postcodeYes[input value] Full postcode of the listing, e.g. W5 2NU.
listing_urlNo[input value] Echoed back for citation only.
rent_periodNo[option] The rent's period: month = £ per calendar month, week = £ per week (converted ×52/12 for the comparison).month
asking_priceYes[input value] £ (buy) or the rent in its rent_period (rent).
property_typeNo[input value] Property type if the listing states it; used for a same-type comparison.
share_percentNo[input value] Shared-ownership share for sale, e.g. 25: the asking price is compared as asking_price ÷ share against whole-home prices. Omit when the listing does not state it (the verdict stays unknown).
floor_area_sqmNo[input value] Floor area in m² if the listing states it.
floor_area_sqftNo[input value] Floor area in sq ft if the listing states it; converted server-side (1 sq ft = 0.092903 m²).

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. Changed18 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 / asking_price / description
      Previous value: -"£ (buy) or the rent in its rent_period (rent)."New value: +"[input value] £ (buy) or the rent in its rent_period (rent)."
    • changedInput schema / properties / bedrooms / description
      Previous value: -"Bedrooms in the listing."New value: +"[input value] Bedrooms in the listing."
    • changedInput schema / properties / floor_area_sqft / description
      Previous value: -"Floor area in sq ft if the listing states it; converted server-side (1 sq ft = 0.092903 m²)."New value: +"[input value] Floor area in sq ft if the listing states it; converted server-side (1 sq ft = 0.092903 m²)."
    • changedInput schema / properties / floor_area_sqm / description
      Previous value: -"Floor area in m² if the listing states it."New value: +"[input value] Floor area in m² if the listing states it."
    • 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 / listing_url / description
      Previous value: -"Echoed back for citation only."New value: +"[input value] Echoed back for citation only."
    • changedInput schema / properties / market / description
      Previous value: -"For sale or to rent."New value: +"[option] For sale or to rent."
    • changedInput schema / properties / postcode / description
      Previous value: -"Full postcode of the listing, e.g. W5 2NU."New value: +"[input value] Full postcode of the listing, e.g. W5 2NU."
    • changedInput schema / properties / property_type / description
      Previous value: -"Property type if the listing states it; used for a same-type comparison."New value: +"[input value] Property type if the listing states it; used for a same-type comparison."
    • 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."
    • changedInput schema / properties / rent_period / description
      Previous value: -"The rent's period: month = £ per calendar month, week = £ per week (converted ×52/12 for the comparison)."New value: +"[option] The rent's period: month = £ per calendar month, week = £ per week (converted ×52/12 for the comparison)."
    • changedInput schema / properties / share_percent / description
      Previous value: -"Shared-ownership share for sale, e.g. 25: the asking price is compared as asking_price ÷ share against whole-home prices. Omit when the listing does not state it (the verdict stays unknown)."New value: +"[input value] Shared-ownership share for sale, e.g. 25: the asking price is compared as asking_price ÷ share against whole-home prices. Omit when the listing does not state it (the verdict stays unknown)."
    • changedInput schema / properties / tenure / description
      Previous value: -"Tenure if the listing states it; lease questions are hedged ('If leasehold') when unknown and skipped for freehold."New value: +"[input value] Tenure if the listing states it; lease questions are hedged ('If leasehold') when unknown and skipped for freehold."
  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. 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."
      +}
  5. First observed

TDQS

A3.6/5.0
Behavior4/5

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

With readOnly/idempotent/closed-world annotations already covering the safety profile, the description still adds real behavior: MSOA all-types figures are flagged 'indicative-only', lease questions are hedged when tenure is unknown and skipped for freehold, and the output is explicitly disclaimed as not a valuation. It does not discuss failure modes (invalid postcode, missing comparables) or how sparse evidence is handled.

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

Conciseness3/5

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

The purpose is front-loaded in the first clause, which is good, but the remainder is a single sprawling run-on sentence enumerating a dozen-plus evidence items with uneven formatting. Several listed items duplicate what the output schema already names, so length is not fully earned.

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 an 11-parameter composite tool with an output schema, the description conveys the analytical basis, the hedging rules, and the not-a-valuation caveat, which is close to complete. Gaps are minor: no mention of what is returned when the postcode lacks comparables, and the enumerated evidence list is redundant given the output schema.

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 100%, so the schema already documents every parameter including conversions and defaults. The description adds modest meaning by explaining the comparison basis (asking price vs same-home-type £/m², floor area or bedroom ballpark) but elides other inputs such as share_percent and rent_period handling, which live only in the schema.

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?

Specific verb and resource: 'Check one listing the user found against local evidence', plus an explicit scope limit ('Not a valuation') that rules out an appraisal reading. It never names a sibling tool to contrast with (e.g. area-level evidence packs), so it is clear but not sibling-differentiated.

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?

Context is implied by 'one listing the user found', and the negative framing 'Not a valuation' sets a boundary on what the result means. There is no explicit statement of when to prefer this over the area-level or price-history siblings, and no prerequisites such as needing a full postcode and asking price up front.

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.