search_services
Find available pet care services in your location by searching Rover's marketplace to connect with sitters and manage bookings.
Instructions
List all available Rover service types in a given location with descriptions.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | Location to search for available services |
Implementation Reference
- src/index.ts:457-471 (handler)The handler for the 'search_services' tool that validates the location parameter using SearchServicesSchema, calls browser.searchServices(), and formats the response as a text message listing available services.
case "search_services": { const { location } = SearchServicesSchema.parse(args); const services = await browser.searchServices(location); const formatted = services .map((s) => `• **${s.type.replace(/_/g, " ")}**: ${s.description}`) .join("\n"); return { content: [ { type: "text", text: `Available Rover services in ${location}:\n\n${formatted}`, }, ], }; } - src/index.ts:312-314 (schema)Zod validation schema for search_services input, requiring a non-empty location string.
const SearchServicesSchema = z.object({ location: z.string().min(1), }); - src/index.ts:89-103 (registration)Tool registration defining 'search_services' with description and JSON Schema inputSchema specifying a required 'location' string parameter.
{ name: "search_services", description: "List all available Rover service types in a given location with descriptions.", inputSchema: { type: "object", properties: { location: { type: "string", description: "Location to search for available services", }, }, required: ["location"], }, }, - src/browser.ts:313-325 (helper)The searchServices method implementation that navigates to the Rover homepage and returns a hardcoded array of available service types (boarding, house_sitting, drop_in, doggy_day_care, dog_walking) with descriptions.
async searchServices(location: string): Promise<Array<{ type: string; description: string; availableCount: number }>> { const page = this.ensurePage(); await page.goto(`${this.BASE_URL}/`); await page.waitForLoadState("networkidle"); return [ { type: "boarding", description: "Your dog stays at the sitter's home", availableCount: 0 }, { type: "house_sitting", description: "Sitter stays in your home", availableCount: 0 }, { type: "drop_in", description: "Sitter visits your home for 30-60 minutes", availableCount: 0 }, { type: "doggy_day_care", description: "Your dog spends the day at the sitter's home", availableCount: 0 }, { type: "dog_walking", description: "Sitter takes your dog for a walk", availableCount: 0 }, ]; }