Book ShesMyDogLady
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Book with ShesMyDogLady: services, prices and open times. No key needed.
| Author | com.enhancedint |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 597 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Book ShesMyDogLady": {
"url": "https://book.enhancedint.com/shesmydoglady/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (6)
get_businessread-onlyRead the business card: what the business is, the area it serves, its services (which are booked here, how long each visit holds, and what to do about the rest), what a booking needs (the customer's details, the dog's address and what to ask about the dogs, in booking.petCare), that every booking is a request the business approves, the limits and the cancel rule. Call it first.
Hints: read-only yes · destructive no · idempotent yes · open-world no
find_timesread-onlyFind the start times that are open for one visit (a service from the card whose bookable is true), between two dates (at most 14 days). Each time's end includes the minutes the business takes to settle the dog in. Pass `windows` (the customer's free time from their calendar) to get only the starts that fit both calendars. Returns ISO 8601 times with offsets. Only open times are ever shown.
Parameters:
items(required) — array — Exactly one visit. Each visit is booked on its own; add-ons the service takes go in answers.addons.from(required) — string — First day, YYYY-MM-DD, in the business's time zone (the card names it). Not in the past.to(required) — string — Last day, YYYY-MM-DD. At most 14 days from `from`, counting both, and at most 60 days from today.windows— array — The customer's free time, as intervals with offsets. When given, only starts whose whole visit (its length plus its settling time) fits inside one window come back. Leave out to see every open start.
Hints: read-only yes · destructive no · idempotent yes · open-world no
check_addressread-onlyCheck the dog's address (its home, or where the dog is picked up) before booking. Send it as one line, as fields, or as a place_id saved from an earlier check. The answer says whether Google confirmed it (`verdict`), the address to book with (send it as answers.address), its place_id (save both for this customer), and whether it is inside the area the business serves. Book when `bookable` is true; when the verdict is `confirm`, read the corrected address to the customer first. `next` says what to do otherwise.
Parameters:
address(required)
Hints: read-only yes · destructive no · idempotent yes · open-world yes
bookBook one visit for the customer, as a request the business approves (or, for a business that takes its bookings by email, confirms with the customer itself); the answer says what happens next and gives a `manage.token` to check or cancel it later. The customer is emailed. A new customer books the Meet & Greet first. Ask the customer about the dogs and answer from what they said (booking.petCare on the card): never guess. Confirm the visit, the time and the customer's details with the customer before calling it. `idempotency_key` is required: choose a new random one for each booking (a UUID without hyphens) and send the same one to retry after a timeout.
Parameters:
items(required) — array — Exactly one visit. Each visit is booked on its own; add-ons the service takes go in answers.addons.start(required) — string — A start time from `times`, ISO 8601 with an offset, on a whole minute: seconds, when written, are 00 ("2026-10-12T10:00:00-07:00" or "2026-10-12T17:00Z"). It is checked again, and refused with `time_not_open` if it is no longer open.customer(required) — object — The person the booking is for. They are emailed that the request was received, and again when the business answers.answers(required) — object — What the customer told you about the visit and the dogs. The card's booking.petCare.answers says each key's exact format. Never guess: a question nobody asked is null.agent(required) — object — Who is booking, so the business sees that an agent made the booking and which one.idempotency_key(required) — string — Required. A key you choose, new for each booking: 32 to 255 letters, digits, dashes or underscores, and RANDOM, never a counter, a word or a pattern (a UUID without hyphens is right; a key with fewer than 8 distinct characters is refused). Calling book again with the same key and customer email answers the first booking again, with the same manage token, instead of making a second one: use it to retry safely after a timeout.
Hints: read-only no · destructive no · idempotent yes · open-world yes
get_bookingread-onlyCheck a booking made through this door: whether it is requested, confirmed, declined or cancelled, and whether it can still be cancelled here.
Parameters:
reference(required) — string — The booking's `reference`, from book.token(required) — string — The booking's `manage.token`, from book.
Hints: read-only yes · destructive no · idempotent yes · open-world no
cancel_bookingdestructiveCancel a booking made through this door: withdraws a request still waiting. A booking the business has approved must be changed with the business directly (the answer says how). Ask the customer first.
Parameters:
reference(required) — string — The booking's `reference`, from book.token(required) — string — The booking's `manage.token`, from book.
Hints: read-only no · destructive yes · idempotent yes · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.