Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,530Letters: 13Defects: 1,322counted 4 min ago
teppi

Server definition

Hash
sha256:f384c3408d8eb4fb74ee66e55627d87c272ff5c7d045c25b0811b1ab7cbeda0c
What it is
What a remote MCP server returned when asked what it offers: 14 tools

The blob, as servednamed by its sha256

{ "instructions": "UK property data tools. For a comprehensive single-property analysis, invoke the `full_property_analysis` prompt — it instructs you to call property_comps, property_yield, property_epc and rightmove_search and synthesise. For postcode-only data fetches use property_comps and property_yield separately. ppd_transactions for recent transactions at a postcode -- bounded by the stated coverage in each response's `provenance`, never a full property history; an empty result means 'no sales in coverage', not 'never sold'. rightmove_search to browse listings by postcode, rightmove_listing for full detail on one listing, property_epc for energy certificates, rental_analysis for rental market figures, stamp_duty for SDLT, property_blocks for block-buy analysis, planning_search for council planning portals, company_search to find a company by name. Price Paid Data: contains HM Land Registry data (c) Crown copyright and database right, licensed under the Open Government Licence v3.0; see GET /v1/meta.", "tools": [ { "description": "Search Companies House for a company by name.", "inputSchema": { "additionalProperties": false, "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "company_search", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Fetch a single EPC certificate by its GOV.UK certificate number.\n\nUse after property_epc_summaries has listed the candidates and you have\npicked one — this is faster than property_epc(postcode, address) as it makes\na direct lookup with no address matching or postcode re-fetch.\n\nThe parameter is named lmk_key as a compatibility alias; pass the\ncertificate number, which is returned in every property_epc_summaries row.\n(property_epc_search is deprecated and raises — do not call it.)\n\nReturns the full EPC certificate, or null only when no such certificate is lodged. A null result means no such certificate is lodged. If the EPC service cannot be reached the tool raises an error instead — never treat an error as evidence that a property has no certificate.", "inputSchema": { "additionalProperties": false, "properties": { "lmk_key": { "type": "string" } }, "required": [ "lmk_key" ], "type": "object" }, "name": "epc_certificate", "outputSchema": { "properties": { "result": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ] } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "Find the council planning portal URL for a postcode.", "inputSchema": { "additionalProperties": false, "properties": { "postcode": { "type": "string" } }, "required": [ "postcode" ], "type": "object" }, "name": "planning_search", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Land Registry Price Paid transactions for a postcode, most recent first.\n\nReturns up to `limit` most recent transactions **within snapshot coverage**\n(`coverage_from`-`coverage_to` in the response's `provenance`).\nUnfiltered by default -- category-B bulk transfers and commercial sales are\nincluded. Pass `property_type` (F=flat, D=detached, S=semi, T=terraced,\nO=other) to restrict the result to a single type.\n\n**Not a complete property history.** Check `provenance.older_records_exist`\nand `provenance.sample_complete` before saying anything about what a\nproperty has or has not sold for. An empty result means \"no sales within\nthe stated coverage\" -- never \"never sold\". For clean residential\ncomparable sales, use `property_comps`.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "default": 10, "type": "integer" }, "postcode": { "type": "string" }, "property_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "postcode" ], "type": "object" }, "name": "ppd_transactions", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Property block analysis — identify buildings with multiple flat sales (block-buy opportunities).", "inputSchema": { "additionalProperties": false, "properties": { "months": { "default": 24, "description": "Number of calendar months ending today; default 24. Results are limited to available coverage.", "minimum": 1, "type": "integer" }, "postcode": { "type": "string" }, "search_level": { "default": "sector", "type": "string" } }, "required": [ "postcode" ], "type": "object" }, "name": "property_blocks", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Comparable sales from Land Registry Price Paid Data.\n\nDefaults return the standard residential set:\n- property_type=None means residential (F+D+S+T). Pass \"F\"/\"D\"/\"S\"/\"T\"/\"O\"\n for a single type, or \"ALL\" to disable type filtering (firehose).\n- transaction_category defaults to \"A\" (standard sales). Pass None to\n include category-B (bulk transfers, non-standard conveyances).\n- filter_outliers=False by default; set True for IQR-trimmed stats AND\n transaction list (1.5*IQR rule, needs >=4 prices).\n\nlimit caps returned transactions (max 200). enrich_epc attaches EPC floor\narea and price-per-sqft to each transaction — slower but richer.", "inputSchema": { "additionalProperties": false, "properties": { "address": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "enrich_epc": { "default": false, "type": "boolean" }, "filter_outliers": { "default": false, "type": "boolean" }, "limit": { "default": 50, "type": "integer" }, "months": { "default": 24, "description": "Number of calendar months ending today; default 24. Results are limited to available coverage.", "minimum": 1, "type": "integer" }, "postcode": { "type": "string" }, "property_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "search_level": { "default": "sector", "type": "string" }, "transaction_category": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "A" } }, "required": [ "postcode" ], "type": "object" }, "name": "property_comps", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Energy Performance Certificate data for a UK property or postcode area.\n\nWith address: returns the matched EPC certificate for that specific property.\nWithout address: returns the record count and, when the bounded response\ncontains every matching summary, the rating distribution. Property-type\nbreakdown and floor-area statistics are NOT available — the EPC service\nexposes them only on individual certificates.\n\nReturns null only when no certificates are lodged for the postcode. A null result means no such certificate is lodged. If the EPC service cannot be reached the tool raises an error instead — never treat an error as evidence that a property has no certificate.", "inputSchema": { "additionalProperties": false, "properties": { "address": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "postcode": { "type": "string" } }, "required": [ "postcode" ], "type": "object" }, "name": "property_epc", "outputSchema": { "properties": { "result": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ] } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "DEPRECATED — use property_epc_summaries then epc_certificate.\n\nThis tool returned score, floor_area, property_type, habitable_rooms and\ninspection_date for every certificate at a postcode. The EPC service no\nlonger exposes those fields in a search: they exist only on a full\ncertificate. Reproducing the old response would require one upstream\nrequest per certificate, so this tool is unsupported rather than silently\ndegraded or silently expensive.", "inputSchema": { "additionalProperties": false, "properties": { "postcode": { "type": "string" } }, "required": [ "postcode" ], "type": "object" }, "name": "property_epc_search", "outputSchema": { "properties": { "result": { "anyOf": [ { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, { "type": "null" } ] } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "List EPC certificate summaries at a postcode — for candidate selection.\n\nReturns one bounded page. Each entry contains only what the EPC search\nexposes: certificate_number, address, uprn (often absent), energy band,\nregistration_date and schema_type. Energy score, floor area and property\ntype are NOT available here — fetch a specific certificate for those.\n\nWorkflow when a Rightmove listing has no house number:\n 1. property_epc_summaries(postcode) to list candidates.\n 2. Narrow by address text and, where present, uprn.\n 3. epc_certificate(lmk_key=<certificate_number>) for the chosen one, then\n cross-check its floor_area against the listing.\n 4. If several candidates remain equally plausible, present them all —\n do not guess. Selecting arbitrarily attaches another property's data.\n\n`complete` is false when the postcode holds more records than this page\nreturns. Upstream page traversal is not snapshot-stable, so a multi-page\nresult is a bounded sample, not a guaranteed-complete set.\n\nAn empty `results` list means no certificates are lodged. If the EPC service\ncannot be reached the tool raises an error instead — never treat an error as\nevidence that a property has no certificate.", "inputSchema": { "additionalProperties": false, "properties": { "page": { "default": 1, "type": "integer" }, "postcode": { "type": "string" } }, "required": [ "postcode" ], "type": "object" }, "name": "property_epc_summaries", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Gross rental yield for a UK postcode.\n\nCombines Land Registry sale comps (median sale price) with Rightmove rental\nlistings (median monthly rent) to produce a gross yield percentage.", "inputSchema": { "additionalProperties": false, "properties": { "auto_escalate": { "default": true, "description": "Compatibility parameter. Does NOT widen the search area on\nthe live source (see `warnings`); previously postcode→\nsector→district. Default True. Set False for strict-locality only.", "type": "boolean" }, "months": { "default": 24, "description": "Number of calendar months ending today; default 24. Results are limited to available coverage.", "minimum": 1, "type": "integer" }, "postcode": { "description": "UK postcode (e.g. \"NG1 2NS\").", "type": "string" }, "property_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Filter sales by type. None (default) = residential set\n(F+D+S+T). Pass \"F\"/\"D\"/\"S\"/\"T\"/\"O\" for one type, \"ALL\" for firehose." }, "search_level": { "default": "sector", "description": "PPD search granularity — \"postcode\", \"sector\" (default),\nor \"district\".", "type": "string" } }, "required": [ "postcode" ], "type": "object" }, "name": "property_yield", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Rental market analysis and achievable rent estimate.\n\nauto_escalate widens the Rightmove search RADIUS when fewer than 5 listings\nare found (thin market). This is rental-radius escalation and is unaffected\nby the PPD geography containment: it does not change a postcode's outcode or\nsector, so it carries none of the limit-dependence that disabled PPD\nauto-widening. Response includes thin_market, escalated_from, escalated_to\nfields when escalation occurs.", "inputSchema": { "additionalProperties": false, "properties": { "auto_escalate": { "default": true, "type": "boolean" }, "postcode": { "type": "string" }, "purchase_price": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null }, "radius": { "default": 0.5, "type": "number" } }, "required": [ "postcode" ], "type": "object" }, "name": "rental_analysis", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Full detail for a single Rightmove listing.\n\nproperty_id is the numeric Rightmove property ID (the digits at the end of a\nrightmove.co.uk/properties/... URL), max 12 digits. Full URLs are not accepted.\ninclude_images fetches and embeds photos and floorplans as MCP image content.\nmax_images caps the number of property photos (default 3); floorplans always included.", "inputSchema": { "additionalProperties": false, "properties": { "include_images": { "default": false, "type": "boolean" }, "max_images": { "default": 3, "type": "integer" }, "property_id": { "type": "string" } }, "required": [ "property_id" ], "type": "object" }, "name": "rightmove_listing", "outputSchema": null }, { "description": "Fetch Rightmove listings for a postcode.\n\nlisting_type: \"sale\" or \"rent\". sort_by: \"newest\", \"most_reduced\",\n\"price_asc\", \"price_desc\". Images are excluded from results.", "inputSchema": { "additionalProperties": false, "properties": { "listing_type": { "default": "sale", "type": "string" }, "max_pages": { "default": 3, "type": "integer" }, "max_price": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null }, "min_bedrooms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null }, "postcode": { "type": "string" }, "property_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null }, "radius": { "default": 0.5, "type": "number" }, "sort_by": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null } }, "required": [ "postcode" ], "type": "object" }, "name": "rightmove_search", "outputSchema": { "properties": { "result": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "UK Stamp Duty Land Tax (SDLT) calculation with full breakdown.", "inputSchema": { "additionalProperties": false, "properties": { "additional_property": { "default": false, "type": "boolean" }, "first_time_buyer": { "default": false, "type": "boolean" }, "non_resident": { "default": false, "type": "boolean" }, "price": { "type": "integer" } }, "required": [ "price" ], "type": "object" }, "name": "stamp_duty", "outputSchema": { "additionalProperties": true, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:f384c3408d8eb4fb74ee66e55627d87c272ff5c7d045c25b0811b1ab7cbeda0c | sha256sum