Koskamo

Praesago MCP

Official MCP server providing UK property area data for England and Wales, including sold prices, rents, crime, flood risk, and live listings. It enables AI agents to look up, search, compare districts, and access market pulse data via tools like get_area_overview and get_area_context.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Praesago MCP logo, by PraesagoVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Praesago
You need:Get a free API key
MCP endpoint (Streamable HTTP)
https://praesago.com/api/mcp
Vendor documentation

What its tools do

9 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

9 of 9 have a description · 9 of 9 declare behavior hints · 9 of 9 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to praesago.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Look up area facts and full context for postcode districts
  • Search and compare districts by price, region, or deprivation
  • Access live market pulse data on listings and rents
  • Screen districts by median sold price or asking rent

Source and maintenance

Vendor evidenceRegistry 1.0.1

Protocol and capabilities

Server
praesago 1.1.1
MCP protocol negotiated in check
2025-11-25
Tools
9 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Praesago provides UK (England & Wales) property area intelligence at postcode-district level, from 30+ government data sources plus a weekly live listings pulse. Every tool accepts a postcode, a postcode district (E17) or a place name (Walthamstow, Hackney). Results state the date or year of each figure; if a result says its data is not current, say so when you quote it. Always include the praesago.com links from tool responses when citing data.

Tools

9 advertised

get_area_overview — Area overview
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Headline facts for a UK area: median sold price and its 12-month change, household income, population, private-renter share, deprivation, flood risk, broadband, council tax, the live listings pulse, live rents (active rent listings and median asking rent a month), the asking rental yield and average private rent, recorded crime per 1,000 residents (withheld where the police data has gaps), and people killed or seriously injured on the roads over three years. Takes a postcode, a postcode district or a place name (a borough name returns its best-matching district and lists the others). Optional response_format: "concise" (about 150 words) or "detailed" (default). The result also carries the figures as structured data. England & Wales only (Scotland and Northern Ireland are not covered). Each figure carries its year or date. It describes the area as it is and does not forecast prices.

get_area_overview input schema
{
  "type": "object",
  "required": [
    "area"
  ],
  "properties": {
    "area": {
      "type": "string",
      "description": "A postcode (\"E17 7AB\"), postcode district (\"E17\") or place name (\"Walthamstow\", \"Hackney\")"
    },
    "response_format": {
      "enum": [
        "concise",
        "detailed"
      ],
      "type": "string",
      "description": "'concise' (about 150 words: price, income, deprivation, live market and rents) or 'detailed' (default: every headline fact)"
    }
  }
}
get_area_overview output schema
{
  "type": "object",
  "required": [
    "district",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "region": {
      "type": [
        "string",
        "null"
      ]
    },
    "district": {
      "type": "string"
    },
    "area_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "sales_12m": {
      "type": [
        "number",
        "null"
      ]
    },
    "live_rents": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "week": {
          "type": "string"
        },
        "active_listings": {
          "type": "number"
        },
        "median_asking_rent_pcm": {
          "type": [
            "number",
            "null"
          ]
        }
      }
    },
    "population": {
      "type": [
        "number",
        "null"
      ]
    },
    "live_sale_market": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "week": {
          "type": "string"
        },
        "active_listings": {
          "type": "number"
        },
        "median_asking_gbp": {
          "type": [
            "number",
            "null"
          ]
        },
        "price_reduced_pct": {
          "type": [
            "number",
            "null"
          ]
        },
        "active_listings_at_least": {
          "type": "boolean"
        }
      }
    },
    "price_change_pct": {
      "type": [
        "number",
        "null"
      ]
    },
    "private_renters_pct": {
      "type": [
        "number",
        "null"
      ]
    },
    "household_income_gbp": {
      "type": [
        "number",
        "null"
      ]
    },
    "median_sold_price_gbp": {
      "type": [
        "number",
        "null"
      ]
    },
    "council_tax_band_d_gbp": {
      "type": [
        "number",
        "null"
      ]
    },
    "ultrafast_broadband_pct": {
      "type": [
        "number",
        "null"
      ]
    },
    "deprivation_median_decile": {
      "type": [
        "number",
        "null"
      ]
    },
    "properties_at_high_or_medium_flood_risk": {
      "type": [
        "number",
        "null"
      ]
    }
  }
}
get_area_overview annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
get_area_context — Full area profile
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

The deeper profile for a UK area. With a free Praesago API key: about 30 sections (demographics, income, ethnicity, tenure, dwelling types, deprivation domains, health, schools, broadband, flood, noise, green space, council tax, politics, homelessness, local economy), each with its source year. Without a key you get the same headline facts as get_area_overview plus a note on what the key adds. Takes a postcode, a postcode district or a place name. England & Wales only. It describes the area as it is and does not forecast prices.

