place-book
Book camping spots by specifying place ID, dates, and group size (adults & children). Submit details to secure reservations conveniently.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Number of adults. Default is 1. | |
| children | No | Number of children. Default is 0. | |
| endDate | No | The end date of the booking. Format: YYYY-MM-DD | |
| placeId | Yes | The id of the place to book. | |
| startDate | No | The start date of the booking. Format: YYYY-MM-DD |
Implementation Reference
- src/tools/place_book.ts:15-33 (handler)The asynchronous handler function that implements the core logic of the 'place-book' tool. It sends a POST request to the `/place/book` endpoint using the CampertunityClient with the provided parameters and returns the response as JSON or an error message.async ({ placeId, startDate, endDate, adults, children }) => { try { const availability = await campertunityClient.post(`/place/book`, { placeId, startDate, endDate, adults, children, }); return { content: [{ type: 'text', text: JSON.stringify(availability), mimeType: 'application/json' }], }; } catch (error) { return { content: [{ type: 'text', text: 'Error: ' + (error as Error).message }], isError: true, }; } }
- src/tools/place_book.ts:8-14 (schema)Zod schema defining the input parameters for the 'place-book' tool, including placeId (required), optional dates, and defaulted adult/children counts.{ placeId: z.string().describe('The id of the place to book.'), startDate: z.string().optional().describe('The start date of the booking. Format: YYYY-MM-DD'), endDate: z.string().optional().describe('The end date of the booking. Format: YYYY-MM-DD'), adults: z.number().default(1).describe('Number of adults. Default is 1.'), children: z.number().default(0).describe('Number of children. Default is 0.'), },
- src/tools/place_book.ts:6-34 (registration)The server.tool() call within the placeBookTool function that registers the 'place-book' tool, specifying its name, input schema, and handler.server.tool( 'place-book', { placeId: z.string().describe('The id of the place to book.'), startDate: z.string().optional().describe('The start date of the booking. Format: YYYY-MM-DD'), endDate: z.string().optional().describe('The end date of the booking. Format: YYYY-MM-DD'), adults: z.number().default(1).describe('Number of adults. Default is 1.'), children: z.number().default(0).describe('Number of children. Default is 0.'), }, async ({ placeId, startDate, endDate, adults, children }) => { try { const availability = await campertunityClient.post(`/place/book`, { placeId, startDate, endDate, adults, children, }); return { content: [{ type: 'text', text: JSON.stringify(availability), mimeType: 'application/json' }], }; } catch (error) { return { content: [{ type: 'text', text: 'Error: ' + (error as Error).message }], isError: true, }; } } );
- src/index.ts:24-24 (registration)Invocation of the placeBookTool function in the main server setup, which triggers the registration of the 'place-book' tool on the MCP server instance.placeBookTool(server, campertunityClient);