Spain's MLS: verified property for sale on the Costa del Sol, Costa Blanca and Mallorca.
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.
Get an active public agent profile and public aggregate counts; no contact, team, CRM or personal-address data.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http mls-spain https://thenls.com/mcp
Get an active public agent profile and public aggregate counts; no contact, team, CRM or personal-address data.
| Argument | Type | Description |
|---|---|---|
| id* | integer |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}Aggregate active public buyer demand by area and optional property type without exposing individual identities.
| Argument | Type | Description |
|---|---|---|
| area | string | |
| property_type | string |
{
"type": "object",
"properties": {
"area": {
"type": "string",
"maxLength": 120
},
"property_type": {
"type": "string",
"maxLength": 60
}
},
"additionalProperties": false
}Read one enabled public area guide by canonical id or slug.
| Argument | Type | Description |
|---|---|---|
| id | integer | |
| slug | string |
{
"type": "object",
"oneOf": [
{
"required": [
"id"
]
},
{
"required": [
"slug"
]
}
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"slug": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
},
"additionalProperties": false
}Get one published verified brokerage by id or slug without private registration, contact, team or address data.
| Argument | Type | Description |
|---|---|---|
| id | integer | |
| slug | string |
{
"type": "object",
"oneOf": [
{
"required": [
"id"
]
},
{
"required": [
"slug"
]
}
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"slug": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
},
"additionalProperties": false
}Get one active public buyer requirement by id or slug, with identity and private fields omitted.
| Argument | Type | Description |
|---|---|---|
| id | integer | |
| slug | string |
{
"type": "object",
"oneOf": [
{
"required": [
"id"
]
},
{
"required": [
"slug"
]
}
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"slug": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
},
"additionalProperties": false
}Return public aggregate benchmarks, trends and eligible asking-inventory statistics for an area; never individual sales, addresses or coordinates.
| Argument | Type | Description |
|---|---|---|
| area* | string | |
| window | integer | |
| to_period | string | |
| from_period | string | |
| property_type | string |
{
"type": "object",
"required": [
"area"
],
"properties": {
"area": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"window": {
"type": "integer",
"default": 4,
"maximum": 12,
"minimum": 1
},
"to_period": {
"type": "string",
"pattern": "^[0-9]{4}(?:Q[1-4]|-[0-9]{2}|-12mo)$",
"maxLength": 10
},
"from_period": {
"type": "string",
"pattern": "^[0-9]{4}(?:Q[1-4]|-[0-9]{2}|-12mo)$",
"maxLength": 10
},
"property_type": {
"type": "string",
"maxLength": 60
}
},
"additionalProperties": false
}Get one marketable public property by public numeric id or slug.
| Argument | Type | Description |
|---|---|---|
| id | integer | |
| slug | string |
{
"type": "object",
"oneOf": [
{
"required": [
"id"
]
},
{
"required": [
"slug"
]
}
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"slug": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
},
"additionalProperties": false
}Search explicitly public/both, enabled canonical area guides. No coordinates or private knowledge are returned.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| query | string | |
| per_page | integer | |
| province | string |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 1000,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 120
},
"per_page": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
},
"province": {
"type": "string",
"maxLength": 80
}
},
"additionalProperties": false
}List areas represented by eligible public properties with aggregate counts.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| query | string | |
| per_page | integer |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 100,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 100
},
"per_page": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}List published, verified brokerage directory profiles with public aggregate counts only.
| Argument | Type | Description |
|---|---|---|
| area | string | |
| page | integer | |
| query | string | |
| per_page | integer |
{
"type": "object",
"properties": {
"area": {
"type": "string",
"maxLength": 120
},
"page": {
"type": "integer",
"default": 1,
"maximum": 1000,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 120
},
"per_page": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
}
},
"additionalProperties": false
}Search active public NLS agent profiles by public name/brokerage and aggregate public inventory area/specialty.
| Argument | Type | Description |
|---|---|---|
| area | string | |
| page | integer | |
| query | string | |
| per_page | integer | |
| brokerage | string | |
| specialty | string |
{
"type": "object",
"properties": {
"area": {
"type": "string",
"maxLength": 120
},
"page": {
"type": "integer",
"default": 1,
"maximum": 1000,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 100
},
"per_page": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
},
"brokerage": {
"type": "string",
"maxLength": 120
},
"specialty": {
"type": "string",
"maxLength": 60
}
},
"additionalProperties": false
}Search active published buyer requirements without buyer/agent identity, contacts, private criteria, CRM fields or match internals.
| Argument | Type | Description |
|---|---|---|
| area | string | |
| beds | integer | |
| page | integer | |
| baths | integer | |
| status | string | |
| per_page | integer | |
| max_budget | integer | |
| min_budget | integer | |
| property_type | string |
{
"type": "object",
"properties": {
"area": {
"type": "string",
"maxLength": 120
},
"beds": {
"type": "integer",
"maximum": 30,
"minimum": 0
},
"page": {
"type": "integer",
"default": 1,
"maximum": 1000,
"minimum": 1
},
"baths": {
"type": "integer",
"maximum": 30,
"minimum": 0
},
"status": {
"enum": [
"active"
],
"type": "string",
"default": "active"
},
"per_page": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
},
"max_budget": {
"type": "integer",
"maximum": 100000000,
"minimum": 0
},
"min_budget": {
"type": "integer",
"maximum": 100000000,
"minimum": 0
},
"property_type": {
"type": "string",
"maxLength": 60
}
},
"additionalProperties": false
}Search property FOR SALE on The NLS, the MLS for Spain (Costa del Sol, Costa Blanca, Mallorca). Pass the buyer's brief as `query` in plain English or Spanish, e.g. "3 bed villa with sea views in Marbella under 2m" or "ático con piscina en Estepona hasta 600.000"; it is turned into filters and the filters used are returned in `interpreted`. You may also set the structured fields directly; they override anything read from `query`. Always give the user each property's `url` (its page on thenls.com) and, when useful, `browse_url` for more results. Sales only; no rentals. Never returns private listings, contacts, owner data, notes, street addresses or coordinates.
| Argument | Type | Description |
|---|---|---|
| area | string | Town or district, e.g. Marbella, Estepona, Benahavís, Nueva Andalucía, Puerto Banús, Altea, Palma. |
| beds | integer | Minimum bedrooms. |
| page | integer | |
| sort | string | |
| type | string | apartment, villa, penthouse, townhouse, house, plot, duplex or finca. |
| query | string | Plain-language brief or keywords (English or Spanish), e.g. "3 bed villa with sea views in Marbella under 2m". |
| features | array | Must-have features, e.g. "sea views", "private pool", "close to golf", "close to sea", "gated community", "garden", "lift". |
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 13, 2026.
| per_page | integer |
| max_price | integer | Maximum asking price in euros. |
| min_price | integer | Minimum asking price in euros. |
{
"type": "object",
"properties": {
"area": {
"type": "string",
"maxLength": 100,
"description": "Town or district, e.g. Marbella, Estepona, Benahavís, Nueva Andalucía, Puerto Banús, Altea, Palma."
},
"beds": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "Minimum bedrooms."
},
"page": {
"type": "integer",
"default": 1,
"maximum": 1000,
"minimum": 1
},
"sort": {
"enum": [
"newest",
"price_asc",
"price_desc"
],
"type": "string",
"default": "newest"
},
"type": {
"type": "string",
"maxLength": 60,
"description": "apartment, villa, penthouse, townhouse, house, plot, duplex or finca."
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Plain-language brief or keywords (English or Spanish), e.g. \"3 bed villa with sea views in Marbella under 2m\"."
},
"features": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 8,
"description": "Must-have features, e.g. \"sea views\", \"private pool\", \"close to golf\", \"close to sea\", \"gated community\", \"garden\", \"lift\"."
},
"per_page": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
},
"max_price": {
"type": "integer",
"maximum": 100000000,
"minimum": 0,
"description": "Maximum asking price in euros."
},
"min_price": {
"type": "integer",
"maximum": 100000000,
"minimum": 0,
"description": "Minimum asking price in euros."
}
},
"additionalProperties": false
}