get_area_context input schema
{
  "type": "object",
  "required": [
    "area"
  ],
  "properties": {
    "area": {
      "type": "string",
      "description": "A postcode (\"E17 7AB\"), postcode district (\"E17\") or place name (\"Walthamstow\", \"Hackney\")"
    }
  }
}
get_area_context annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
get_area_profile — Local authority profile
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Figures for a whole local authority (a council area such as Leeds, Manchester or Hackney), added up over the postcode districts that sit mostly inside it: median sold price over all their sales and its 12-month change, population, household income, deprivation, and live sale and rent listings. The result says how many districts it covers. Takes a local authority name. For one postcode district, postcode or town use get_area_overview. England & Wales only. It describes the authority as it is and does not forecast prices.

get_area_profile input schema
{
  "type": "object",
  "required": [
    "authority"
  ],
  "properties": {
    "authority": {
      "type": "string",
      "description": "A local authority (council area) name, e.g. \"Leeds\", \"Manchester\", \"Hackney\""
    }
  }
}
get_area_profile output schema
{
  "type": "object",
  "required": [
    "authority",
    "district_count"
  ],
  "properties": {
    "authority": {
      "type": "string"
    },
    "districts": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "sales_12m": {
      "type": [
        "number",
        "null"
      ]
    },
    "population": {
      "type": [
        "number",
        "null"
      ]
    },
    "rent_listings": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "week": {
          "type": "string"
        },
        "active": {
          "type": "number"
        },
        "districts": {
          "type": "number"
        },
        "asking_rent_pcm": {
          "type": [
            "number",
            "null"
          ]
        }
      }
    },
    "sale_listings": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "week": {
          "type": "string"
        },
        "active": {
          "type": "number"
        },
        "districts": {
          "type": "number"
        },
        "price_reduced_pct": {
          "type": [
            "number",
            "null"
          ]
        }
      }
    },
    "authority_code": {
      "type": "string"
    },
    "district_count": {
      "type": "number"
    },
    "price_change_pct": {
      "type": [
        "number",
        "null"
      ]
    },
    "household_income_gbp": {
      "type": [
        "number",
        "null"
      ]
    },
    "median_sold_price_gbp": {
      "type": [
        "number",
        "null"
      ]
    },
    "deprivation_average_decile": {
      "type": [
        "number",
        "null"
      ]
    }
  }
}
get_area_profile annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
screen_areas — Screen districts by price, rent, listings and region
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Screen England & Wales postcode districts. Filters (all optional): median sold price range over 12 months, live asking rent range a month, minimum active sale listings, price-cut share range (from the week of 2026-11-02), and region (including "Wales"). Sort by price, rent, listings or price_cut. Returns the matching districts with their figures and links. Use for questions like "districts in the North West with a median under £200k and asking rent over £900". Districts with fewer than 30 sales have no median; fewer than 20 rent listings no asking rent. Asking rents and prices are not agreed or sold prices.

screen_areas input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "Max results, up to 25 (default 10)"
    },
    "order": {
      "type": "string",
      "description": "asc or desc (default: asc for price and rent, desc for listings and price_cut)"
    },
    "region": {
      "type": "string",
      "description": "One region name: North East, North West, Yorkshire and The Humber, East Midlands, West Midlands, East of England, London, South East, South West, Wales (optional)"
    },
    "sort_by": {
      "type": "string",
      "description": "price (default), rent, listings or price_cut"
    },
    "max_price_cut_pct": {
      "type": "number",
      "description": "Maximum share of sale listings that were price-reduced, in percent (optional)"
    },
    "min_price_cut_pct": {
      "type": "number",
      "description": "Minimum share of sale listings that were price-reduced, in percent (optional)"
    },
    "min_sale_listings": {
      "type": "number",
      "description": "Minimum active sale listings (optional)"
    },
    "max_asking_rent_pcm": {
      "type": "number",
      "description": "Maximum median asking rent a month in GBP (optional)"
    },
    "min_asking_rent_pcm": {
      "type": "number",
      "description": "Minimum median asking rent a month in GBP (optional)"
    },
    "max_median_price_gbp": {
      "type": "number",
      "description": "Maximum 12m median sold price in GBP (optional)"
    },
    "min_median_price_gbp": {
      "type": "number",
      "description": "Minimum 12m median sold price in GBP (optional)"
    }
  }
}
screen_areas output schema
{
  "type": "object",
  "required": [
    "total_matches",
    "districts"
  ],
  "properties": {
    "order": {
      "type": "string"
    },
    "districts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "district"
        ],
        "properties": {
          "region": {
            "type": [
              "string",
              "null"
            ]
          },
          "district": {
            "type": "string"
          },
          "area_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "sales_12m": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_cut_pct": {
            "type": [
              "number",
              "null"
            ]
          },
          "rent_listings": {
            "type": [
              "number",
              "null"
            ]
          },
          "sale_listings": {
            "type": [
              "number",
              "null"
            ]
          },
          "asking_rent_pcm": {
            "type": [
              "number",
              "null"
            ]
          },
          "median_sold_price_gbp": {
            "type": [
              "number",
              "null"
            ]
          }
        }
      }
    },
    "rent_week": {
      "type": [
        "string",
        "null"
      ]
    },
    "sale_week": {
      "type": [
        "string",
        "null"
      ]
    },
    "sorted_by": {
      "type": "string"
    },
    "total_matches": {
      "type": "number"
    }
  }
}
screen_areas annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
search_areas — Screen districts by price and region
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Screen England & Wales postcode districts by region and median property price. Returns matching districts with medians and links, cheapest first. Use for questions like "areas in the North West under £250k". The region must be one of: North East, North West, Yorkshire and The Humber, East Midlands, West Midlands, East of England, London, South East, South West, Wales. Counties and cities are not regions (Kent and Surrey are in South East); for a town or borough use `search`. Districts with fewer than 30 sales in the last 12 months are left out. Scotland is not covered.

