Joomil — Swiss Classifieds MCP

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

我該用這個嗎

品質與安全性

A
說明品質
96%
結構描述完整度
82%
命名品質
96%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~2,386Token(工具定義)
~4.5 KB典型回應大小
中等的注意力影響(128k 上下文的 1.86%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

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

遠端端點

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

它能做什麼

工具清單

工具(5)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢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.

輸入結構描述

{
  "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#"
}

輸出結構描述

{
  "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.

輸入結構描述

{
  "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#"
}

輸出結構描述

{
  "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.

輸入結構描述

{
  "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#"
}

輸出結構描述

{
  "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.

輸入結構描述

{
  "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#"
}

輸出結構描述

{
  "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').

輸入結構描述

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

輸出結構描述

{
  "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#"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本5 個工具
已驗證未記錄版本5 個工具