Checks Sydney homes for sale against a buyer's budget, school zone, commute and area, with reasons.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Gives the answer on one of Sagashi's public question pages: what it was checked on, the newest homes that fit, the newest ruled out with what stopped each, and the page's address. Take `question` from list_questions.
The question's address, as list_questions gives it.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http sagashi https://app.sagashi.au/mcp
Gives the answer on one of Sagashi's public question pages: what it was checked on, the newest homes that fit, the newest ruled out with what stopped each, and the page's address. Take `question` from list_questions.
| Argument | Type | Description |
|---|---|---|
| question* | string | The question's address, as list_questions gives it. |
{
"type": "object",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"maxLength": 200,
"description": "The question's address, as list_questions gives it."
}
},
"additionalProperties": false
}Checks the homes for sale in Sydney that Sagashi holds against a buyer's answers, and returns how many fit and the newest that do, each naming the answers it matched and linking to its source. Set only what the buyer said. Get suburbs from find_suburb, school codes from find_school and a place to travel to from find_place first. A driving or cycling trip is not checked here. Say only what Sagashi returned: when nothing fits, say so, without guesses about the market.
| Argument | Type | Description |
|---|---|---|
| profile* | object |
{
"type": "object",
"required": [
"profile"
],
"properties": {
"profile": {
"type": "object",
"properties": {
"area": {
"type": "object",
"properties": {
"zoning": {
"enum": [
"Mainly houses",
"Houses and townhouses",
"Any, including apartments",
null
],
"description": "The kind of area the home's own lot must be zoned for. Leave it out unless the buyer said it."
},
"development": {
"enum": [
"Avoid major projects",
null
],
"description": "Set to avoid homes with a major project (over $5m) within 500 m. Leave it out unless the buyer said it."
}
},
"additionalProperties": false
},
"about": {
"type": "object",
"properties": {
"suburbs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 20,
"description": "Suburbs the home must be in, each spelled exactly as find_suburb returns it. Empty or left out means anywhere in Sydney. Leave it out unless the buyer said it.",
"uniqueItems": true
}
},
"additionalProperties": false
},
"ideal": {
"type": "object",
"properties": {
"text": {
"anyOf": [
{
"type": "string",
"maxLength": 600
},
{
"type": "null"
}
],
"description": "The buyer's own words about the home they want. Kept as written; it changes no verdict. Leave it out unless the buyer said it."
}
},
"additionalProperties": false
},
"family": {
"type": "object",
"properties": {
"childcare": {
"type": "array",
"items": {
"enum": [
"Long day care",
"Preschool or kindergarten",
"Outside school hours care",
"Family day care"
]
},
"maxItems": 4,
"description": "Kinds of childcare the home's suburb must have. Leave it out unless the buyer said it.",
"uniqueItems": true
}
},
"additionalProperties": false
},
"commute": {
"type": "object",
"properties": {
"days": {
"type": "array",
"items": {
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
]
},
"maxItems": 7,
"description": "The days the trip is made. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"mode": {
"enum": [
"Transit",
"Drive",
"Cycle",
null
],
"description": "How the buyer travels. A driving or cycling trip is not checked here and rules nothing out. Leave it out unless the buyer said it."
},
"arriveBy": {
"anyOf": [
{
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
{
"type": "null"
}
],
"description": "The time to arrive by, 24-hour \"HH:MM\". Leave it out unless the buyer said it."
},
"maxMinutes": {
"anyOf": [
{
"type": "integer",
"maximum": 120,
"minimum": 10
},
{
"type": "null"
}
],
"description": "The longest the trip may take, in minutes. Only a public transport (\"Transit\") trip rules homes out. Leave it out unless the buyer said it."
},
"destination": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"description": "Where the buyer travels to, as find_place labels it. Leave it out unless the buyer said it."
},
"destinationLat": {
"anyOf": [
{
"type": "number",
"maximum": 90,
"minimum": -90
},
{
"type": "null"
}
],
"description": "The latitude of the place find_place returned. Never guess one: without find_place, leave out the whole commute. Leave it out unless the buyer said it."
},
"destinationLng": {
"anyOf": [
{
"type": "number",
"maximum": 180,
"minimum": -180
},
{
"type": "null"
}
],
"description": "The longitude of the place find_place returned. Never guess one: without find_place, leave out the whole commute. Leave it out unless the buyer said it."
},
"destinationBasis": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
],
"description": "Set to \"lookup\" when the position came from find_place. Leave it out unless the buyer said it."
}
},
"additionalProperties": false
},
"schools": {
"type": "object",
"properties": {
"stages": {
"type": "array",
"items": {
"enum": [
"Primary",
"High school"
]
},
"maxItems": 2,
"description": "Which stages of school the nearest Catholic and independent schools are shown for. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"within": {
"enum": [
"1 km",
"2 km",
"5 km",
"10 km",
null
],
"description": "How far, in a straight line, the nearest school of a kind in schools.travelTo may be. Leave it out unless the buyer said it."
},
"travelTo": {
"type": "array",
"items": {
"enum": [
"Selective high",
"Catholic",
"Independent"
]
},
"maxItems": 3,
"description": "Kinds of school the buyer wants nearby. With schools.within set, a home with none that close is ruled out. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"zoneSchools": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]{4}$"
},
"maxItems": 5,
"description": "Public schools whose zone the home must be in, as four-digit codes from find_school. Never a name. Leave it out unless the buyer said it.",
"uniqueItems": true
}
},
"additionalProperties": false
},
"property": {
"type": "object",
"properties": {
"beds": {
"anyOf": [
{
"type": "integer",
"maximum": 6,
"minimum": 1
},
{
"type": "null"
}
],
"description": "The fewest bedrooms that fit. Leave it out unless the buyer said it."
},
"cars": {
"enum": [
"1",
"2",
"3+",
null
],
"description": "The fewest parking spaces that fit. Leave it out unless the buyer said it."
},
"baths": {
"anyOf": [
{
"type": "integer",
"maximum": 6,
"minimum": 1
},
{
"type": "null"
}
],
"description": "The fewest bathrooms that fit. Leave it out unless the buyer said it."
},
"types": {
"type": "array",
"items": {
"enum": [
"House",
"Townhouse",
"Apartment",
"Duplex",
"Terrace"
]
},
"maxItems": 5,
"description": "Kinds of home that fit. Set it whenever the buyer names one: \"a house\" is [\"House\"], \"a unit\" or \"a flat\" is [\"Apartment\"]. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"budget": {
"anyOf": [
{
"type": "object",
"properties": {
"max": {
"type": "integer",
"maximum": 15000,
"minimum": 50
},
"min": {
"type": "integer",
"maximum": 15000,
"minimum": 50
}
},
"minProperties": 1,
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The price range in THOUSANDS of dollars: $1.2m is 1200. Give min, max or both; a missing bound means no limit. Leave it out unless the buyer said it."
}
},
"additionalProperties": false
},
"lifestyle": {
"type": "object",
"properties": {
"arts": {
"type": "array",
"items": {
"enum": [
"Library",
"Theatre",
"Cinema",
"Gallery",
"Museum",
"Market"
]
},
"maxItems": 6,
"description": "Arts places the buyer likes. Shown on Sagashi's map in the app; it changes no verdict here. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"sport": {
"type": "array",
"items": {
"enum": [
"Swimming pool",
"Ovals & fields",
"Tennis",
"Gym",
"Golf",
"Skate park"
]
},
"maxItems": 6,
"description": "Places for sport the buyer likes. Shown on Sagashi's map in the app; it changes no verdict here. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"cuisines": {
"type": "array",
"items": {
"enum": [
"Vietnamese",
"Portuguese",
"Lebanese",
"Japanese",
"Greek",
"Thai",
"Korean",
"Chinese",
"Indian",
"Italian",
"French",
"Malaysian",
"Sushi",
"Seafood",
"Asian Fusion",
"Australian"
]
},
"maxItems": 16,
"description": "Kinds of restaurant the buyer likes. Shown on Sagashi's map in the app; it changes no verdict here. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"outdoors": {
"type": "array",
"items": {
"enum": [
"Beach",
"Park",
"Off-leash dog park",
"Playground"
]
},
"maxItems": 4,
"description": "Outdoor places the buyer likes. Shown on Sagashi's map in the app; it changes no verdict here. Leave it out unless the buyer said it.",
"uniqueItems": true
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Finds a place in Sydney a buyer travels to, such as a hospital, university or station, with the position find_homes takes in profile.commute. Answers from Sagashi's own list of places.
| Argument | Type | Description |
|---|---|---|
| text* | string | What the buyer called it: at least a couple of letters. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "What the buyer called it: at least a couple of letters."
}
},
"additionalProperties": false
}Finds NSW public schools that have an intake zone, by name, with the four-digit codes find_homes takes in profile.schools.zoneSchools.
| Argument | Type | Description |
|---|---|---|
| text* | string | What the buyer called it: at least a couple of letters. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "What the buyer called it: at least a couple of letters."
}
},
"additionalProperties": false
}Finds Sydney suburbs by name, spelled as find_homes takes them in profile.about.suburbs.
| Argument | Type | Description |
|---|---|---|
| text* | string | What the buyer called it: at least a couple of letters. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "What the buyer called it: at least a couple of letters."
}
},
"additionalProperties": false
}For one home find_homes returned, with the same answers: its facts, school zones and nearest schools, childcare in its suburb, who lives nearby, recorded crime, development applications nearby and recent sales nearby.
| Argument | Type | Description |
|---|---|---|
| id* | string | The id of a home find_homes returned for the same answers. |
| profile* | object |
{
"type": "object",
"required": [
"profile",
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"description": "The id of a home find_homes returned for the same answers."
},
"profile": {
"type": "object",
"properties": {
"area": {
"type": "object",
"properties": {
"zoning": {
"enum": [
"Mainly houses",
"Houses and townhouses",
"Any, including apartments",
null
],
"description": "The kind of area the home's own lot must be zoned for. Leave it out unless the buyer said it."
},
"development": {
"enum": [
"Avoid major projects",
null
],
"description": "Set to avoid homes with a major project (over $5m) within 500 m. Leave it out unless the buyer said it."
}
},
"additionalProperties": false
},
"about": {
"type": "object",
"properties": {
"suburbs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 20,
"description": "Suburbs the home must be in, each spelled exactly as find_suburb returns it. Empty or left out means anywhere in Sydney. Leave it out unless the buyer said it.",
"uniqueItems": true
}
},
"additionalProperties": false
},
"ideal": {
"type": "object",
"properties": {
"text": {
"anyOf": [
{
"type": "string",
"maxLength": 600
},
{
"type": "null"
}
],
"description": "The buyer's own words about the home they want. Kept as written; it changes no verdict. Leave it out unless the buyer said it."
}
},
"additionalProperties": false
},
"family": {
"type": "object",
"properties": {
"childcare": {
"type": "array",
"items": {
"enum": [
"Long day care",
"Preschool or kindergarten",
"Outside school hours care",
"Family day care"
]
},
"maxItems": 4,
"description": "Kinds of childcare the home's suburb must have. Leave it out unless the buyer said it.",
"uniqueItems": true
}
},
"additionalProperties": false
},
"commute": {
"type": "object",
"properties": {
"days": {
"type": "array",
"items": {
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
]
},
"maxItems": 7,
"description": "The days the trip is made. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"mode": {
"enum": [
"Transit",
"Drive",
"Cycle",
null
],
"description": "How the buyer travels. A driving or cycling trip is not checked here and rules nothing out. Leave it out unless the buyer said it."
},
"arriveBy": {
"anyOf": [
{
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
{
"type": "null"
}
],
"description": "The time to arrive by, 24-hour \"HH:MM\". Leave it out unless the buyer said it."
},
"maxMinutes": {
"anyOf": [
{
"type": "integer",
"maximum": 120,
"minimum": 10
},
{
"type": "null"
}
],
"description": "The longest the trip may take, in minutes. Only a public transport (\"Transit\") trip rules homes out. Leave it out unless the buyer said it."
},
"destination": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"description": "Where the buyer travels to, as find_place labels it. Leave it out unless the buyer said it."
},
"destinationLat": {
"anyOf": [
{
"type": "number",
"maximum": 90,
"minimum": -90
},
{
"type": "null"
}
],
"description": "The latitude of the place find_place returned. Never guess one: without find_place, leave out the whole commute. Leave it out unless the buyer said it."
},
"destinationLng": {
"anyOf": [
{
"type": "number",
"maximum": 180,
"minimum": -180
},
{
"type": "null"
}
],
"description": "The longitude of the place find_place returned. Never guess one: without find_place, leave out the whole commute. Leave it out unless the buyer said it."
},
"destinationBasis": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
],
"description": "Set to \"lookup\" when the position came from find_place. Leave it out unless the buyer said it."
}
},
"additionalProperties": false
},
"schools": {
"type": "object",
"properties": {
"stages": {
"type": "array",
"items": {
"enum": [
"Primary",
"High school"
]
},
"maxItems": 2,
"description": "Which stages of school the nearest Catholic and independent schools are shown for. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"within": {
"enum": [
"1 km",
"2 km",
"5 km",
"10 km",
null
],
"description": "How far, in a straight line, the nearest school of a kind in schools.travelTo may be. Leave it out unless the buyer said it."
},
"travelTo": {
"type": "array",
"items": {
"enum": [
"Selective high",
"Catholic",
"Independent"
]
},
"maxItems": 3,
"description": "Kinds of school the buyer wants nearby. With schools.within set, a home with none that close is ruled out. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"zoneSchools": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]{4}$"
},
"maxItems": 5,
"description": "Public schools whose zone the home must be in, as four-digit codes from find_school. Never a name. Leave it out unless the buyer said it.",
"uniqueItems": true
}
},
"additionalProperties": false
},
"property": {
"type": "object",
"properties": {
"beds": {
"anyOf": [
{
"type": "integer",
"maximum": 6,
"minimum": 1
},
{
"type": "null"
}
],
"description": "The fewest bedrooms that fit. Leave it out unless the buyer said it."
},
"cars": {
"enum": [
"1",
"2",
"3+",
null
],
"description": "The fewest parking spaces that fit. Leave it out unless the buyer said it."
},
"baths": {
"anyOf": [
{
"type": "integer",
"maximum": 6,
"minimum": 1
},
{
"type": "null"
}
],
"description": "The fewest bathrooms that fit. Leave it out unless the buyer said it."
},
"types": {
"type": "array",
"items": {
"enum": [
"House",
"Townhouse",
"Apartment",
"Duplex",
"Terrace"
]
},
"maxItems": 5,
"description": "Kinds of home that fit. Set it whenever the buyer names one: \"a house\" is [\"House\"], \"a unit\" or \"a flat\" is [\"Apartment\"]. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"budget": {
"anyOf": [
{
"type": "object",
"properties": {
"max": {
"type": "integer",
"maximum": 15000,
"minimum": 50
},
"min": {
"type": "integer",
"maximum": 15000,
"minimum": 50
}
},
"minProperties": 1,
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The price range in THOUSANDS of dollars: $1.2m is 1200. Give min, max or both; a missing bound means no limit. Leave it out unless the buyer said it."
}
},
"additionalProperties": false
},
"lifestyle": {
"type": "object",
"properties": {
"arts": {
"type": "array",
"items": {
"enum": [
"Library",
"Theatre",
"Cinema",
"Gallery",
"Museum",
"Market"
]
},
"maxItems": 6,
"description": "Arts places the buyer likes. Shown on Sagashi's map in the app; it changes no verdict here. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"sport": {
"type": "array",
"items": {
"enum": [
"Swimming pool",
"Ovals & fields",
"Tennis",
"Gym",
"Golf",
"Skate park"
]
},
"maxItems": 6,
"description": "Places for sport the buyer likes. Shown on Sagashi's map in the app; it changes no verdict here. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"cuisines": {
"type": "array",
"items": {
"enum": [
"Vietnamese",
"Portuguese",
"Lebanese",
"Japanese",
"Greek",
"Thai",
"Korean",
"Chinese",
"Indian",
"Italian",
"French",
"Malaysian",
"Sushi",
"Seafood",
"Asian Fusion",
"Australian"
]
},
"maxItems": 16,
"description": "Kinds of restaurant the buyer likes. Shown on Sagashi's map in the app; it changes no verdict here. Leave it out unless the buyer said it.",
"uniqueItems": true
},
"outdoors": {
"type": "array",
"items": {
"enum": [
"Beach",
"Park",
"Off-leash dog park",
"Playground"
]
},
"maxItems": 4,
"description": "Outdoor places the buyer likes. Shown on Sagashi's map in the app; it changes no verdict here. Leave it out unless the buyer said it.",
"uniqueItems": true
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Lists the questions Sagashi has a public page for, such as homes under $1m or zoned for a school, each with the address to pass to answer_question.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.