search_areas input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "Max results, up to 25 (default 10)"
    },
    "region": {
      "type": "string",
      "description": "One region name from the list in the tool description, e.g. \"North West\", \"London\", \"South East\" (optional)"
    },
    "max_median_price_gbp": {
      "type": "number",
      "description": "Maximum 12m median sold price in GBP, as a plain number such as 250000 (optional)"
    }
  }
}
search_areas annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
compare_areas — Compare two areas
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Compare two UK areas side by side on median sold price and its change, income, population, private renters, deprivation, flood risk, broadband, council tax and (when both are current) the live listings pulse and live asking rents. Each line says which area is higher and by how much. Each input can be a postcode, a postcode district or a place name. Two local authority names (for example Leeds and Manchester) are compared as authorities, each as the postcode districts that sit mostly inside it, and the result says so. England & Wales only.

compare_areas input schema
{
  "type": "object",
  "required": [
    "area_a",
    "area_b"
  ],
  "properties": {
    "area_a": {
      "type": "string",
      "description": "First area. A postcode (\"E17 7AB\"), postcode district (\"E17\") or place name (\"Walthamstow\", \"Hackney\")"
    },
    "area_b": {
      "type": "string",
      "description": "Second area. A postcode (\"E17 7AB\"), postcode district (\"E17\") or place name (\"Walthamstow\", \"Hackney\")"
    }
  }
}
compare_areas annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
get_market_pulse — Live asking-market pulse
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Live asking-market state for a UK area, collected weekly from property portals: active listing count, new listings, how many have been price-reduced, median asking price, and median time on market, plus active rent listings and median asking rent a month. Answers "is this area moving or stuck?" and "are sellers cutting prices here?" — the negotiation-side data that completed-sales records (which lag by months) cannot show. The result states the week it covers and warns if that week is not current. Takes a postcode, a postcode district or a place name. England & Wales, sale listings and rent listings. It reports the market as it is now and does not forecast prices.

get_market_pulse input schema
{
  "type": "object",
  "required": [
    "area"
  ],
  "properties": {
    "area": {
      "type": "string",
      "description": "A postcode (\"E17 7AB\"), postcode district (\"E17\") or place name (\"Walthamstow\", \"Hackney\")"
    }
  }
}
get_market_pulse output schema
{
  "type": "object",
  "required": [
    "district",
    "week",
    "active_listings"
  ],
  "properties": {
    "week": {
      "type": "string"
    },
    "rents": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "week": {
          "type": "string"
        },
        "active_listings": {
          "type": "number"
        },
        "median_asking_rent_pcm": {
          "type": [
            "number",
            "null"
          ]
        }
      }
    },
    "age_days": {
      "type": "number"
    },
    "district": {
      "type": "string"
    },
    "left_market": {
      "type": [
        "number",
        "null"
      ]
    },
    "new_listings": {
      "type": [
        "number",
        "null"
      ]
    },
    "price_reduced": {
      "type": [
        "number",
        "null"
      ]
    },
    "active_listings": {
      "type": "number"
    },
    "median_asking_gbp": {
      "type": [
        "number",
        "null"
      ]
    },
    "price_reduced_pct": {
      "type": [
        "number",
        "null"
      ]
    },
    "median_days_on_market": {
      "type": [
        "number",
        "null"
      ]
    },
    "active_listings_at_least": {
      "type": "boolean"
    }
  }
}
get_market_pulse annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
search — Find areas by name
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Search Praesago UK property area intelligence by place name, borough, region or postcode district. Use it when you only have a place name (for example Hackney or Sheffield) and want the matching districts. Returns matching areas with ids and links; an empty list means no match.

search input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Place name, borough, region or postcode district"
    }
  }
}
search annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
fetch — Fetch an area profile
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Fetch the Praesago area profile for a postcode district returned by search.

fetch input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Postcode district id from search results"
    }
  }
}
fetch annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1220 ms
95th percentile latency
1220 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1220 ms · metadata changed · 9 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http praesago-mcp https://praesago.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add praesago-mcp --url https://praesago.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable praesago-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "praesago-mcp": {
      "url": "https://praesago.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "praesago-mcp": {
      "type": "streamableHttp",
      "url": "https://praesago.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start praesago-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "praesago-mcp": {
      "type": "http",
      "url": "https://praesago.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http praesago-mcp https://praesago.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://praesago.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "praesago-mcp": {
      "serverUrl": "https://praesago.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Praesago MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Praesago MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing