{"name":"io.github.asturksever/agentic-house-search","slug":"asturksever-agentic-house-search","title":"Agentic House Search","description":"UK neighbourhood research from government open data: postcode reports, comparisons, 45 datasets.","url":"https://mcp.market/server/asturksever-agentic-house-search","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":28,"stars":1,"forks":1,"downloads_week":27,"last_push_at":"2026-08-06T00:38:17.000Z","license":"NOASSERTION"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T05:40:42.511Z","last_ok_at":"2026-11-04T05:40:42.511Z","latency_ms":138},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/asturksever/agentic-house-search-data-registry","website":"https://agentic-house-search.vercel.app/connect.html","version":"0.1.3","remotes":[{"type":"streamable-http","url":"https://agentic-house-search.vercel.app/mcp"}],"packages":[{"registryType":"npm","identifier":"agentic-house-search","version":"0.1.3","transport":{"type":"stdio"}}],"tools":[{"name":"postcode_compare","description":"Compare two to five UK postcodes on chosen categories, aligned measure by measure.\n\nFetches 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.\n\nArgs:\n  - postcodes (string[]): 2-5 UK postcodes\n  - categories (string[]): 1-6 of demographics, crime, deprivation, prices, broadband, mobile, noise, transport, amenities, schools, environment\n  - response_format ('markdown' | 'json'): default 'markdown'\n\nReturns:\n  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.\n\nComparability warnings you must respect, and which this tool surfaces:\n  - Deprivation ranks from different UK nations are NOT comparable — different indices over different numbers of areas.\n  - 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\".\n  - Ofcom mobile figures describe a whole local authority, so two postcodes in the same authority will always be identical.\n  - 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.\n\nExamples:\n  - \"Which has better broadband, SW11 1AA or M1 1AE?\" -> postcodes=[...], categories=[\"broadband\"]\n  - \"Compare these three on crime and schools\" -> categories=[\"crime\",\"schools\"]\n\nDon't use when: you have one postcode (use postcode_report) or want the underlying datasets (use postcode_search_datasets).","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"postcode_get_dataset","description":"Full registry entry for one dataset, by id.\n\nReturns 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.\n\nArgs:\n  - id (string): registry id, e.g. \"police-street-crime\", \"land-registry-ppd\", \"ea-flood\"\n  - response_format ('markdown' | 'json'): default 'markdown'\n\nExamples:\n  - \"How do I call the police API?\" -> id=\"police-street-crime\"\n  - \"What licence is Price Paid under?\" -> id=\"land-registry-ppd\"\n\nErrors:\n  - Returns the closest matching ids when the id is not found.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"postcode_lookup","description":"Resolve a UK postcode to its geography — coordinates, local authority, ward, constituency, LSOA/MSOA/output area, police force, rural-urban class and deprivation rank.\n\nOne 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.\n\nArgs:\n  - postcode (string): UK postcode, spaces optional\n  - response_format ('markdown' | 'json'): default 'markdown'\n\nReturns:\n  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.\n\nExamples:\n  - \"Where is SW11 1AA?\" -> postcode=\"SW11 1AA\"\n  - \"What LSOA covers M1 1AE?\" -> postcode=\"M1 1AE\"\n  - \"Is XY1 2AB a real postcode?\" -> postcode=\"XY1 2AB\" (returns an error with suggestions)\n\nDon't use when: you want data about the area — use postcode_report instead.\n\nNote: 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.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"postcode_report","description":"Full neighbourhood report for one UK postcode, assembled live from UK government open data.\n\nCovers 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).\n\nEvery 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.\n\nArgs:\n  - postcode (string): UK postcode, spaces optional\n  - categories (string[], optional): subset to fetch; omit for all eleven\n  - include_sources (boolean): append publisher and licence per category (default false)\n  - response_format ('markdown' | 'json'): default 'markdown'\n\nReturns:\n  Per category: a status, a one-paragraph summary, the facts (label, value, band, benchmark, geography, period, source id) and any caveats.\n\n  Statuses that are normal rather than failures:\n  - \"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.\n  - \"unavailable\": a pre-built extract has not been generated for this area yet (noise, currently).\n  - \"partial\": some sources answered and some did not; check notes.\n\nExamples:\n  - \"What's SW11 1AA like?\" -> postcode=\"SW11 1AA\"\n  - \"Is the broadband any good at M1 1AE?\" -> postcode=\"M1 1AE\", categories=[\"broadband\",\"mobile\"]\n  - \"Crime and schools near LA23 1AA\" -> postcode=\"LA23 1AA\", categories=[\"crime\",\"schools\"]\n\nErrors:\n  - \"No such postcode\" with suggestions when the postcode does not exist\n  - Terminated postcodes are reported with the year they were withdrawn\n\nNot a survey, valuation or conveyancing search. Check anything decision-critical against the source.","write_action":false,"price_micros":0,"input_schema":{"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#"}},{"name":"postcode_search_datasets","description":"Search a curated registry of 45 UK open datasets and APIs for property and neighbourhood research.\n\nEach 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.\n\nArgs:\n  - query (string, optional): free text over name, publisher, category, endpoint and questions\n  - category (string, optional): category prefix, e.g. \"Crime\", \"Transport\", \"Environment\"\n  - limit (number): 1-45, default 10\n  - offset (number): pagination offset, default 0\n  - response_format ('markdown' | 'json'): default 'markdown'\n\nReturns:\n  { total, count, offset, has_more, next_offset, datasets: [{ id, dataset, publisher, category, api, licence, coverage, update_frequency }] }\n\nExamples:\n  - \"Where do I get EPC data?\" -> query=\"EPC\"\n  - \"What flood datasets are there?\" -> query=\"flood\"\n  - \"List every transport source\" -> category=\"Transport\", limit=20\n\nFollow up with postcode_get_dataset for the full entry including API docs and the questions it answers.","write_action":false,"price_micros":0,"input_schema":{"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#"}}],"scan":{"score":88,"grade":"A","scanned_at":"2026-09-24T05:05:13.633Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T05:05:13.622Z","components":{"code":{"score":25,"max":25,"notes":["49 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 550ms"]},"poisoning":{"score":13,"max":15,"notes":["5 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":12,"max":15,"notes":["last push 49 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"poison.long-description","severity":"low","component":"poisoning","title":"Unusually long tool description (over 2,000 characters)","evidence":"tool postcode_report: …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.…"}],"inputs":{"probes":[{"url":"https://agentic-house-search.vercel.app/mcp","reachable":true,"authRequired":false,"latencyMs":550,"serverInfo":{"name":"agentic-house-search","version":"0.1.3"}}],"packages":[{"registryType":"npm","identifier":"agentic-house-search","version":"0.1.3","found":true,"license":"SEE LICENSE IN LICENSE.md","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-08-05T23:58:57.797Z","repositoryUrl":"git+https://github.com/asturksever/agentic-house-search-data-registry.git","weeklyDownloads":27}],"repo":{"found":true,"owner":"asturksever","repo":"agentic-house-search-data-registry","archived":false,"pushedAt":"2026-08-06T00:38:17Z","stars":1,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/28983926?v=4","ownerCreatedAt":"2017-05-26T14:34:13Z","license":"NOASSERTION"},"icon":{"url":"https://avatars.githubusercontent.com/u/28983926?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":1,"downloadsWeek":27,"license":"NOASSERTION","lastPushAt":"2026-08-06T00:38:17.000Z","score":28}}}},"grade_history":[],"reviews":[]}