Ménage Parfait

Quote and book home cleaning in Paris & Île-de-France; request office-cleaning quotes.

Should I use this

Quality & Safety

A
Description quality
87%
Schema completeness
79%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'get_quote' description lacks action verbin get_quote
  • LOWTool 'get_time_slots' description lacks action verbin get_time_slots

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,567Tokens (tool definitions)
~2.2 KBTypical response size
Moderate attention impact (1.22% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "booking": {
      "url": "https://menageparfait.fr/mcp"
    }
  }
}

Remote endpoints

https://menageparfait.fr/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_services

Ménage Parfait home-cleaning offer in Paris/Île-de-France: price grid (HT), extras with ids, frequency discounts, area, payment and 50% tax-credit rules.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢check_area(postcode)

Check whether a French postcode is in the service area.

Input Schema

{
  "type": "object",
  "properties": {
    "postcode": {
      "type": "string",
      "description": "5-digit French postcode, e.g. 75011"
    }
  },
  "required": [
    "postcode"
  ]
}
🟢get_quote(bedrooms, bathrooms, surface_m2, condition, high_ceilings, ...)

Exact price (same calculation as menageparfait.fr): HT, VAT, TTC and cost after the 50% tax credit.

Input Schema

{
  "type": "object",
  "properties": {
    "bedrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 7,
      "description": "Number of bedrooms (studio = 1)"
    },
    "bathrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 7,
      "default": 1
    },
    "surface_m2": {
      "type": "integer",
      "description": "Living area in m² (optional, improves accuracy)"
    },
    "condition": {
      "type": "string",
      "enum": [
        "recent",
        "one_to_six_months",
        "over_six_months"
      ],
      "default": "recent",
      "description": "When the home last had a thorough clean: recent (<1 month), one_to_six_months, over_six_months (or never)"
    },
    "high_ceilings": {
      "type": "boolean",
      "default": false,
      "description": "Haussmann building / ceilings over 3 m"
    },
    "furnished_occupied": {
      "type": "boolean",
      "default": false,
      "description": "Home is furnished and lived in"
    },
    "frequency": {
      "type": "string",
      "enum": [
        "once",
        "biweekly",
        "weekly",
        "monthly"
      ],
      "default": "once",
      "description": "once, weekly, biweekly (every 2 weeks) or monthly — recurring plans get a discount"
    },
    "extras": {
      "type": "array",
      "description": "Optional extras from get_services, e.g. [{\"id\":11},{\"id\":15,\"quantity\":4}]",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "quantity": {
            "type": "integer",
            "minimum": 1
          }
        },
        "required": [
          "id"
        ]
      }
    },
    "date": {
      "type": "string",
      "format": "date",
      "description": "YYYY-MM-DD (today adds a same-day surcharge)"
    }
  },
  "required": [
    "bedrooms"
  ]
}
🟢get_time_slots(from_date, days)

Dates and 2-hour arrival windows that can be requested (up to 90 days ahead).

Input Schema

{
  "type": "object",
  "properties": {
    "from_date": {
      "type": "string",
      "format": "date"
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 31,
      "default": 14
    }
  }
}
🟡create_booking(bedrooms, bathrooms, surface_m2, condition, high_ceilings, ...)

Creates a home-cleaning booking for the price, date and arrival window the customer agreed to, and returns a secure Stripe payment_url. The booking is confirmed when the customer opens payment_url and saves a card (charged after the cleaning). The link is also emailed to the customer. Requires customer_confirmed = true.

Input Schema

{
  "type": "object",
  "properties": {
    "bedrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 7,
      "description": "Number of bedrooms (studio = 1)"
    },
    "bathrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 7,
      "default": 1
    },
    "surface_m2": {
      "type": "integer",
      "description": "Living area in m² (optional, improves accuracy)"
    },
    "condition": {
      "type": "string",
      "enum": [
        "recent",
        "one_to_six_months",
        "over_six_months"
      ],
      "default": "recent",
      "description": "When the home last had a thorough clean: recent (<1 month), one_to_six_months, over_six_months (or never)"
    },
    "high_ceilings": {
      "type": "boolean",
      "default": false,
      "description": "Haussmann building / ceilings over 3 m"
    },
    "furnished_occupied": {
      "type": "boolean",
      "default": false,
      "description": "Home is furnished and lived in"
    },
    "frequency": {
      "type": "string",
      "enum": [
        "once",
        "biweekly",
        "weekly",
        "monthly"
      ],
      "default": "once",
      "description": "once, weekly, biweekly (every 2 weeks) or monthly — recurring plans get a discount"
    },
    "extras": {
      "type": "array",
      "description": "Optional extras from get_services, e.g. [{\"id\":11},{\"id\":15,\"quantity\":4}]",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "quantity": {
            "type": "integer",
            "minimum": 1
          }
        },
        "required": [
          "id"
        ]
      }
    },
    "date": {
      "type": "string",
      "format": "date",
      "description": "YYYY-MM-DD (today adds a same-day surcharge)"
    },
    "arrival_window": {
      "type": "string",
      "description": "Start of the 2-hour arrival window from get_time_slots, e.g. \"14:00\""
    },
    "customer": {
      "type": "object",
      "properties": {
        "first_name": {
          "type": "string"
        },
        "last_name": {
          "type": "string"
        },
        "email": {
          "type": "string",
          "format": "email"
        },
        "phone": {
          "type": "string",
          "description": "Mobile, with country code if not French"
        }
      },
      "required": [
        "first_name",
        "last_name",
        "email",
        "phone"
      ]
    },
    "address": {
      "type": "object",
      "properties": {
        "street": {
          "type": "string"
        },
        "apartment": {
          "type": "string",
          "description": "Floor, door code, apartment"
        },
        "postcode": {
          "type": "string"
        },
        "city": {
          "type": "string"
        }
      },
      "required": [
        "street",
        "postcode",
        "city"
      ]
    },
    "notes": {
      "type": "string",
      "description": "Access, pets, priorities..."
    },
    "customer_confirmed": {
      "type": "boolean",
      "description": "true = the customer saw the price and details and asked to book"
    },
    "agent_name": {
      "type": "string",
      "description": "Name of the assistant/app making the booking"
    }
  },
  "required": [
    "bedrooms",
    "date",
    "arrival_window",
    "customer",
    "address",
    "customer_confirmed"
  ]
}
⚪request_office_quote(company, contact_name, email, phone, address, ...)

Sends an office-cleaning quote request to Ménage Parfait (reply within 1 business day).

Input Schema

{
  "type": "object",
  "properties": {
    "company": {
      "type": "string"
    },
    "contact_name": {
      "type": "string"
    },
    "email": {
      "type": "string",
      "format": "email"
    },
    "phone": {
      "type": "string"
    },
    "address": {
      "type": "string"
    },
    "postcode": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "surface_m2": {
      "type": "integer"
    },
    "frequency": {
      "type": "string",
      "description": "e.g. daily, 3x/week, weekly, one-off after works"
    },
    "preferred_hours": {
      "type": "string",
      "description": "e.g. early morning, evening"
    },
    "start_date": {
      "type": "string"
    },
    "details": {
      "type": "string"
    },
    "agent_name": {
      "type": "string"
    }
  },
  "required": [
    "company",
    "contact_name",
    "email",
    "phone",
    "postcode"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools