Joomil — Swiss Classifieds MCP

Search Swiss classifieds on Joomil.ch — top marketplace in French-speaking Switzerland since 2007.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
96%
Integridad del esquema
82%
Calidad de los nombres
96%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,386Tokens (definiciones de herramientas)
~4.5 KBTamaño de respuesta típico
Impacto moderado en la atención (1.86% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "joomil": {
      "url": "https://joomil-mcp.snowy-surf-deec.workers.dev/mcp"
    }
  }
}

Puntos de conexión remotos

https://joomil-mcp.snowy-surf-deec.workers.dev/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (5)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢suggest_filters(query)

Infer search_classifieds filters from a natural-language query. Use this before search_classifieds when the user mentions a category, location, canton or price in free text. Returns a ready-to-use filters object, a category confidence score and warnings for uncertain matches.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Natural-language search request, e.g. 'appartement 3 pièces à Sion' or 'Tesla Model 3 moins de 25000 CHF'."
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "filters": {
      "type": "object",
      "properties": {
        "q": {
          "type": [
            "string",
            "null"
          ]
        },
        "cat_id": {
          "type": [
            "number",
            "null"
          ]
        },
        "canton": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "Geneve",
                "Vaud",
                "Valais",
                "Fribourg",
                "Neuchatel",
                "Jura",
                "Bern",
                "Argovie",
                "Zurich",
                "Lucerne",
                "Bale-Ville",
                "Etranger"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "location": {
          "type": [
            "string",
            "null"
          ]
        },
        "price_min": {
          "type": [
            "number",
            "null"
          ]
        },
        "price_max": {
          "type": [
            "number",
            "null"
          ]
        },
        "sort": {
          "type": "string",
          "enum": [
            "recent",
            "price_asc",
            "price_desc",
            "views"
          ]
        },
        "limit": {
          "type": "number"
        }
      },
      "required": [
        "q",
        "cat_id",
        "canton",
        "location",
        "price_min",
        "price_max",
        "sort",
        "limit"
      ],
      "additionalProperties": false
    },
    "category": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "number"
            },
            "name": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "parent_id": {
              "type": "number"
            },
            "confidence": {
              "type": "number"
            },
            "reason": {
              "type": "string"
            }
          },
          "required": [
            "id",
            "name",
            "url",
            "parent_id",
            "confidence",
            "reason"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "confidence": {
      "type": "number"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "next_step": {
      "type": "string"
    }
  },
  "required": [
    "query",
    "filters",
    "category",
    "confidence",
    "warnings",
    "next_step"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_classifieds(q, cat_id, canton, location, price_min, ...)

Search classified ads on Joomil.ch — Switzerland's leading French-speaking classifieds marketplace (since 2007). Returns a paginated list of public listings with title, description (truncated to 300 chars), price, location, category and vendor info. All parameters are optional — call with no arguments to browse the latest listings. Use get_classified to fetch full details of a specific listing.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Full-text search query (searches title and description)"
    },
    "cat_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Category ID filter — includes subcategories automatically. Use get_categories to browse available categories."
    },
    "canton": {
      "type": "string",
      "enum": [
        "Geneve",
        "Vaud",
        "Valais",
        "Fribourg",
        "Neuchatel",
        "Jura",
        "Bern",
        "Argovie",
        "Zurich",
        "Lucerne",
        "Bale-Ville",
        "Etranger"
      ],
      "description": "Swiss canton filter — strict enum. Use get_cantons for the official list. WARNING: values are API-specific (e.g. 'Bern' not 'Berne', 'Geneve' not 'Genève'/'Geneva'). Supported: Geneve, Vaud, Valais, Fribourg, Neuchatel, Jura, Bern, Argovie, Zurich, Lucerne, Bale-Ville, Etranger."
    },
    "location": {
      "type": "string",
      "description": "City name or postal code (NPA) — partial match"
    },
    "price_min": {
      "type": "number",
      "minimum": 0,
      "description": "Minimum price in CHF (inclusive)"
    },
    "price_max": {
      "type": "number",
      "minimum": 0,
      "description": "Maximum price in CHF (inclusive)"
    },
    "sort": {
      "type": "string",
      "enum": [
        "recent",
        "price_asc",
        "price_desc",
        "views"
      ],
      "description": "Sort order: recent (newest first, default), price_asc, price_desc, views"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Results per page (1–50, default 20)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Pagination offset. Use next_offset from previous response to get next page."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "price": {
            "type": "object",
            "properties": {
              "amount": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "currency": {
                "type": "string",
                "const": "CHF"
              }
            },
            "required": [
              "amount",
              "currency"
            ],
            "additionalProperties": false
          },
          "location": {
            "type": "object",
            "properties": {
              "city": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "postal_code": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "canton": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "country": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "city",
              "postal_code",
              "canton",
              "country"
            ],
            "additionalProperties": false
          },
          "category": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "number"
                  },
                  "name": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "url"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "url": {
            "type": "string"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "has_picture": {
            "type": "boolean"
          },
          "seller": {
            "type": "object",
            "properties": {
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "certified": {
                "type": "boolean"
              }
            },
            "required": [
              "name",
              "certified"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "id",
          "title",
          "price",
          "location",
          "category",
          "url",
          "created_at",
          "has_picture",
          "seller"
        ],
        "additionalProperties": false
      }
    },
    "total": {
      "type": "number"
    },
    "limit": {
      "type": "number"
    },
    "offset": {
      "type": "number"
    },
    "has_more": {
      "type": "boolean"
    },
    "next_offset": {
      "type": [
        "number",
        "null"
      ]
    },
    "filtered_out": {
      "type": "number"
    }
  },
  "required": [
    "results",
    "total",
    "limit",
    "offset",
    "has_more",
    "next_offset",
    "filtered_out"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_classified(id)

Get full details of a single classified ad on Joomil.ch by its numeric ID. Returns complete description, all images URLs, category breadcrumb (full_path), vendor info (name, certified status, pro company), expiry date and boost level. Use search_classifieds first to find relevant listing IDs.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Numeric listing ID — visible in the URL and in search_classifieds results"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "id": {
      "type": "number"
    },
    "title": {
      "type": "string"
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "price": {
      "type": "object",
      "properties": {
        "amount": {
          "type": [
            "number",
            "null"
          ]
        },
        "currency": {
          "type": "string",
          "const": "CHF"
        }
      },
      "required": [
        "amount",
        "currency"
      ],
      "additionalProperties": false
    },
    "location": {
      "type": "object",
      "properties": {
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "postal_code": {
          "type": [
            "string",
            "null"
          ]
        },
        "canton": {
          "type": [
            "string",
            "null"
          ]
        },
        "country": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "city",
        "postal_code",
        "canton",
        "country"
      ],
      "additionalProperties": false
    },
    "category": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "number"
            },
            "name": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "path": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "id",
            "name",
            "url",
            "path"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "url": {
      "type": "string"
    },
    "created_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "has_picture": {
      "type": "boolean"
    },
    "seller": {
      "type": "object",
      "properties": {
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "certified": {
          "type": "boolean"
        },
        "type": {
          "type": "string",
          "enum": [
            "pro",
            "private"
          ]
        },
        "company": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "name",
        "certified",
        "type",
        "company"
      ],
      "additionalProperties": false
    },
    "images": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "boost": {
      "type": [
        "number",
        "null"
      ]
    }
  },
  "required": [
    "id",
    "title",
    "description",
    "price",
    "location",
    "category",
    "url",
    "created_at",
    "has_picture",
    "seller",
    "images",
    "expires_at",
    "boost"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_categories(parent_id)

List active categories of the Joomil.ch marketplace. Returns a flat list with parent_id for hierarchy reconstruction. Omit parent_id for all categories, use parent_id=0 for root categories only, or pass a specific ID to get direct children of that category.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "parent_id": {
      "type": "integer",
      "minimum": 0,
      "description": "Filter to direct children of this category ID. Omit for all categories. Use 0 for root categories only."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "parent_id": {
            "type": "number"
          },
          "ad_count": {
            "type": "number"
          },
          "allow_ads": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "url",
          "parent_id"
        ],
        "additionalProperties": true
      }
    },
    "total": {
      "type": "number"
    }
  },
  "required": [
    "categories",
    "total"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_cantons

List the Swiss cantons supported by Joomil's `canton` filter. Returns the exact `name` value to pass to search_classifieds, plus a readable French label. Call this before filtering by canton — the API values are non-obvious (e.g. 'Bern' not 'Berne', 'Geneve' not 'Genève' or 'Geneva').

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "cantons": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "label_fr": {
            "type": "string"
          },
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "region": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "label_fr",
          "code",
          "region"
        ],
        "additionalProperties": false
      }
    },
    "total": {
      "type": "number"
    }
  },
  "required": [
    "cantons",
    "total"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada5 herramientas
verificadoversión no registrada5 herramientas