Skip to main content
Glama

PropertyList: Spanish Property MLS

Create listing draft

create_listing

Start a new property listing in YOUR agency's CRM from a description. Use when the agent is describing a property they have taken on and wants it in the system.

Creates a DRAFT. It is never published and never appears on the portal from here: the agent adds photographs and the energy rating in the CRM and publishes it themselves. The response includes a direct link to the draft.

Location is resolved against the real area tree, so a town, suburb or urbanisation name is enough. Requires a linked PropertyList account (or an agency API key).

Commercial premises take a commercial property_type (office, shop, retail, bar, restaurant, warehouse, garage, storage-room, building, commercial-land...), no bedrooms, and their own facts: usable area, the activity licence, a sale's tenure (freehold, or traspaso: the lease and the business taken over, with the rent and years left on the lease), a letting's guarantee, minimum term and VAT. They are checked as the CRM checks them.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
floorNoThe floor a flat or a unit (office, shop, garage, storage room) is on; 0 is the ground floor.
priceNoAsking price in euros, or monthly rent for a rental.
tenureNoCommercial sales only: freehold, or traspaso (the lease and the business are taken over).
bedroomsNo
headlineNoShort headline for the listing. Optional.
languageNoLanguage the description is written in. Defaults to the agency language.
locationNoTown, suburb or urbanisation, e.g. "Nueva Andalucia" or "Menara Beach".
plot_sqmNoPlot size in square metres.
bathroomsNo
build_sqmNoBuilt area in square metres.
frontage_mNoCommercial only: street frontage in metres.
usable_sqmNoCommercial only: usable floor area in square metres.
current_useNoCommercial only: what the premises are used as now.
descriptionYesThe property description, in the language the agent wrote it.
search_typeNoWhether it is for sale or for long-term rent. Defaults to for-sale.
property_typeNoA home: apartment, villa, penthouse, townhouse, country-house or plot. Commercial premises: office, business, cafe, bar, restaurant, retail (premises, a local comercial), shop, hotel, leisure, industrial, warehouse, commercial-land, garage, storage-room or building.
activity_licenceNoCommercial only: the activity licence (licencia de actividad): none, in_progress or granted.
ceiling_height_mNoCommercial only: ceiling height in metres.
lease_years_leftNoTraspaso only: years left on the lease.
licensed_activityNoCommercial only: the activity the licence is for.
rent_vat_applicableNoCommercial letting only: VAT is added to the rent.
minimum_lease_monthsNoCommercial letting only: the minimum lease term in months.
traspaso_monthly_rentNoTraspaso only: the monthly rent the buyer takes over, in euros.
extra_guarantee_monthsNoCommercial letting only: months of extra guarantee asked.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesThe draft in the CRM, where the agent finishes and publishes it.
statusYes
warningNoAdvice to pass on to the agent before they publish.
locationNoWhere the draft was filed; null when the place name matched no area.
referenceYes
next_stepsYes
property_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changed
    • addedInput schema / properties / activity_licence
      Added value: +{
      +  "description": "Commercial only: the activity licence (licencia de actividad): none, in_progress or granted.",
      +  "enum": [
      +    "none",
      +    "in_progress",
      +    "granted"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / ceiling_height_m
      Added value: +{
      +  "description": "Commercial only: ceiling height in metres.",
      +  "type": "number"
      +}
    • addedInput schema / properties / current_use
      Added value: +{
      +  "description": "Commercial only: what the premises are used as now.",
      +  "type": "string"
      +}
    • addedInput schema / properties / extra_guarantee_months
      Added value: +{
      +  "description": "Commercial letting only: months of extra guarantee asked.",
      +  "type": "integer"
      +}
    • addedInput schema / properties / floor
      Added value: +{
      +  "description": "The floor a flat or a unit (office, shop, garage, storage room) is on; 0 is the ground floor.",
      +  "type": "integer"
      +}
    • addedInput schema / properties / frontage_m
      Added value: +{
      +  "description": "Commercial only: street frontage in metres.",
      +  "type": "number"
      +}
    • addedInput schema / properties / lease_years_left
      Added value: +{
      +  "description": "Traspaso only: years left on the lease.",
      +  "type": "integer"
      +}
    • addedInput schema / properties / licensed_activity
      Added value: +{
      +  "description": "Commercial only: the activity the licence is for.",
      +  "type": "string"
      +}
    • addedInput schema / properties / minimum_lease_months
      Added value: +{
      +  "description": "Commercial letting only: the minimum lease term in months.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / property_type / description
      Previous value: -"apartment, villa, penthouse, townhouse, plot or commercial."New value: +"A home: apartment, villa, penthouse, townhouse, country-house or plot. Commercial premises: office, business, cafe, bar, restaurant, retail (premises, a local comercial), shop, hotel, leisure, industrial, warehouse, commercial-land, garage, storage-room or building."
    • addedInput schema / properties / rent_vat_applicable
      Added value: +{
      +  "description": "Commercial letting only: VAT is added to the rent.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / tenure
      Added value: +{
      +  "description": "Commercial sales only: freehold, or traspaso (the lease and the business are taken over).",
      +  "enum": [
      +    "freehold",
      +    "traspaso"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / traspaso_monthly_rent
      Added value: +{
      +  "description": "Traspaso only: the monthly rent the buyer takes over, in euros.",
      +  "type": "integer"
      +}
    • addedInput schema / properties / usable_sqm
      Added value: +{
      +  "description": "Commercial only: usable floor area in square metres.",
      +  "type": "integer"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "location": {
      +      "description": "Where the draft was filed; null when the place name matched no area.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "next_steps": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "property_id": {
      +      "type": "integer"
      +    },
      +    "reference": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "enum": [
      +        "draft_created"
      +      ],
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "The draft in the CRM, where the agent finishes and publishes it.",
      +      "type": "string"
      +    },
      +    "warning": {
      +      "description": "Advice to pass on to the agent before they publish.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "property_id",
      +    "reference",
      +    "url",
      +    "next_steps"
      +  ],
      +  "type": "object"
      +}
  3. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond annotations: discloses the output is a DRAFT, never published, never on portal, requires agent follow-up in CRM, response includes a direct link, requires linked PropertyList account or API key, and location is resolved against a real area tree. Annotations only say non-readonly, non-idempotent, non-destructive; description adds the critical publishing semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the draft-never-published constraint, a crucial disclosure. The commercial-properties paragraph is denser but earns its place given 24 params. Slightly long but well-organized into distinct concerns.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 24 params, output schema present, and the high-stakes nature of listing creation, the description covers the key gaps: draft status, account requirements, location resolution, and the commercial variant rules. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 92% so baseline is high, but description adds substantive commercial-property semantics: commercial types need no bedrooms and specific facts, tenure/traspaso explanation, and location-resolves-by-name behavior. Adds meaning beyond raw enum lists in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (create) and resource (property listing draft) with explicit scope: 'in YOUR agency's CRM'. Clearly distinguished from siblings like my_listings (read) and set_listing_status (mutate existing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering context: 'when the agent is describing a property they have taken on and wants it in the system.' Doesn't explicitly name alternatives or exclusions, but the context is unambiguous enough to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources