Agentic House Search

UK neighbourhood research from government open data: postcode reports, comparisons, 45 datasets.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
95%
命名の品質
80%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~3,892トークン数(ツール定義)
~4.8 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 3.04%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "agentic-house-search": {
      "command": "npx",
      "args": [
        "agentic-house-search"
      ]
    }
  }
}

実行可能なパッケージ

npmagentic-house-search0.1.3stdio

リモートエンドポイント

https://agentic-house-search.vercel.app/mcpstreamable-http

できること

ツール一覧

ツール(5)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢postcode_report(postcode, categories, include_sources, response_format)

Full neighbourhood report for one UK postcode, assembled live from UK government open data. Covers eleven categories: demographics (Census 2021), crime (data.police.uk), deprivation (IMD/WIMD/SIMD/NIMDM), property prices (HM Land Registry), broadband and 5G (Ofcom), noise (Defra), transport, amenities (OpenStreetMap), schools (DfE register: name, phase and distance only, no Ofsted grades) and planning constraints (Planning Data platform, Environment Agency). Every figure carries the geography it describes (a postcode, an LSOA of ~1,500 people, or a whole local authority), the period it covers, and a benchmark where one exists. Read those: a crime count describes a 1 km square, and Ofcom mobile coverage describes an entire local authority, not the street. Args: - postcode (string): UK postcode, spaces optional - categories (string[], optional): subset to fetch; omit for all eleven - include_sources (boolean): append publisher and licence per category (default false) - response_format ('markdown' | 'json'): default 'markdown' Returns: Per category: a status, a one-paragraph summary, the facts (label, value, band, benchmark, geography, period, source id) and any caveats. Statuses that are normal rather than failures: - "out_of_coverage": the dataset genuinely does not cover this nation. Census tables are England & Wales; police.uk excludes Scotland; Planning Data, Defra noise and the DfE school register are England-only. The reason and the devolved equivalent are given. - "unavailable": a pre-built extract has not been generated for this area yet (noise, currently). - "partial": some sources answered and some did not; check notes. Examples: - "What's SW11 1AA like?" -> postcode="SW11 1AA" - "Is the broadband any good at M1 1AE?" -> postcode="M1 1AE", categories=["broadband","mobile"] - "Crime and schools near LA23 1AA" -> postcode="LA23 1AA", categories=["crime","schools"] Errors: - "No such postcode" with suggestions when the postcode does not exist - Terminated postcodes are reported with the year they were withdrawn Not a survey, valuation or conveyancing search. Check anything decision-critical against the source.

入力スキーマ

{
  "type": "object",
  "properties": {
    "postcode": {
      "type": "string",
      "minLength": 5,
      "maxLength": 10,
      "description": "A UK postcode, with or without a space, e.g. \"SW11 1AA\" or \"m11ae\""
    },
    "categories": {
      "description": "Which sections to fetch. Omit for all eleven. Fetching only what you need is faster and much smaller — e.g. [\"crime\",\"schools\"] for a family-safety question.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "demographics",
          "crime",
          "deprivation",
          "prices",
          "broadband",
          "mobile",
          "noise",
          "transport",
          "amenities",
          "schools",
          "environment"
        ]
      }
    },
    "include_sources": {
      "default": false,
      "description": "Append the publisher and licence of each dataset used (default false)",
      "type": "boolean"
    },
    "response_format": {
      "default": "markdown",
      "description": "'markdown' to read, 'json' for the full structured facts",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "postcode"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "postcode": {
      "type": "string"
    },
    "local_authority": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "facts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "display": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "band": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "tone": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "benchmark": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "geography": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "period": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "source_id": {
                  "type": "string"
                },
                "note": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "label",
                "value",
                "display",
                "source_id"
              ],
              "additionalProperties": false
            }
          },
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "label",
          "status",
          "facts",
          "notes"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "postcode",
    "local_authority",
    "country",
    "categories"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢postcode_lookup(postcode, response_format)

