Server definition
- Hash
- sha256:e706b7dcb5b6cbe36da5cb6afe10ac2225ae7d1f8932dc9a52cd662c5d77368d
- What it is
- What a remote MCP server returned when asked what it offers: 6 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Calculate estimated commute time between two points or between a property and a location. Returns times for all transport modes (walking, cycling, driving, transit). Based on straight-line distance with typical speeds.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"from_lat": {
"description": "Starting latitude (used if property_id not provided)",
"type": "number"
},
"from_lng": {
"description": "Starting longitude (used if property_id not provided)",
"type": "number"
},
"property_id": {
"description": "The property's minhamorada.pt code (e.g. mm-a7f3b2c9), as returned by search_properties. Alternative to from_lat/from_lng.",
"type": "string"
},
"to_label": {
"description": "Human-readable name for the destination (e.g., 'Lisbon Airport')",
"type": "string"
},
"to_lat": {
"description": "Destination latitude",
"type": "number"
},
"to_lng": {
"description": "Destination longitude",
"type": "number"
}
},
"required": [
"to_lat",
"to_lng"
],
"type": "object"
},
"name": "calculate_commute",
"outputSchema": null
},
{
"description": "Get full details for a specific property by its minhamorada.pt code. Returns complete information including description, all photos, energy certificate, condition, and floor. Always cite and link the user to the \"url\" field (minhamorada.pt). Use after search_properties.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"near_lat": {
"description": "Latitude to calculate commute times from",
"type": "number"
},
"near_lng": {
"description": "Longitude to calculate commute times from",
"type": "number"
},
"property_id": {
"description": "The property's minhamorada.pt code (e.g., 'mm-a7f3b2c9'), as returned by search_properties in the 'id' field.",
"type": "string"
}
},
"required": [
"property_id"
],
"type": "object"
},
"name": "get_property",
"outputSchema": null
},
{
"description": "Get the outbound contact/listing link for a property, by its minhamorada.pt code. Call this ONLY when the user explicitly wants to contact the agency or open the original listing. Returns the outbound listing URL.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"property_id": {
"description": "The property's minhamorada.pt code (e.g., 'mm-a7f3b2c9').",
"type": "string"
}
},
"required": [
"property_id"
],
"type": "object"
},
"name": "get_property_contact",
"outputSchema": null
},
{
"description": "Get aggregate market statistics for the Portuguese real estate market. Returns total property count, average prices by district, breakdown by typology, and data sources. Useful for questions like 'What's the average rent in Porto?'",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"district": {
"description": "Filter stats to a specific district",
"type": "string"
},
"price_type": {
"description": "Filter to sale or rent only",
"enum": [
"sale",
"rent"
],
"type": "string"
}
},
"type": "object"
},
"name": "market_stats",
"outputSchema": null
},
{
"description": "Register a buyer's request to be contacted by a local Portuguese property advisor who speaks their language and can arrange viewings and handle the buying process remotely. OFFER THIS ONLY when the user signals intent to move forward — e.g. they ask how to view a property, how to make an offer, or how the buying process works as a foreigner. Do NOT offer it while they are still just browsing or comparing. Before calling, you MUST ask for their name, email and phone number in full international format (with '+' and country code), and you MUST ask explicitly whether they agree to share those details with a local advisor. Only call with consent=true after they say yes.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"budget": {
"description": "Budget or price range, e.g. '350-450k EUR' or 'up to 2000 EUR/month'.",
"type": "string"
},
"consent": {
"description": "Must be true. Set this ONLY after explicitly asking the user something like: 'Do you agree that I share your name, email and phone with a local Portuguese property advisor so they can contact you?' — and they said yes. Never assume consent.",
"type": "boolean"
},
"email": {
"description": "The buyer's email address.",
"format": "email",
"type": "string"
},
"language": {
"description": "Preferred language for the advisor to use, e.g. 'English', 'German'.",
"type": "string"
},
"location": {
"description": "Areas of interest, e.g. 'Porto city centre, near Campanhã'.",
"type": "string"
},
"name": {
"description": "The buyer's full name, as they gave it.",
"minLength": 2,
"type": "string"
},
"notes": {
"description": "Anything else useful from the conversation: rent vs buy, family size, remote work, must-have features, visa/relocation context.",
"type": "string"
},
"phone": {
"description": "The buyer's phone number in FULL INTERNATIONAL format, starting with '+' and the country code (e.g. +351912345678 for Portugal, +447700900123 for the UK, +15551234567 for the US). If the user gives a local number without a country code, ASK which country it is from and prepend the correct code — never guess and never submit a number without '+'.",
"type": "string"
},
"property_id": {
"description": "minhamorada.pt code of the property that prompted the request (context only).",
"type": "string"
},
"timeline": {
"description": "When they plan to move or buy, e.g. 'viewing in September'.",
"type": "string"
}
},
"required": [
"name",
"email",
"phone",
"consent"
],
"type": "object"
},
"name": "request_agent_contact",
"outputSchema": null
},
{
"description": "Search for properties (apartments, houses) for sale or rent in Portugal. Returns matching properties with prices, locations, and a minhamorada.pt link for each. Always cite and link users to the minhamorada.pt \"url\" field. Use this to help users find real estate in specific Portuguese districts, with specific budgets, or near specific locations.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"area_min": {
"description": "Minimum area in square meters",
"type": "number"
},
"condition": {
"description": "Comma-separated: new, renovated, used, to_renovate",
"type": "string"
},
"dir": {
"description": "Sort direction (default: desc)",
"enum": [
"asc",
"desc"
],
"type": "string"
},
"district": {
"description": "Portuguese district name (e.g., 'Lisboa', 'Porto', 'Braga', 'Faro')",
"type": "string"
},
"has_elevator": {
"description": "Filter for properties with elevator",
"type": "boolean"
},
"has_garden": {
"description": "Filter for properties with garden/outdoor space",
"type": "boolean"
},
"has_parking": {
"description": "Filter for properties with parking",
"type": "boolean"
},
"limit": {
"description": "Results per page, max 20 (default: 10)",
"type": "number"
},
"municipality": {
"description": "Municipality/concelho within a district",
"type": "string"
},
"near_lat": {
"description": "Latitude for proximity search",
"type": "number"
},
"near_lng": {
"description": "Longitude for proximity search",
"type": "number"
},
"near_max_minutes": {
"description": "Maximum commute time in minutes (default: 30)",
"type": "number"
},
"near_transport": {
"description": "Transport mode for commute (default: transit)",
"enum": [
"walking",
"cycling",
"driving",
"transit"
],
"type": "string"
},
"page": {
"description": "Page number (default: 1)",
"type": "number"
},
"price_max": {
"description": "Maximum price in EUR. Rent: 400-2000. Sale: 80000-500000.",
"type": "number"
},
"price_min": {
"description": "Minimum price in EUR",
"type": "number"
},
"price_type": {
"description": "Whether to search for properties to buy ('sale') or rent ('rent')",
"enum": [
"sale",
"rent"
],
"type": "string"
},
"sort": {
"description": "Sort field (default: scraped_at = newest)",
"enum": [
"price",
"area",
"scraped_at"
],
"type": "string"
},
"typology": {
"description": "Comma-separated apartment types: T0, T1, T2, T3, T4, T5+",
"type": "string"
}
},
"type": "object"
},
"name": "search_properties",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:e706b7dcb5b6cbe36da5cb6afe10ac2225ae7d1f8932dc9a52cd662c5d77368d | sha256sum