MyPorta
Find UK homes for sale and to rent, matched to your wishes, with nearby schools and area guides.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"myporta": {
"url": "https://www.myporta.ai/mcp"
}
}
}Remote endpoints
https://www.myporta.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
๐ขsearch_homes(place, buy_or_rent, min_price, max_price, min_beds, ...)
Use this when the user wants to find homes for sale or to rent in the UK. Give a place (town, area or postcode) and any budget, bedrooms or type they mention. Put what they want from the home or area in their own words in `wishes` (for example "a garden", "walk to a station", "good primary schools nearby", "within 45 minutes of King's Cross"); homes are then ranked by fit, each with a 0-100 match score and the evidence behind it (station and school distances, advertised features). Put a physical feature they insist on and an advert would state ("garage", "annexe") in `must_haves`; anything about lifestyle or the area ("near the sea", "wild swimming", "good schools") always goes in `wishes`. Returns up to 10 homes with price, bedrooms, agent and a link, and for each home what is nearby: the nearest primary and secondary schools with their Ofsted grade, station, park, GP surgery, supermarket and broadband.
Input Schema
{
"type": "object",
"properties": {
"place": {
"type": "string",
"description": "One UK place: a town, city, district, county, region, national park, National Landscape, named coast, island or postcode, e.g. \"Harrogate\", \"Dorset\", \"the Lake District\", \"the South West\", \"the south coast\", \"Jersey\", \"LS6\". Each is searched as one whole area. \"near Totnes\" takes in about 3 miles around it."
},
"buy_or_rent": {
"type": "string",
"enum": [
"buy",
"rent"
],
"description": "Default buy."
},
"min_price": {
"type": "number",
"description": "Pounds. For rent, per calendar month."
},
"max_price": {
"type": "number",
"description": "Pounds. For rent, per calendar month."
},
"min_beds": {
"type": "integer",
"minimum": 0,
"maximum": 10
},
"max_beds": {
"type": "integer",
"minimum": 0,
"maximum": 10
},
"property_type": {
"type": "string",
"enum": [
"house",
"flat",
"bungalow",
"land",
"park home",
"room"
]
},
"wishes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 8,
"description": "What the user wants, in their words. Homes are ranked by how well they match."
},
"must_haves": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60
},
"maxItems": 6,
"description": "A physical feature the advert must state word for word, e.g. \"garage\". Never lifestyle or area wishes: those go in wishes."
},
"sort": {
"type": "string",
"enum": [
"best_match",
"newest",
"price_low",
"price_high"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Default 6."
}
},
"required": [
"place"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"place": {
"type": "string"
},
"note": {
"type": "string"
},
"homes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string",
"description": "Street and area, as the advert gives it."
},
"area": {
"type": "string"
},
"price": {
"type": "string",
"description": "As advertised; a rent carries its period only when the advert states one."
},
"beds": {
"type": "number"
},
"baths": {
"type": "number"
},
"type": {
"type": "string"
},
"image_url": {
"type": "string"
},
"agent": {
"type": "string"
},
"why": {
"type": "string",
"description": "The main reason this home matches the request, when a match was asked for."
},
"reasons": {
"type": "array",
"items": {
"type": "string"
},
"description": "Evidence for the match, e.g. \"Station 0.1 miles\", \"Garden ยท advertised\"."
},
"match_score": {
"type": "number",
"description": "0-100: how well the home fits the wishes given. Only when wishes were given."
},
"facts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Key facts from the advert (compare_homes): tenure, council tax band, EPC rating, service charge, parking."
},
"local": {
"type": "array",
"items": {
"type": "string"
},
"description": "What is near the home, measured by MyPorta: the nearest primary and secondary schools with their Ofsted grade, the nearest station, bus stop, park, GP surgery, pharmacy, supermarket and place of worship, and broadband. Distances are straight-line."
},
"url": {
"type": "string",
"description": "The home's MyPorta page, or the agent's own page for a home found on the agent's website."
},
"on_myporta": {
"type": "boolean",
"description": "True when the full details are on MyPorta; false when the link goes to the agent."
}
},
"required": [
"id",
"title",
"price",
"agent",
"url",
"on_myporta"
]
}
},
"more_url": {
"type": "string",
"description": "The same search on MyPorta, with every result."
},
"place_found": {
"type": "boolean",
"description": "False when MyPorta did not recognise the place; no homes are returned then."
},
"towns": {
"type": "array",
"description": "For a coast or national park: the towns searched, each with its search on MyPorta.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"more_url": {
"type": "string"
}
},
"required": [
"name",
"more_url"
]
}
}
},
"required": [
"homes"
]
}๐ขget_home(home_id)
Use this when the user asks about one home from search_homes results: what the advert says, rooms, tenure, lease, service charge, ground rent, council tax band, EPC rating, parking, heating, nearby schools with their Ofsted grade, station, park, GP surgery, supermarket, broadband or agent. Takes the home's id.
Input Schema
{
"type": "object",
"properties": {
"home_id": {
"type": "string",
"description": "The id from search_homes."
}
},
"required": [
"home_id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"home": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string",
"description": "Street and area, as the advert gives it."
},
"area": {
"type": "string"
},
"price": {
"type": "string",
"description": "As advertised; a rent carries its period only when the advert states one."
},
"beds": {
"type": "number"
},
"baths": {
"type": "number"
},
"type": {
"type": "string"
},
"image_url": {
"type": "string"
},
"agent": {
"type": "string"
},
"why": {
"type": "string",
"description": "The main reason this home matches the request, when a match was asked for."
},
"reasons": {
"type": "array",
"items": {
"type": "string"
},
"description": "Evidence for the match, e.g. \"Station 0.1 miles\", \"Garden ยท advertised\"."
},
"match_score": {
"type": "number",
"description": "0-100: how well the home fits the wishes given. Only when wishes were given."
},
"facts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Key facts from the advert (compare_homes): tenure, council tax band, EPC rating, service charge, parking."
},
"local": {
"type": "array",
"items": {
"type": "string"
},
"description": "What is near the home, measured by MyPorta: the nearest primary and secondary schools with their Ofsted grade, the nearest station, bus stop, park, GP surgery, pharmacy, supermarket and place of worship, and broadband. Distances are straight-line."
},
"url": {
"type": "string",
"description": "The home's MyPorta page, or the agent's own page for a home found on the agent's website."
},
"on_myporta": {
"type": "boolean",
"description": "True when the full details are on MyPorta; false when the link goes to the agent."
}
},
"required": [
"id",
"title",
"price",
"agent",
"url",
"on_myporta"
]
},
"description": {
"type": "string",
"description": "The agent's description (homes with full details on MyPorta only)."
},
"summary": {
"type": "string",
"description": "The opening of the agent's advert, in the agent's words (homes found on an agent's website; the full advert is on the agent's page)."
},
"facts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Key facts from the advert: tenure, lease, service charge, ground rent, council tax band, EPC rating, floor area, parking, heating."
},
"caveat": {
"type": "string"
}
},
"required": [
"home"
]
}๐ขcompare_homes(home_ids)
Use this when the user wants to compare two to four homes from search_homes results side by side: price, rooms, key facts, nearby schools with their Ofsted grade, station, park, GP surgery, supermarket, broadband and agent. Takes the homes' ids.
Input Schema
{
"type": "object",
"properties": {
"home_ids": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2,
"maxItems": 4,
"description": "Ids from search_homes."
}
},
"required": [
"home_ids"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"homes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string",
"description": "Street and area, as the advert gives it."
},
"area": {
"type": "string"
},
"price": {
"type": "string",
"description": "As advertised; a rent carries its period only when the advert states one."
},
"beds": {
"type": "number"
},
"baths": {
"type": "number"
},
"type": {
"type": "string"
},
"image_url": {
"type": "string"
},
"agent": {
"type": "string"
},
"why": {
"type": "string",
"description": "The main reason this home matches the request, when a match was asked for."
},
"reasons": {
"type": "array",
"items": {
"type": "string"
},
"description": "Evidence for the match, e.g. \"Station 0.1 miles\", \"Garden ยท advertised\"."
},
"match_score": {
"type": "number",
"description": "0-100: how well the home fits the wishes given. Only when wishes were given."
},
"facts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Key facts from the advert (compare_homes): tenure, council tax band, EPC rating, service charge, parking."
},
"local": {
"type": "array",
"items": {
"type": "string"
},
"description": "What is near the home, measured by MyPorta: the nearest primary and secondary schools with their Ofsted grade, the nearest station, bus stop, park, GP surgery, pharmacy, supermarket and place of worship, and broadband. Distances are straight-line."
},
"url": {
"type": "string",
"description": "The home's MyPorta page, or the agent's own page for a home found on the agent's website."
},
"on_myporta": {
"type": "boolean",
"description": "True when the full details are on MyPorta; false when the link goes to the agent."
}
},
"required": [
"id",
"title",
"price",
"agent",
"url",
"on_myporta"
]
}
}
},
"required": [
"homes"
]
}๐ขget_area_guide(place)
Use this when the user asks what a UK town, village or neighbourhood is like to live in. Returns MyPorta's area guide summary and a link to the full guide.
Input Schema
{
"type": "object",
"properties": {
"place": {
"type": "string",
"description": "Town, village or neighbourhood name."
}
},
"required": [
"place"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"name": {
"type": "string"
},
"region": {
"type": "string"
},
"headline": {
"type": "string"
},
"summary": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"found"
]
}Community
Evidence