The Happy Hamper

Laundry pickup and delivery in St George, Utah: check an address, book and manage pickups.

我该使用它吗

质量与安全性

A
描述质量
99%
模式完整度
74%
命名质量
95%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~3,896token 数(工具定义)
~1.4 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 3.04%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "laundry": {
      "url": "https://www.thehappyhamper.com/mcp"
    }
  }
}

远程端点

https://www.thehappyhamper.com/mcpstreamable-http

它能做什么

工具清单

工具(19)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢get_service_info

The areas we pick up in, the current prices (in cents, before tax) and the subscriber discount, and the first day a pickup can be booked.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢check_address(line1, city, state, postalCode)

Whether we pick up at an address, and if we do, its pickup options: each day and how often (every week or every other week), the first pickup, when it comes back, and the prices with any subscriber discount.

输入模式

{
  "type": "object",
  "properties": {
    "line1": {
      "type": "string",
      "description": "Street address, e.g. 123 Main St"
    },
    "city": {
      "type": "string"
    },
    "state": {
      "type": "string",
      "description": "e.g. UT"
    },
    "postalCode": {
      "type": "string",
      "description": "ZIP code"
    }
  },
  "required": [
    "line1",
    "city",
    "state",
    "postalCode"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
⚪join_waitlist(email, line1, city, state, postalCode)

Leave an email for an address we don't pick up at yet; we email them when we do.

输入模式

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "line1": {
      "type": "string",
      "description": "Street address, e.g. 123 Main St"
    },
    "city": {
      "type": "string"
    },
    "state": {
      "type": "string",
      "description": "e.g. UT"
    },
    "postalCode": {
      "type": "string",
      "description": "ZIP code"
    }
  },
  "required": [
    "email",
    "line1",
    "city",
    "state",
    "postalCode"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_account

The customer's profile, addresses (with their ids), Laundry preferences, whether a card is saved, subscriptions and one-time bookings, and upcoming pickups. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡update_profile(name, phone)

Change the customer's name or phone number. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "phone": {
      "description": "A US phone number",
      "type": "string",
      "maxLength": 40
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡add_address(line1, city, state, postalCode, line2, ...)

Save a pickup or dropoff address. The reply's serviceZoneId is null when we don't pick up there. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "line1": {
      "type": "string",
      "description": "Street address, e.g. 123 Main St"
    },
    "city": {
      "type": "string"
    },
    "state": {
      "type": "string",
      "description": "e.g. UT"
    },
    "postalCode": {
      "type": "string",
      "description": "ZIP code"
    },
    "line2": {
      "description": "Apartment or unit",
      "type": "string",
      "maxLength": 200
    },
    "label": {
      "description": "e.g. \"Home\"",
      "type": "string",
      "maxLength": 120
    },
    "note": {
      "description": "Address notes: a gate code, where the bags will be, where to leave the clean laundry",
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "line1",
    "city",
    "state",
    "postalCode"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡update_address(addressId, label, note, line1, line2, ...)

Change an address's label or Address notes, or its street (only until a pickup has been booked there). Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "addressId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "label": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 120
        },
        {
          "type": "null"
        }
      ]
    },
    "note": {
      "description": "Address notes",
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "line1": {
      "type": "string"
    },
    "line2": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "city": {
      "type": "string"
    },
    "state": {
      "type": "string"
    },
    "postalCode": {
      "type": "string"
    }
  },
  "required": [
    "addressId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡set_laundry_preferences(detergent, scent)

The detergent and scent every load is washed with, unless a subscription or pickup says otherwise. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "detergent": {
      "type": "string",
      "enum": [
        "regular",
        "athletic",
        "free_clear"
      ],
      "description": "free_clear is fragrance-free, and takes no scent"
    },
    "scent": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "fresh_linen",
            "island_breeze",
            "amberwood",
            "warm_vanilla"
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "null = unscented"
    }
  },
  "required": [
    "detergent",
    "scent"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_pickup_options(addressId)

The subscriptions the customer can start at one of their addresses: each option's serviceZoneScheduleId, day, how often, first pickup (nextDate), when it comes back (backDate), and prices with their discount. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "addressId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "addressId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢quote_one_time_pickup(addressId, date)

What a one-time pickup at one of their addresses would cost on a date, whether that date can be booked, and when it would come back. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "addressId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "date": {
      "type": "string",
      "format": "date",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      "description": "YYYY-MM-DD"
    }
  },
  "required": [
    "addressId",
    "date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢add_card

A link where the customer adds their card on our site; booking needs one. You can't take card details yourself. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢start_subscription(addressId, dropoffAddressId, serviceZoneScheduleId, bags, bagCount, ...)

Regular pickups on an option from get_pickup_options. Get the customer's go-ahead on the day and price first. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "addressId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Pickup address"
    },
    "dropoffAddressId": {
      "description": "Where it comes back; the pickup address if left out",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "serviceZoneScheduleId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "bags": {
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        }
      ],
      "description": "Bags each pickup is booked with: 1 or 2 (the 1-bag or 2-bag price)"
    },
    "bagCount": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "Bags every pickup has, extra ones included (extras cost more)"
    },
    "discountCode": {
      "type": "string",
      "maxLength": 30
    }
  },
  "required": [
    "addressId",
    "serviceZoneScheduleId",
    "bags"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢book_one_time_pickup(addressId, dropoffAddressId, date, bags, express, ...)

One pickup on a date (check it with quote_one_time_pickup first). Get the customer's go-ahead on the price first. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "addressId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Pickup address"
    },
    "dropoffAddressId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "date": {
      "type": "string",
      "format": "date",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      "description": "YYYY-MM-DD"
    },
    "bags": {
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        }
      ],
      "description": "Bags each pickup is booked with: 1 or 2 (the 1-bag or 2-bag price)"
    },
    "express": {
      "description": "24-hour turnaround, for a fee",
      "type": "boolean"
    },
    "discountCode": {
      "type": "string",
      "maxLength": 30
    }
  },
  "required": [
    "addressId",
    "date",
    "bags"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡change_subscription(subscriptionId, serviceZoneScheduleId, addressId, dropoffAddressId, bags)

Moves a subscription to another option, address or number of bags: it starts again, with its pickups booked right away, each at the price for its date. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "subscriptionId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "serviceZoneScheduleId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "addressId": {
      "description": "New pickup address",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "dropoffAddressId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "bags": {
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        }
      ],
      "description": "Bags each pickup is booked with: 1 or 2 (the 1-bag or 2-bag price)"
    }
  },
  "required": [
    "subscriptionId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴update_subscription(subscriptionId, action, pausedUntil, cancelReason, bagCount, ...)

Pause (until a date, or until resumed), resume or cancel a subscription, or change its bag count, Job notes, or detergent and scent. Canceling also cancels its upcoming pickups. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "subscriptionId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "action": {
      "type": "string",
      "enum": [
        "pause",
        "resume",
        "cancel"
      ]
    },
    "pausedUntil": {
      "description": "With pause: pickups start again on this date (YYYY-MM-DD)",
      "type": "string",
      "format": "date",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "cancelReason": {
      "type": "string",
      "maxLength": 500
    },
    "bagCount": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "Bags every pickup has, extra ones included (extras cost more)"
    },
    "jobNotes": {
      "description": "Job notes for every pickup; blank clears them",
      "anyOf": [
        {
          "type": "string",
          "maxLength": 280
        },
        {
          "type": "null"
        }
      ]
    },
    "wash": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "detergent": {
              "type": "string",
              "enum": [
                "regular",
                "athletic",
                "free_clear"
              ],
              "description": "free_clear is fragrance-free, and takes no scent"
            },
            "scent": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "fresh_linen",
                    "island_breeze",
                    "amberwood",
                    "warm_vanilla"
                  ]
                },
                {
                  "type": "null"
                }
              ],
              "description": "null = unscented"
            }
          },
          "required": [
            "detergent",
            "scent"
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Detergent and scent; null goes back to their Laundry preferences"
    }
  },
  "required": [
    "subscriptionId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡update_pickup(pickupId, bagCount, jobNotes, express, wash)

Change one upcoming pickup before we collect it: its bag count, Job notes, 24-hour turnaround, or detergent and scent. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "pickupId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "bagCount": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "Bags every pickup has, extra ones included (extras cost more)"
    },
    "jobNotes": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 280
        },
        {
          "type": "null"
        }
      ]
    },
    "express": {
      "description": "24-hour turnaround, for a fee",
      "type": "boolean"
    },
    "wash": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "detergent": {
              "type": "string",
              "enum": [
                "regular",
                "athletic",
                "free_clear"
              ],
              "description": "free_clear is fragrance-free, and takes no scent"
            },
            "scent": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "fresh_linen",
                    "island_breeze",
                    "amberwood",
                    "warm_vanilla"
                  ]
                },
                {
                  "type": "null"
                }
              ],
              "description": "null = unscented"
            }
          },
          "required": [
            "detergent",
            "scent"
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Detergent and scent; null goes back to their Laundry preferences"
    }
  },
  "required": [
    "pickupId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴cancel_pickup(pickupId)

Cancel one upcoming pickup (a subscription carries on). Before 8:00 AM on the day, nothing is charged. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "pickupId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "pickupId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
⚪uncancel_pickup(pickupId)

Bring back a pickup canceled by mistake, as it was (until 1:00 AM on its day). Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {
    "pickupId": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "pickupId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_past_pickups

The customer's last 20 finished pickups, newest first. Needs the customer's Happy Hamper login.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本19 个工具