Resolve a UK postcode to its geography — coordinates, local authority, ward, constituency, LSOA/MSOA/output area, police force, rural-urban class and deprivation rank. One fast call with no downstream data fetching. Use it to check a postcode exists, to get the codes needed for other datasets, or when you only need where somewhere is rather than what it is like. Args: - postcode (string): UK postcode, spaces optional - response_format ('markdown' | 'json'): default 'markdown' Returns: Coordinates, administrative geography, statistical geography codes (LSOA/MSOA/OA — these are the keys most UK open datasets are published against), and the deprivation rank with the index it came from. Examples: - "Where is SW11 1AA?" -> postcode="SW11 1AA" - "What LSOA covers M1 1AE?" -> postcode="M1 1AE" - "Is XY1 2AB a real postcode?" -> postcode="XY1 2AB" (returns an error with suggestions) Don't use when: you want data about the area — use postcode_report instead. Note: deprivation ranks are NOT comparable between UK nations. Each nation ranks its own areas against its own index, over a different number of areas; the index and its size are returned so you do not compare them by mistake.

入力スキーマ

{
  "type": "object",
  "properties": {
    "postcode": {
      "type": "string",
      "minLength": 5,
      "maxLength": 10,
      "description": "A UK postcode, e.g. \"SW11 1AA\""
    },
    "response_format": {
      "default": "markdown",
      "description": "'markdown' to read, 'json' for the structured record",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "postcode"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "postcode": {
      "type": "string"
    },
    "latitude": {
      "type": "number"
    },
    "longitude": {
      "type": "number"
    },
    "country": {
      "type": "string"
    },
    "region": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "local_authority": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "code": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "code"
      ],
      "additionalProperties": false
    },
    "ward": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "code": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "code"
      ],
      "additionalProperties": false
    },
    "constituency": {
      "type": "string"
    },
    "lsoa": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "code": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "code"
      ],
      "additionalProperties": false
    },
    "msoa": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "code": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "code"
      ],
      "additionalProperties": false
    },
    "output_area": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "police_force": {
      "type": "string"
    },
    "rural_urban": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "national_park": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "deprivation_rank": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "deprivation_index": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "postcode",
    "latitude",
    "longitude",
    "country",
    "region",
    "local_authority",
    "ward",
    "constituency",
    "lsoa",
    "msoa",
    "output_area",
    "police_force",
    "rural_urban",
    "national_park",
    "deprivation_rank",
    "deprivation_index"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢postcode_compare(postcodes, categories, response_format)

Compare two to five UK postcodes on chosen categories, aligned measure by measure. Fetches each postcode's report concurrently and lines the facts up in a table, so you can answer "which of these is better connected / quieter / cheaper" in one call instead of several. Args: - postcodes (string[]): 2-5 UK postcodes - categories (string[]): 1-6 of demographics, crime, deprivation, prices, broadband, mobile, noise, transport, amenities, schools, environment - response_format ('markdown' | 'json'): default 'markdown' Returns: One row per measure with a column per postcode, each cell carrying the value, its band, and the category status for that postcode. Caveats collect anything that makes a row not strictly comparable. Comparability warnings you must respect, and which this tool surfaces: - Deprivation ranks from different UK nations are NOT comparable — different indices over different numbers of areas. - A measure missing for one postcode because the dataset does not cover that nation is not a low score; the cell says "out_of_coverage". - Ofcom mobile figures describe a whole local authority, so two postcodes in the same authority will always be identical. - Crime counts describe a 1 km square and depend on each police force submitting data; a very low count can be a gap rather than a quiet street. Examples: - "Which has better broadband, SW11 1AA or M1 1AE?" -> postcodes=[...], categories=["broadband"] - "Compare these three on crime and schools" -> categories=["crime","schools"] Don't use when: you have one postcode (use postcode_report) or want the underlying datasets (use postcode_search_datasets).

入力スキーマ

{
  "type": "object",
  "properties": {
    "postcodes": {
      "minItems": 2,
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 5,
        "maxLength": 10
      },
      "description": "Two to five UK postcodes to compare, e.g. [\"SW11 1AA\", \"M1 1AE\"]"
    },
    "categories": {
      "minItems": 1,
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "demographics",
          "crime",
          "deprivation",
          "prices",
          "broadband",
          "mobile",
          "noise",
          "transport",
          "amenities",
          "schools",
          "environment"
        ]
      },
      "description": "Which categories to compare on. Keep it tight — comparing all eleven across five postcodes produces a very large answer."
    },
    "response_format": {
      "default": "markdown",
      "description": "'markdown' for a side-by-side table, 'json' for the structured comparison",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "postcodes",
    "categories"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "postcodes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string"
          },
          "measure": {
            "type": "string"
          },
          "values": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "object",
              "properties": {
                "display": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "value": {
                  "anyOf": [
                    {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "band": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "tone": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "type": "string"
                }
              },
              "required": [
                "display",
                "value",
                "band",
                "tone",
                "status"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "category",
          "measure",
          "values"
        ],
        "additionalProperties": false
      }
    },
    "caveats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "postcodes",
    "categories",
    "rows",
    "caveats"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢postcode_search_datasets(query, category, limit, offset, response_format)

Search a curated registry of 45 UK open datasets and APIs for property and neighbourhood research. Each entry records the dataset's home page, its machine-readable endpoint, format, licence, geographic coverage, update cadence, and the concrete questions it can answer. Use it to find the right source for something this server does not report directly — EPC ratings, planning applications, flood risk, council tax bands, bus timetables, air quality, ground stability, land ownership. Args: - query (string, optional): free text over name, publisher, category, endpoint and questions - category (string, optional): category prefix, e.g. "Crime", "Transport", "Environment" - limit (number): 1-45, default 10 - offset (number): pagination offset, default 0 - response_format ('markdown' | 'json'): default 'markdown' Returns: { total, count, offset, has_more, next_offset, datasets: [{ id, dataset, publisher, category, api, licence, coverage, update_frequency }] } Examples: - "Where do I get EPC data?" -> query="EPC" - "What flood datasets are there?" -> query="flood" - "List every transport source" -> category="Transport", limit=20 Follow up with postcode_get_dataset for the full entry including API docs and the questions it answers.

入力スキーマ

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Free text matched against dataset name, publisher, category, API endpoint and the questions each dataset answers. Omit to list everything.",
      "type": "string",
      "maxLength": 200
    },
    "category": {
      "description": "Filter by category prefix, e.g. \"Crime\", \"Transport\", \"Environment\"",
      "type": "string",
      "maxLength": 80
    },
    "limit": {
      "default": 10,
      "description": "Maximum results (default 10)",
      "type": "integer",
      "minimum": 1,
      "maximum": 45
    },
    "offset": {
      "default": 0,
      "description": "Results to skip, for pagination",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "response_format": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "count": {
      "type": "number"
    },
    "offset": {
      "type": "number"
    },
    "has_more": {
      "type": "boolean"
    },
    "next_offset": {
      "type": "number"
    },
    "datasets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "dataset": {
            "type": "string"
          },
          "publisher": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "api": {
            "type": "string"
          },
          "licence": {
            "type": "string"
          },
          "coverage": {
            "type": "string"
          },
          "update_frequency": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "dataset",
          "publisher",
          "category",
          "api",
          "licence",
          "coverage",
          "update_frequency"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "total",
    "count",
    "offset",
    "has_more",
    "datasets"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢postcode_get_dataset(id, response_format)

Full registry entry for one dataset, by id. Returns everything needed to call the source yourself: its home page, machine-readable endpoint, API documentation, format, licence, geographic coverage, update cadence, and the concrete questions it can answer. Args: - id (string): registry id, e.g. "police-street-crime", "land-registry-ppd", "ea-flood" - response_format ('markdown' | 'json'): default 'markdown' Examples: - "How do I call the police API?" -> id="police-street-crime" - "What licence is Price Paid under?" -> id="land-registry-ppd" Errors: - Returns the closest matching ids when the id is not found.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 2,
      "maxLength": 60,
      "description": "Registry id, e.g. \"police-street-crime\" — find one with postcode_search_datasets"
    },
    "response_format": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "dataset": {
      "type": "string"
    },
    "publisher": {
      "type": "string"
    },
    "link": {
      "type": "string"
    },
    "api": {
      "type": "string"
    },
    "api_docs": {
      "type": "string"
    },
    "format": {
      "type": "string"
    },
    "licence": {
      "type": "string"
    },
    "coverage": {
      "type": "string"
    },
    "update_frequency": {
      "type": "string"
    },
    "questions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "category": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "dataset",
    "publisher",
    "link",
    "api",
    "api_docs",
    "format",
    "licence",
    "coverage",
    "update_frequency",
    "questions",
    "category"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 5 件
検証済みバージョンは記録されていませんツール 5 件
検証済みバージョンは記録されていませんツール 5 件