The Happy Hamper
Laundry pickup and delivery in St George, Utah: check an address, book and manage pickups.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"laundry": {
"url": "https://www.thehappyhamper.com/mcp"
}
}
}Remote-Endpunkte
https://www.thehappyhamper.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis