addrbookFor publishers
← The evidence ledger

Evidence row 567738

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint ad9418c3-db91-42e1-a735-03d9aa7c6fce
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
d744bbeb24a4de30177fc801c858de4d4d4f254dd1279f37ec36e463b4c7ee95
Leaf
0xb8b9581397244c6b142d839d8e9ac7cb84c5ffad16c8c515ad59fb5fba7ee9fb

What was observed

{
  "count": 7,
  "tools": [
    {
      "description": "Check whether a French postcode is in the service area.",
      "inputSchema": {
        "properties": {
          "postcode": {
            "description": "5-digit French postcode, e.g. 75011",
            "type": "string"
          }
        },
        "required": [
          "postcode"
        ],
        "type": "object"
      },
      "name": "check_area"
    },
    {
      "description": "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 and extras_offered = true (ask about extras first).",
      "inputSchema": {
        "properties": {
          "address": {
            "properties": {
              "apartment": {
                "description": "Floor, door code, apartment",
                "type": "string"
              },
              "city": {
                "type": "string"
              },
              "postcode": {
                "type": "string"
              },
              "street": {
                "type": "string"
              }
            },
            "required": [
              "street",
              "postcode",
              "city"
            ],
            "type": "object"
          },
          "agent_name": {
            "description": "Name of the assistant/app making the booking",
            "type": "string"
          },
          "arrival_window": {
            "description": "Start of the 2-hour arrival window from get_time_slots, e.g. \"14:00\"",
            "type": "string"
          },
          "bathrooms": {
            "default": 1,
            "maximum": 7,
            "minimum": 1,
            "type": "integer"
          },
          "bedrooms": {
            "description": "Number of bedrooms (studio = 1)",
            "maximum": 7,
            "minimum": 1,
            "type": "integer"
          },
          "condition": {
            "description": "ASK the customer, never assume: when the home last had a thorough (professional) clean. recent (<1 month), one_to_six_months, over_six_months (or never). First cleanings are rarely recent.",
            "enum": [
              "recent",
              "one_to_six_months",
              "over_six_months"
            ],
            "type": "string"
          },
          "customer": {
            "properties": {
              "email": {
                "format": "email",
                "type": "string"
              },
              "first_name": {
                "type": "string"
              },
              "last_name": {
                "type": "string"
              },
              "phone": {
                "description": "Mobile, with country code if not French",
                "type": "string"
              }
            },
            "required": [
              "first_name",
              "last_name",
              "email",
              "phone"
            ],
            "type": "object"
          },
          "customer_confirmed": {
            "description": "true = the customer saw the price and details and asked to book",
            "type": "boolean"
          },
          "date": {
            "description": "YYYY-MM-DD (today adds a same-day surcharge)",
            "format": "date",
            "type": "string"
          },
          "extras": {
            "description": "Extras from get_services. Ask the customer before quoting a first cleaning: most add at least one (inside the oven id 11, inside the fridge id 10, windows id 15 with quantity, changing sheets id 12; move-out: Fin de bail id 18). e.g. [{\"id\":11},{\"id\":15,\"quantity\":4}]",
            "items": {
              "properties": {
                "id": {
                  "type": "integer"
                },
                "quantity": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "extras_offered": {
            "description": "true = you asked the customer which extras they want (oven, fridge, windows, sheets...), even if they chose none",
            "type": "boolean"
          },
          "frequency": {
            "default": "once",
            "description": "once, weekly, biweekly (every 2 weeks) or monthly — recurring plans get a discount",
            "enum": [
              "once",
              "biweekly",
              "weekly",
              "monthly"
            ],
            "type": "string"
          },
          "furnished_occupied": {
            "default": false,
            "description": "Home is furnished and lived in",
            "type": "boolean"
          },
          "high_ceilings": {
            "default": false,
            "description": "Haussmann building / ceilings over 3 m",
            "type": "boolean"
          },
          "notes": {
            "description": "Access, pets, priorities...",
            "type": "string"
          },
          "surface_m2": {
            "description": "Living area in m² (optional, improves accuracy)",
            "type": "integer"
          }
        },
        "required": [
          "bedrooms",
          "condition",
          "date",
          "arrival_window",
          "customer",
          "address",
          "customer_confirmed",
          "extras_offered"
        ],
        "type": "object"
      },
      "name": "create_booking"
    },
    {
      "description": "Price range for a post-construction cleaning (nettoyage fin de travaux / fin de chantier) in Paris/Île-de-France, same calculation as the estimator on menageparfait.fr: HT and TTC (VAT 20%).",
      "inputSchema": {
        "properties": {
          "condition": {
            "default": "standard",
            "description": "light = lightly soiled; standard = renovation; heavy = heavy works or new build",
            "enum": [
              "light",
              "standard",
              "heavy"
            ],
            "type": "string"
          },
          "floor_stripping": {
            "default": false,
            "description": "Cement film / floor stripping",
            "type": "boolean"
          },
          "premises": {
            "default": "apartment",
            "enum": [
              "apartment",
              "house",
              "office",
              "shop"
            ],
            "type": "string"
          },
          "rubble_removal": {
            "default": false,
            "description": "Light rubble removal",
            "type": "boolean"
          },
          "surface_m2": {
            "description": "Floor area in m²",
            "minimum": 1,
            "type": "number"
          },
          "urgent": {
            "default": false,
            "description": "Within 48 h, at a weekend or outside 7:00–20:00",
            "type": "boolean"
          },
          "windows": {
            "default": false,
            "description": "Windows inside and out",
            "type": "boolean"
          }
        },
        "required": [
          "surface_m2"
        ],
        "type": "object"
      },
      "name": "get_post_construction_estimate"
    },
    {
      "description": "Exact price (same calculation as menageparfait.fr): TTC (show this to the customer), HT, VAT, and the cost after the 50% tax credit if the customer is eligible.",
      "inputSchema": {
        "properties": {
          "bathrooms": {
            "default": 1,
            "maximum": 7,
            "minimum": 1,
            "type": "integer"
          },
          "bedrooms": {
            "description": "Number of bedrooms (studio = 1)",
            "maximum": 7,
            "minimum": 1,
            "type": "integer"
          },
          "condition": {
            "description": "ASK the customer, never assume: when the home last had a thorough (professional) clean. recent (<1 month), one_to_six_months, over_six_months (or never). First cleanings are rarely recent.",
            "enum": [
              "recent",
              "one_to_six_months",
              "over_six_months"
            ],
            "type": "string"
          },
          "date": {
            "description": "YYYY-MM-DD (today adds a same-day surcharge)",
            "format": "date",
            "type": "string"
          },
          "extras": {
            "description": "Extras from get_services. Ask the customer before quoting a first cleaning: most add at least one (inside the oven id 11, inside the fridge id 10, windows id 15 with quantity, changing sheets id 12; move-out: Fin de bail id 18). e.g. [{\"id\":11},{\"id\":15,\"quantity\":4}]",
            "items": {
              "properties": {
                "id": {
                  "type": "integer"
                },
                "quantity": {
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "frequency": {
            "default": "once",
            "description": "once, weekly, biweekly (every 2 weeks) or monthly — recurring plans get a discount",
            "enum": [
              "once",
              "biweekly",
              "weekly",
              "monthly"
            ],
            "type": "string"
          },
          "furnished_occupied": {
            "default": false,
            "description": "Home is furnished and lived in",
            "type": "boolean"
          },
          "high_ceilings": {
            "default": false,
            "description": "Haussmann building / ceilings over 3 m",
            "type": "boolean"
          },
          "surface_m2": {
            "description": "Living area in m² (optional, improves accuracy)",
            "type": "integer"
          }
        },
        "required": [
          "bedrooms",
          "condition"
        ],
        "type": "object"
      },
      "name": "get_quote"
    },
    {
      "description": "Ménage Parfait home-cleaning offer in Paris/Île-de-France: price grid (TTC and HT), extras with ids, frequency discounts, area, payment, and when the 50% tax credit may apply.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "get_services"
    },
    {
      "description": "Dates and 2-hour arrival windows that can be requested (up to 90 days ahead). Windows start between 10:00 and 16:00; no evening bookings.",
      "inputSchema": {
        "properties": {
          "days": {
            "default": 14,
            "maximum": 31,
            "minimum": 1,
            "type": "integer"
          },
          "from_date": {
            "format": "date",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_time_slots"
    },
    {
      "description": "Sends a quote request to Ménage Parfait for office cleaning or post-construction cleaning (reply within 1 business day).",
      "inputSchema": {
        "properties": {
          "address": {
            "type": "string"
          },
          "agent_name": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "company": {
            "description": "Required for office cleaning",
            "type": "string"
          },
          "contact_name": {
            "type": "string"
          },
          "details": {
            "type": "string"
          },
          "email": {
            "format": "email",
            "type": "string"
          },
          "frequency": {
            "description": "e.g. daily, 3x/week, weekly, one-off after works",
            "type": "string"
          },
          "level": {
            "description": "For post_construction: light, standard or heavy",
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "postcode": {
            "type": "string"
          },
          "preferred_hours": {
            "description": "e.g. early morning, evening",
            "type": "string"
          },
          "service": {
            "default": "office_regular",
            "enum": [
              "office_regular",
              "post_construction",
              "other"
            ],
            "type": "string"
          },
          "start_date": {
            "type": "string"
          },
          "surface_m2": {
            "type": "integer"
          }
        },
        "required": [
          "contact_name",
          "email",
          "phone",
          "postcode"
        ],
        "type": "object"
      },
      "name": "request_office_quote"
    }
  ]
}

What the leaf hashes

{"body":"d744bbeb24a4de30177fc801c858de4d4d4f254dd1279f37ec36e463b4c7ee95","id":567738,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793138809309998,"prev":null,"subject":"ad9418c3-db91-42e1-a735-03d9aa7c6fce","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).

  1. 0xb8b8faa4a48b9f332c07526dec68ced690bc727542e910a6bb7e417b90c5eafa
  2. 0x675e83548d08121f4e84fa720e79a6f80192ebc3796cacdfcbd5fd3924f95528
  3. 0x48c3be563288adcd0af25c3e4ca4c8e0ad71b306b21ffb5cbaf06b33f728c61d
  4. 0xce5c838c4ba62c2d361d892a73f14ffc8825fa3859a8bd3b943b83d5de8a2ff6
  5. 0x149e8f6514a1b4386a21372ee27d679f143dbf9fec27bd5dfa497629034d433d
  6. 0xeb61ca59460c5c43c247abad73b6751ccbbaad063f584ffa89bfd819fdf5d2b4
  7. 0x7ce6b5a4e003b7e279b825640310f28bc2fffa8f95977dd60013c859761b63aa
  8. 0xcfd91247d6cd2b1c93e0b4f02c324f36eeef357d582b232f8fd2a44330d7df85
  9. 0x6dfb95b94a0d5110f005476530a0841121e2f1d0234cfa31c6d4f62334dfc4cb
  10. 0xfe8445b03630a5408303eb2d9bf63d1b3694705bb971e9244e680b9541511e42
  11. 0x1644f0ff5071dabfbb15c26e84d62ade02f559315ee106046fbad349cf83215e
  12. 0x159edcfdd12b3eacd95b92f307695c8c00010beadbfcbf272edb59cfef54fb40
  13. 0xa4f69e2cf941a3f318d70734b59401dd27010a6bdffb5c32a28304db650a6f0b
  14. 0xa453d1738637a5c663802d07ce095aa340c80d53a4288ae277a72e265868ce4e
  15. 0x73341bb09dd901ca47f26173883431496e3d98d6b0fb5b89f36218126d46c5d4
  16. 0xa94627de1af0e823832e05a9069b304ecccb8c0cdb8f9cfc4f2039bfb9799dc5
  17. 0xdf1105afdc109de3c09a98fc8a3864159ad964e6f49b635c105a27a1e1f14310
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON